Kor*_*era 34 shutdown security permissions
我在/sbin,我看到shutdown有权限rwxr-xr-x。这不是说任何人都可以执行吗?
ale*_*xis 76
任何人都可以执行shutdown,但触发系统关闭需要 root 权限。但是shutdown不是setuid,所以只有root才能成功执行。该shutdown程序足以检查您的权限并让您知道是否有问题,但即使它天真地尝试关闭系统,也不会发生任何事情。
GLENDOWER:我可以从浩瀚的深处召唤灵魂。
HOTSPUR:为什么,我可以,或者任何人都可以;但是当你打电话给他们时,他们会来吗?
(来自亨利四世)
shutdown与 没有什么不同/bin/rm。每个人都可以执行它,但普通用户不能删除/etc,或其他用户的主目录。
具体来说:只有以 root 权限(有效 UID 0)运行的进程才能指示init 系统停止系统服务,终止所有用户进程,并发出实际停止机器的系统调用。(如果shutdown是 setuid,无论谁调用它,它都会以 root 身份运行;但事实并非如此。)
如何shutdown从 GUI调用,例如使用 control-alt-del?重要的是要意识到,在这种情况下,它shutdown是由直接启动init并以 root 权限运行的。 因此,走到控制台的每个人都可能将其关闭。如果这是不可取的, control-alt-delete 将实际运行shutdown -a。(请参阅@some1 在他们的回答中引用的文档)。这告诉shutdown检查当前登录的用户是否有权运行它。但这只是相关的,因为shutdown在这种情况下以 root 身份运行。
cha*_*aos 15
二进制文件shutdown本身会检查您的 UID 是否为 0。
查看以下的 strace 输出:
strace /sbin/shutdown -r -h now
...
...
geteuid() = 10001
setuid(10001) = 0
getuid() = 10001
write(2, "shutdown: Need to be root\n", 26shutdown: Need to be root
) = 26
exit_group(1) = ?
Run Code Online (Sandbox Code Playgroud)
是的 !每个人都可以运行该命令。正如您所说,您可以运行它,但您面临的是“需要成为 root”消息,而不是permission denied. 该shutdown命令会检查您UID是否是 root 用户。
| 归档时间: |
|
| 查看次数: |
4207 次 |
| 最近记录: |