【发布时间】:2011-07-28 06:05:31
【问题描述】:
似乎我在理解 SUID 位的语义方面有些困难,也许有人可以帮我澄清一下情况。
我对SUID位语义的理解如下: 当我用文件设置 SUID 位时,文件将作为文件的所有者而不是文件的调用者执行。因此,为了测试这种行为,我编写了以下 python 脚本:
#!/usr/bin/python3 -O
import os
def main():
print('Real UserID: %d' % os.getuid())
print('Effective UserID: %d' % os.geteuid())
if __name__ == '__main__':
main()
之后,我用相应的组“testuser”创建了一个名为“testuser”的用户,并调整了文件权限(chown testuser 文件、chgrp testuser 文件、chmod u+s、g+x 文件)。接下来,我将我的主用户添加到“testuser”组,以便我可以作为该组的成员执行该文件。毕竟文件权限是这样的:
-rwsr-xr-- 1 testuser testuser 168 2011-04-02 13:35 procred.py*
所以当我以 testuser 身份登录时,脚本会产生输出:
Real UserID: 1001
Effective UserID: 1001
...当我以主用户身份运行脚本时,脚本输出:
Real UserID: 1000
Effective UserID: 1000
现在据我了解,该脚本应该在后面的执行中以具有 uid 1001(文件所有者)的用户身份运行。我是不是把整个概念都弄错了,还是我的错误在哪里?
【问题讨论】:
标签: python permissions semantics suid