简而言之,用户在执行文件/程序时将获得文件所有者的权限以及所有者 UID 和 GID。它不会更改文件的所有者。
如果您在程序中强加:rwsrwxr-- 或 rwxr--rwx
如果我设置 SUID 权限(所有者)或 World 权限(其他),有什么区别?在这两种情况下用户都可以运行程序吗?
简而言之,用户在执行文件/程序时将获得文件所有者的权限以及所有者 UID 和 GID。它不会更改文件的所有者。
如果您在程序中强加:rwsrwxr-- 或 rwxr--rwx
如果我设置 SUID 权限(所有者)或 World 权限(其他),有什么区别?在这两种情况下用户都可以运行程序吗?
如果您具有rwxr--rwx权限,您将能够以“其他”身份运行该程序,但如果该程序需要访问权限,例如,您没有权限的文件 - 它将失败.
rwsrwxr——一开始甚至不会让你将命令作为“其他”运行
因此,您需要自己的x权限才能启动程序,但如果您希望程序承担其所有者的权限,您还需要 SUID。
顺便说一句,如果您想尝试使用 SUID,请注意在 bash 脚本中默认禁用 SUID(没有任何影响)
用户是否能够运行程序取决于它是否具有可执行权限。是的,设置 suid 位不会改变所有者。
现在提出您的问题,为世界设置 suid 没有任何区别,因为任何用户在运行该程序时都有自己的权限,因此世界的 suid 位没有任何意义,而为所有者设置 suid 位将允许任何用户能够运行它以使用所有者的权限运行。所以总结一下运行程序不依赖于 suid 位,而是依赖于x
(可执行的)perm。
首先,你应该在这个社区问这样的问题。
接下来,根据此文档通过设置suid您将通过 onwer 权限运行文件。
例如passwd
命令将读取和写入具有权限的/etc/shadowrw-r-----
文件,但您可以调用该命令,为什么?隐藏在suid问题中的原因。
因为通过suid位功能_您以所有者文件用户权限而不是其他用户权限运行应用程序