Permissions 为什么';在OpenBSD中设置SUID位是否有效并将UID保存到可执行文件所有者?

Permissions 为什么';在OpenBSD中设置SUID位是否有效并将UID保存到可执行文件所有者?,permissions,user-permissions,setuid,openbsd,suid,Permissions,User Permissions,Setuid,Openbsd,Suid,我正在使用全新安装的OpenBSD 5.3作为Mac Parallels上的来宾操作系统: $ uname -a OpenBSD openbsd.localdomain 5.3 GENERIC#53 amd64 令我惊讶的是,root拥有的一个二进制文件及其SUID位集使用uid运行,就好像没有设置SUID一样。也就是说,当UID 1000运行这样一个程序时,该程序以以下状态启动: <real_uid, effective_uid, saved_uid> = <1000,

我正在使用全新安装的OpenBSD 5.3作为Mac Parallels上的来宾操作系统:

$ uname -a
OpenBSD openbsd.localdomain 5.3 GENERIC#53 amd64
令我惊讶的是,root拥有的一个二进制文件及其SUID位集使用uid运行,就好像没有设置SUID一样。也就是说,当UID 1000运行这样一个程序时,该程序以以下状态启动:

 <real_uid, effective_uid, saved_uid> = <1000, 1000, 1000>
 <real_uid, effective_uid, saved_uid> = <1000, 0, 0>
请注意,上面的一些pid是setuid_min.bin进程的pid。程序通过报告以下shell命令的输出来报告真实UID、有效UID和保存的UID:

ps -ao ruid,uid,svuid,pid | grep '[ ]my_pid$'

其中my_pid是getpid()报告的pid。关于为什么会出现这种情况,我唯一的猜测是OpenBSD有一些底层权限结构,它使用setuid_min.bin所在目录的所有权/权限,或者,当非特权用户使用sudo更改文件权限时,这实际上并没有更改所有权/SUID位。

您的二进制文件很可能位于挂载“nosuid”的默认分区之一。安装脚本创建的默认fstab将装载所有nosuid,除非已知它包含suid二进制文件

ps -ao ruid,uid,svuid,pid | grep '[ ]my_pid$'