Linux 可执行文件是否与运行它的用户具有相同的文件权限?

Linux 可执行文件是否与运行它的用户具有相同的文件权限?,linux,unix,file-permissions,setuid,Linux,Unix,File Permissions,Setuid,在Unix中,如果我运行的二进制文件与文件混在一起,该二进制文件是否具有与我(运行该二进制文件的用户)相同的文件权限?在大多数情况下,答案是肯定的 但是,如果在该二进制文件上启用了setuid,setgid位,则情况并非如此 启用了setuid的二进制文件的经典示例 ls -ltra `which passwd` 如果该命令在执行期间不能授予您(执行该命令的用户)与root用户相同的权限来修改文件,如/etc/password或/etc/shadow 看看: setuid权限 在上设置用户标

在Unix中,如果我运行的二进制文件与文件混在一起,该二进制文件是否具有与我(运行该二进制文件的用户)相同的文件权限?

在大多数情况下,答案是肯定的

但是,如果在该二进制文件上启用了
setuid
setgid
位,则情况并非如此

启用了
setuid
的二进制文件的经典示例

ls -ltra `which passwd`
如果该命令在执行期间不能授予您(执行该命令的用户)与root用户相同的权限来修改文件,如
/etc/password
/etc/shadow

看看:

setuid权限

在上设置用户标识(setuid)权限时 可执行文件,运行此文件的进程被授予基于 文件的所有者(通常是root用户),而不是 运行可执行文件。此特殊权限允许用户 访问通常仅对用户可用的文件和目录 主人

setgid权限

设置组标识(setgid)权限类似于setuid, 除了进程的有效组ID(GID)更改为 文件的组所有者,并且根据 授予该组的权限。/usr/bin/mail命令 setgid权限


如果您想进一步深入了解Linux如何管理进程和子进程,您可能还想看看
fork
exec

实际上,拥有权限的不是二进制文件,而是进程。该进程由用户启动。因此,该进程将继承该用户当前shell的当前权限、设置和环境。无论当前在特定情况下意味着什么。。。