在 FreeBSD 12.0-RELEASE-p3 上ls -l /dev/ada1
给我:
crw-r----- 1 root operator [skipped] /dev/ada1
gpart recover /dev/ada1
如果我从非 root 用户帐户使用该命令,则该组中的人员operator
(以及wheel
,gpart做恢复。它确实写入磁盘。
但为什么非 root 用户不仅仅拥有磁盘的读取权限呢?该组operator
只有读取权限/dev/ada1
!
sudoers 文件仅包含:
% grep -v '^#' /usr/local/etc/sudoers | grep -v '^$'
root ALL=(ALL) ALL
答案1
该gpart(1)
程序不会向 写入任何内容/dev/ada1
。
GEOM_CTL
它通过在 上发出 ioctl 来完成所有操作/dev/geom.ctl
。为了ioctl(2)
在设备文件上使用,您不需要对其具有写权限;您只需要能够以只读模式打开()它。并且该operator
组具有 的读取权限/dev/geom.ctl
。