银河麒麟usb设备只读问题源于根文件系统只读、设备权限不足、fstab挂载选项限制、udev可移动标识误判或selinux策略干扰;需依次执行remount rw、修正设备节点权限与用户组、修改fstab选项、覆盖udev removable标识、临时禁用selinux排查。

如果您在银河麒麟操作系统中插入USB设备后发现其被识别为只读,或挂载后无法写入、提示“Permission denied”“Read-only file system”等错误,则问题极可能源于根文件系统默认只读、挂载选项限制、设备权限配置缺失或udev识别策略偏差。以下是解决此问题的步骤:
一、重新挂载根文件系统为读写模式
救援模式或异常重启后,系统常将根分区(/)以只读方式挂载,导致所有挂载操作(包括USB设备)因无法更新/etc/mtab或写入挂载元数据而失败。该机制是内核级安全防护,并非用户权限缺陷。
1、执行命令检查当前根分区挂载状态:mount | grep "on / "
2、若输出中包含ro,relatime字样,说明根分区确为只读。
3、执行重挂载命令启用读写:mount -o remount,rw /
4、若提示mount: / not mounted or bad option,需先确认根设备路径:awk '$2 == "/" {print $1}' /proc/mounts
5、使用完整设备路径重试(例如输出为/dev/mapper/klas-root):mount -o remount,rw /dev/mapper/klas-root /
二、修正USB设备节点权限与组归属
Linux通过设备文件(如/dev/sdb1、/dev/sr0)控制硬件访问权限。若USB存储设备节点属主为root、组为disk且无组写权限,或未加入cdrom/disk组的用户将无法挂载或写入。
1、插入USB设备后,执行:ls -l /dev/disk/by-id/usb-*定位对应设备节点(如/dev/sdb)
2、查看该设备主分区权限(如/dev/sdb1):ls -l /dev/sdb1
3、若权限显示为brw------- 1 root root,需临时赋予组读写权限:chgrp disk /dev/sdb1 && chmod 660 /dev/sdb1
4、确认当前用户已加入disk组:groups;若无disk,执行:sudo usermod -aG disk $USER
5、重新插拔USB设备,使udev规则生效。
三、修改fstab挂载参数解除执行与写入限制
部分USB设备在/etc/fstab中配置了noexec、nosuid、ro等挂载选项,将整个挂载点强制设为只读或禁止执行,即使设备物理可写也无法写入文件。
1、检查fstab中是否存在对应USB条目:grep -i "usb\|sdb\|sdc" /etc/fstab
2、若存在,用编辑器打开:sudo nano /etc/fstab
3、定位目标行,将挂载选项中的noexec,nosuid,ro全部删除,仅保留defaults或显式添加rw,exec,dev,suid
4、保存退出后,卸载并重新挂载:sudo umount /mnt/usb && sudo mount /mnt/usb
四、覆盖udev设备可移动性标识
某些USB设备(尤其UAS协议SSD移动硬盘)被内核识别为“removable=1”,触发桌面环境或挂载工具启用只读策略。该标识由udev规则固化,需手动覆盖。
1、确认设备是否被标记为可移动:udevadm info --name=/dev/sdb | grep removable
2、若返回E: ID_BUS=usb和E: ID_CDROM=1或ATTR{removable}==1,则需干预
3、创建自定义规则文件:sudo nano /etc/udev/rules.d/99-usb-readonly-fix.rules
4、写入以下内容(将sdb替换为实际设备名):SUBSYSTEM=="block", KERNEL=="sdb", ATTR{removable}="0"
5、重载udev规则并触发更新:sudo udevadm control --reload && sudo udevadm trigger
五、禁用SELinux临时策略干扰
银河麒麟V10默认启用SELinux,其策略可能阻止对USB挂载点的写入操作,尤其当挂载点位于非标准路径(如/home/user/usb)时,会触发avc拒绝日志。
1、检查SELinux当前状态:sestatus
2、若State为enabled且Current mode为enforcing,执行临时切换:sudo setenforce 0
3、立即测试USB写入(如touch /mnt/usb/testfile)
4、若写入成功,说明SELinux为根源,需后续通过audit2why分析日志并生成自定义策略,而非长期禁用。










