Linux的U盘只读控制方式比较多,各种方式也各有优缺点,具体实现方式如下:
方案1 在mount时控制
在U盘mount时,通过hook sys_mount系统调用,将挂载参数强制改为只读。
优点
实现简单,只要hook一个sys_mount系统调用即可。
缺点
无法针对进程控制,所有进程对U盘都是只读的。
方案2 控制U盘mountpoint的文件读写
这种方式是在U盘已经正常挂载成读写模式之后进行控制,可以通过对U盘挂载点进行文件权限的访问控制,实现U盘的只读控制。
对挂载点的文件访问控制需要hook常用的文件操作系统调用,例如sys_open, sys_write, sys_mkdir等,根据参数中的文件路径判断是否属于U盘挂载点,如果是U盘挂载点下的文件则禁止写入操作。
优点
可以针对进行控制,例如允许某些特权进程可以写入U盘,而其他进程只能读取U盘中的文件。
缺点
实现较为复杂,需要hook一系列的文件读写系统调用实现文件的访问控制。