为什么在现代 Unix 系统中没有为 mkdir 设置 setuid 权限位?

Ani*_*han 3 unix system-calls

巴赫声明如下:

mkdir是一个典型的setuid程序。只有具有有效 UID 根的进程才能创建文件夹。(第 7.6 节,第 229 页)


我在 Ubuntu 12.04 上检查了它的权限,setuid 位没有设置。

-rwxr-xr-x 1 root root 42624 Oct  2 08:55 mkdir
   ^??
Run Code Online (Sandbox Code Playgroud)

然后我检查了其他应该有这个设置的程序,比如pingsu,他们已经设置了。

-rwsr-xr-x 1 root root 34740 Nov  8  2011 ping
   ^---there it is 
Run Code Online (Sandbox Code Playgroud)

那么,它是如何mkdir工作的?自从巴赫写那之后,事情发生了变化吗?

小智 5

mkdir() 调用从 BSD 4.2 开始就存在了。它后来被添加到 SYSV 3.0。请参阅:http : //pubs.opengroup.org/onlinepubs/9699919799/functions/mkdir.html

BSD 4.2 于 1984 年问世:http : //www.unix.org/what_is_unix/history_timeline.html

如果用户模式允许通过系统调用访问 UNIX 中的内核模式入口点,而没有限制,正如 duskwuff 所指示的那样,则不需要 setuid。