先检查dmesg日志捕获kysec拒绝写入事件,再查ausearch审计日志确认devctl拦截详情,接着检索syslog中挂载参数是否含ro,然后用udevadm监控设备事件流识别只读策略注入点,最后通过sosreport整合全量日志交叉分析。

如果您在麒麟操作系统中插入U盘后发现文件无法写入、复制失败或系统提示“只读文件系统”,则可能是U盘被安全策略限制、文件系统损坏或内核日志中已记录相关拒绝行为。以下是查看外接U盘读写操作日志与安全监控痕迹的具体操作步骤:
一、通过dmesg实时捕获U盘插拔及IO拒绝事件
该方法可直接获取内核层对U盘的识别、挂载、读写拦截等底层动作,尤其适用于捕获KYSEC安全模块主动拒绝写入的瞬间日志。
1、打开终端,执行:sudo dmesg -w,保持窗口运行。
2、插入U盘,等待3秒后,在另一终端窗口执行:echo "test" > /media/xxx/test.txt(将xxx替换为实际挂载路径)触发写入尝试。
3、观察第一个终端中是否出现含KYSEC devctl rejected、usb-storage write denied或readonly mount字样的日志行。
4、若未触发实时日志,可回溯最近30条USB相关记录:sudo dmesg | tail -30 | grep -iE "usb|sd|devctl|readonly"。
二、检查KYSEC安全审计日志中的设备管控记录
KYSEC是银河麒麟内置的安全管控模块,其设备访问控制(devctl)策略会将所有U盘读写请求的放行或拒绝行为写入专用审计日志,该日志具备完整时间戳与设备指纹。
1、执行命令查看当日KYSEC设备策略审计事件:sudo ausearch -m avc -ts today | grep -i "usb\|stor\|devctl"。
2、若需定位某次具体写入失败事件,结合时间点过滤(例如14:22分):sudo ausearch -m avc -ts 14:22:00 -te 14:22:30。
3、解析关键字段:输出中comm="bash"表示发起进程,name="/dev/sdb1"为设备节点,avc: denied { write }即明确标识写入被拒。
4、确认devctl当前开关状态:sudo getstatus | grep devctl;若返回devctl:on,表明设备管控功能处于启用状态。
三、检索系统日志中U盘挂载与权限变更记录
系统日志(syslog/kern.log)会记录udev规则触发的挂载行为、文件系统挂载参数(如ro/readonly)、以及udisks2服务对读写权限的动态调整过程。
1、搜索最近24小时内所有含U盘挂载关键词的日志:sudo grep -iE "mount.*usb|/media/|ro,|readonly" /var/log/syslog | tail -20。
2、若使用systemd日志系统,执行:sudo journalctl --since "24 hours ago" | grep -iE "udisks|mount|usb.*storage"。
3、重点识别挂载行中是否包含ro(只读)或noexec,nosuid,nodev等限制性选项;若出现options: ro,relatime,fmask=0022,dmask=0022,说明系统强制以只读方式挂载。
4、检查是否存在因文件系统错误导致自动降级为只读:sudo dmesg | grep -i "remount.*ro"。
四、使用udevadm监控U盘设备事件流
udevadm monitor可捕获内核uevents与udev规则执行全过程,包括设备添加、权限设置、挂载前准备等阶段,适用于追踪读写权限在哪个环节被注入限制策略。
1、启动设备事件监听:sudo udevadm monitor --subsystem-match=block --property。
2、在新终端中插入U盘,并立即执行一次写操作(如touch /media/xxx/t)。
3、观察监听窗口中是否出现含ID_BUS=usb和UDISKS_MOUNT_OPTIONS=ro的属性行。
4、若发现该属性,说明udev规则或udisks2配置已硬编码只读挂载;进一步检查规则文件:ls /etc/udev/rules.d/*usb* /usr/lib/udev/rules.d/*udisks*。
五、分析sosreport诊断包中的U盘上下文全量日志
sosreport工具会打包采集包括dmesg、journal、udev、KYSEC审计、挂载状态在内的全部关联日志,适合用于离线复现与深度交叉比对。
1、安装并生成诊断报告:sudo apt-get install -y sosreport && sudo sosreport -a。
2、报告生成后,进入输出目录(如/tmp/sosreport-xxx),解压并进入:tar -xf sosreport-*.tar.xz && cd sosreport-*/。
3、快速定位U盘读写线索:grep -r -i "readonly\|devctl\|write.denied\|sd[b-z]" ./ | head -15。
4、重点查阅以下子文件:./sos_commands/kernel/dmesg、./sos_commands/audit/ausearch_-m_avc_-ts_today、./sos_commands/udev/udevadm_info_--export_db。











