Linux下对写保护的u盘操作问题

zhwang_1999 2008-01-12 10:01:52
我在Linux下挂使用U盘,U盘带有写保护功能键,我设定为写保护状态。发现一个问题,具体如下:
1. mount U盘,调用mount
unsigned long ulMountFlag = MS_NOEXEC|MS_SYNCHRONOUS;
int nRet = mount(psName, "/mnt/", "vfat", ulMountFlag, NULL);
成功,nRet == 0;
2. FILE *pFile;
pFile = fopen("/mnt/abcd.txt", "a+");
也成功
问题是,我的U盘中并没有abcd.txt文件,U盘处于写保护状态,是不能创建文件的。
3.char psContent[] = "abcdABCD";
nRet = fwrite(psContent, strlen(psContent), 1, pFile);
返回nRet == 1,也成功。

4. 我调用nRet = fsync(fileno(pFile)),同步,返回也是0,成功。

通过调试发现,在上面的过程中,错误码也没有发生什么变化。

但是问题是,实际上是无法将内容写入U盘的,因为U盘处于写保护状态。

请问这样的现象原因在哪里?我如何判断U盘处于写保护状态(当然不是通过眼睛看:)),谢谢。
...全文
961 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
henryfour 2008-01-13
  • 打赏
  • 举报
回复
学习
zhwang_1999 2008-01-13
  • 打赏
  • 举报
回复
谢谢!非常感谢您的帮助!给我指点了方向。
由于我对Linux的了解还很比较肤浅,看样子我将要查阅一些资料了。
如果您能够给与更加具体的帮助的话,或者建议相关资料,我将感激不禁:)
谢谢您的帮助,新的一周愉快!
zhwang_1999 2008-01-12
  • 打赏
  • 举报
回复
呵呵,难道没有可以指教一二,谢谢。
cceczjxy 2008-01-12
  • 打赏
  • 举报
回复
系统检查usb设备时,并没法确定设备是写保护的,只能判断设备是否可读,可写.
启用写保护,对系统来说,就是不可写.
cceczjxy 2008-01-12
  • 打赏
  • 举报
回复
u盘写保护,是硬件上低层的,而你写文件是针对vfs来做的.
硬件上低层的状态,你要反映到高层vfs上来,就是要通过挂载设备前对设备的判断,来设置对应的高层vfs的状态的.



zhwang_1999 2008-01-12
  • 打赏
  • 举报
回复
谢谢。
但是我想描述的是这样一个问题:
我并不知道我的U盘被写保护,我只是想往U盘中写入文件。有没有什么办法判断U盘是处于写保护状态,从而判断此时不能往U盘写入数据,或者返回出错信息。
cceczjxy 2008-01-12
  • 打赏
  • 举报
回复
对于写保护的u盘,设备的属性应该是只读的吧,你挂载时设置只读属性MS_RDONLY应该就可以了
Ventoy 是一款短小精悍优秀开源的新型多重u盘启动盘制作工具,有了Ventoy大家就无需反复地格式化U盘,只需要把ISO文件拷贝到U盘里面无需其它任何操作就可以启动了,无需参考ventoy使用教程大家可以一次性拷贝很多个诸如微PE、老毛桃、大白菜等不同类型的ISO文件,在启动时Ventoy会显示一个菜单来选择,无差异支持Legacy BIOS和UEFI模式。目前已经测试了各类超过742个ISO文件 ventoy启动盘制作工具全面兼容包括Windows 7、Windows 8、Windows 8.1、Windows 10、Windows 11、Windows Server 2012、Windows Server 2012 R2、Windows Server 2016、Windows Server 2019、Windows Server 2022、Debian、Ubuntu、CentOS、RHEL、Deepin、Fedora、Rocky Linux、SLES、openSUSE、MX Linux、Manjaro、Linux Mint、Endless OS、DragonFly FreeBSD、pfSense GhostBSD、FydeOS、CloudReady、VMware ESXi、Citrix XenServer、Xen XCP-ng在内的所有主流系统 需要提醒大家注意点是krd.iso在 UEFI模式下是默认开启签名校验的,而Ventoy启动盘在启动时会做一些hook的动作,这些hook动作可能会被签名校验阻止,所以在UEFI模式下,大家需要在启动到卡巴斯基的启动菜单界面以后,按c进入命令行,执行“set check_signatures=no”命令,然后再按“ESC”键返回,然后继续启动即可。 Ventoy(多重u盘启动盘制作工具)特色功能简介: 100% 开源 (许可证) 使用简单 (使用说明) 快速 (拷贝文件有多快就有多快) 可以安装在 U盘/本地硬盘/SSD/NVMe/SD卡等设备上 直接从 ISO/WIM/IMG/VHD(x)/EFI 文件启动,无需解开 ISO/WIM/IMG/VHD(x)/EFI 文件在磁盘上无需连续 支持MBR和GPT分区格式 同时支持 x86 Legacy BIOS 以及 IA32/x86_64/ARM64/MIPS64 UEFI UEFI 模式支持安全启动 (Secure Boot) 说明 支持数据持久化 说明 支持Windows系统的自动安装部署 说明 支持 RHEL7/8/CentOS7/8/SUSE/Ubuntu Server/Debian 等Linux系统的自动安装部署 说明 镜像分区支持 FAT32/exFAT/NTFS/UDF/XFS/Ext2(3)(4) 文件系统 支持超过4GB的ISO文件 保留ISO原始的启动菜单风格(Legacy & UEFI) 支持大部分常见操作系统, 已测试740+ 个ISO文件 不仅仅是启动,而是完整的安装过程 菜单可以在列表模式和目录树模式之间实时、动态切换 说明 提出 "Ventoy Compatible" 概念 支持插件扩展 Linux vDisk(vhd/vdi/raw...) 启动解决方案 支持向运行环境中插入文件 动态替换ISO文件中的原始启动配置文件 高度可定制化的主题风格和菜单 启动过程中支持U盘设置保护 不影响U盘日常普通使用 版本升级时数据不会丢失 无需跟随操作系统升级而升级Ventoy
Ventoy是一个制作可启动U盘的开源工具。 有了Ventoy你就无需反复地格式化U盘,你只需要把 ISO/WIM/IMG/VHD(x)/EFI 等类型的文件拷贝到U盘里面就可以启动了,无需其他操作。 你可以一次性拷贝很多个不同类型的镜像文件,Ventoy 会在启动时显示一个菜单来供你进行选择。 Ventoy 安装之后,同一个U盘可以同时支持 x86 Legacy BIOS、IA32 UEFI、x86_64 UEFI、ARM64 UEFI 和 MIPS64EL UEFI 模式。 Ventoy 支持大部分常见类型的操作系统 (Windows/WinPE/Linux/ChromeOS/Unix/VMware/Xen ...)。 使用说明:https://www.ventoy.net/cn/doc_start.html Ventoy 特点 100% 开源,使用简单,快速 (拷贝文件有多快就有多快),可以安装在 U盘/本地硬盘/SSD/NVMe/SD卡等设备上,直接从 ISO/WIM/IMG/VHD(x)/EFI 文件启动,无需解开ISO/WIM/IMG/VHD(x)/EFI 文件在磁盘上无需连续,支持MBR和GPT分区格式,同时支持 x86 Legacy BIOS 以及 IA32/x86_64/ARM64/MIPS64 UEFI,UEFI 模式支持安全启动 (Secure Boot),支持数据持久化,支持Windows系统的自动安装部署,支持 RHEL7/8/CentOS7/8/SUSE/Ubuntu Server/Debian 等Linux系统的自动安装部署,镜像分区支持 FAT32/exFAT/NTFS/UDF/XFS/Ext2(3)(4) 文件系统,支持超过4GB的ISO文件,保留ISO原始的启动菜单风格(Legacy & UEFI),支持大部分常见操作系统, 已测试730+ 个ISO文件,不仅仅是启动,而是完整的安装过程,菜单可以在列表模式和目录树模式之间实时、动态切换,提出 "Ventoy Compatible" 概念,支持插件扩展,Linux vDisk(vhd/vdi/raw...) 启动解决方案,支持向运行环境中插入文件,动态替换ISO文件中的原始启动配置文件,高度可定制化的主题风格和菜单,启动过程中支持U盘设置保护,不影响U盘日常普通使用,版本升级时数据不会丢失,无需跟随操作系统升级而升级Ventoy。
Ventoy是一个制作可启动U盘的开源工具。 有了Ventoy你就无需反复地格式化U盘,你只需要把 ISO/WIM/IMG/VHD(x)/EFI 等类型的文件拷贝到U盘里面就可以启动了,无需其他操作。 你可以一次性拷贝很多个不同类型的镜像文件,Ventoy 会在启动时显示一个菜单来供你进行选择。 Ventoy 安装之后,同一个U盘可以同时支持 x86 Legacy BIOS、IA32 UEFI、x86_64 UEFI、ARM64 UEFI 和 MIPS64EL UEFI 模式。 Ventoy 支持大部分常见类型的操作系统 (Windows/WinPE/Linux/ChromeOS/Unix/VMware/Xen ...)。 使用说明:https://www.ventoy.net/cn/doc_start.html Ventoy 特点 100% 开源,使用简单,快速 (拷贝文件有多快就有多快),可以安装在 U盘/本地硬盘/SSD/NVMe/SD卡等设备上,直接从 ISO/WIM/IMG/VHD(x)/EFI 文件启动,无需解开ISO/WIM/IMG/VHD(x)/EFI 文件在磁盘上无需连续,支持MBR和GPT分区格式,同时支持 x86 Legacy BIOS 以及 IA32/x86_64/ARM64/MIPS64 UEFI,UEFI 模式支持安全启动 (Secure Boot),支持数据持久化,支持Windows系统的自动安装部署,支持 RHEL7/8/CentOS7/8/SUSE/Ubuntu Server/Debian 等Linux系统的自动安装部署,镜像分区支持 FAT32/exFAT/NTFS/UDF/XFS/Ext2(3)(4) 文件系统,支持超过4GB的ISO文件,保留ISO原始的启动菜单风格(Legacy & UEFI),支持大部分常见操作系统, 已测试730+ 个ISO文件,不仅仅是启动,而是完整的安装过程,菜单可以在列表模式和目录树模式之间实时、动态切换,提出 "Ventoy Compatible" 概念,支持插件扩展,Linux vDisk(vhd/vdi/raw...) 启动解决方案,支持向运行环境中插入文件,动态替换ISO文件中的原始启动配置文件,高度可定制化的主题风格和菜单,启动过程中支持U盘设置保护,不影响U盘日常普通使用,版本升级时数据不会丢失,无需跟随操作系统升级而升级Ventoy。
Ventoy是一个制作可启动U盘的开源工具。 有了Ventoy你就无需反复地格式化U盘,你只需要把 ISO/WIM/IMG/VHD(x)/EFI 等类型的文件拷贝到U盘里面就可以启动了,无需其他操作。 你可以一次性拷贝很多个不同类型的镜像文件,Ventoy 会在启动时显示一个菜单来供你进行选择。 Ventoy 安装之后,同一个U盘可以同时支持 x86 Legacy BIOS、IA32 UEFI、x86_64 UEFI、ARM64 UEFI 和 MIPS64EL UEFI 模式。 Ventoy 支持大部分常见类型的操作系统 (Windows/WinPE/Linux/ChromeOS/Unix/VMware/Xen ...)。 使用说明:https://www.ventoy.net/cn/doc_start.html Ventoy 特点 100% 开源,使用简单,快速 (拷贝文件有多快就有多快),可以安装在 U盘/本地硬盘/SSD/NVMe/SD卡等设备上,直接从 ISO/WIM/IMG/VHD(x)/EFI 文件启动,无需解开ISO/WIM/IMG/VHD(x)/EFI 文件在磁盘上无需连续,支持MBR和GPT分区格式,同时支持 x86 Legacy BIOS 以及 IA32/x86_64/ARM64/MIPS64 UEFI,UEFI 模式支持安全启动 (Secure Boot),支持数据持久化,支持Windows系统的自动安装部署,支持 RHEL7/8/CentOS7/8/SUSE/Ubuntu Server/Debian 等Linux系统的自动安装部署,镜像分区支持 FAT32/exFAT/NTFS/UDF/XFS/Ext2(3)(4) 文件系统,支持超过4GB的ISO文件,保留ISO原始的启动菜单风格(Legacy & UEFI),支持大部分常见操作系统, 已测试730+ 个ISO文件,不仅仅是启动,而是完整的安装过程,菜单可以在列表模式和目录树模式之间实时、动态切换,提出 "Ventoy Compatible" 概念,支持插件扩展,Linux vDisk(vhd/vdi/raw...) 启动解决方案,支持向运行环境中插入文件,动态替换ISO文件中的原始启动配置文件,高度可定制化的主题风格和菜单,启动过程中支持U盘设置保护,不影响U盘日常普通使用,版本升级时数据不会丢失,无需跟随操作系统升级而升级Ventoy。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧