【发布时间】:2018-11-07 14:05:34
【问题描述】:
在 Unix 中,如果我运行一个包含文件的二进制文件,该二进制文件是否与我(运行该二进制文件的用户)具有相同的文件权限?
【问题讨论】:
-
其实不是二进制有权限,而是进程。该过程由用户启动。因此,该进程继承了该用户当前 shell 的 当前 权限、设置和环境。无论当前在特定情况下意味着什么......
标签: linux unix file-permissions setuid
在 Unix 中,如果我运行一个包含文件的二进制文件,该二进制文件是否与我(运行该二进制文件的用户)具有相同的文件权限?
【问题讨论】:
标签: linux unix file-permissions setuid
在大多数情况下,答案是肯定的!
但是,如果您在该二进制文件上启用了setuid、setgid 位,则情况并非如此。
启用setuid 的经典二进制示例。
ls -ltra `which passwd`
如果该命令在执行期间无法授予您(执行该命令的用户)与 root 相同的权限以修改 /etc/password 或 /etc/shadow 等文件,该命令将无法工作
看看:
https://docs.oracle.com/cd/E19683-01/816-4883/secfile-69/index.html
setuid 权限
当设置用户标识 (setuid) 权限设置在 可执行文件,运行此文件的进程被授予基于访问权限 在文件的所有者(通常是 root)上,而不是在文件的所有者上 运行可执行文件。此特殊权限允许用户 访问通常只有 所有者。
setgid 权限
set-group标识(setgid)权限类似于setuid, 除了进程的有效组 ID (GID) 更改为 文件的组所有者,并且用户被授予访问权限 授予该组的权限。 /usr/bin/mail 命令有 设置gid权限
如果您想进一步了解 Linux 如何管理进程和子进程,您可能还想看看 fork 和 exec。
【讨论】: