简单来说,用户在执行文件/程序时将获得文件所有者的权限以及所有者UID和GID。它不会更改文件的所有者。
如果你强加给一个程序: rwsrwxr--或rwxr - rwx
如果我设置了SUID权限(对于所有者)或世界权限(其他),有什么区别? 在这两种情况下,用户都可以运行该程序吗?
答案 0 :(得分:1)
如果您拥有 rwxr - rwx 权限,则将能够将该程序作为"其他"运行,但万一此程序需要例如,访问您未获得权限的文件的权限 - 它将失败。
rwsrwxr - 甚至不允许您按照"其他"首先是
因此,您需要自己的 x 权限才能启动程序,但如果您希望程序拥有其所有者的权限,则还需要SUID。
顺便说一句,如果你想试验SUID,请注意默认情况下bash脚本上的SUID被禁用(没有任何效果)
答案 1 :(得分:0)
用户是否能够运行程序取决于它是否具有可执行权限。是设置suid位不会改变所有者。
现在提出你的问题,为世界设置suid没有任何区别,因为任何用户在运行该程序时都有自己的权限,因此为所有者设置suid位时没有任何意义的suid位将允许任何用户能够运行它以使用所有者的权限运行。总而言之,运行程序不依赖于suid位,而是依赖于x
(可执行)perm。
答案 2 :(得分:0)
首先,您应该在this community中提出这样的问题。
接下来,according to this doc通过设置 suid ,您将按照onwer权限运行文件。
例如passwd
命令将读取和写入具有rw-r-----
权限的 / etc / shadow 文件,但您可以调用该命令,为什么?隐藏在suid问题中的原因。
因为通过 suid 位功能_您运行app作为所有者文件用户权限而不是其他用户权限