重新启动后,我有一个SUID位被忽略的问题。问题很可能在于我对SUID Bit的理解。我需要提升目录中python文件的权限,因为它们执行的功能。这就是我所做的。
sudo find dir -type f -exec chmod u + s {} \;这是在使用pexpect提供密码的python脚本中完成的。但是通过命令行完成时会遇到同样的问题。
如果我然后运行ls -l -h给出以下内容(在重启后完成相同的输出)
-rwsrwxrwx 1 root root。 。 。 filename.py
-rwsrwxrwx 1 root root。 。 。 filename.py〜
-rwSr - r-- 1个用户用户。 。 。 filename.pyc
在会话中设置SUID但是一旦重新启动,SUID位仍然存在但似乎被忽略。现在我想通过chmod设置SUID位意味着用户使用root的提升权限运行程序,并且chmodding通过重新启动是持久的。
我的问题是有没有办法让SUID位在重启后继续存在而不被忽略?
对此的任何帮助都很棒
干杯
答案 0 :(得分:1)
-rwsrwxrwx 1 root root。 。 。 filename.py
真的?即使这是一个严重防火墙的工作站,没有其他人可以进行物理访问,而且你是唯一的物理用户,所以将它放在你的文件系统上是个坏主意。
sudo find dir -type f -exec chmod u + s {} \;
这就是这个。
使用pexpect提供密码
...意味着root密码存储在非root用户可读的明文文件中?
我非常怀疑你的分析。我经常使用setuid程序(虽然不是python脚本 - 我希望behave like any other setuid scripts - 虽然这would not explain为什么他们永远作为setuid工作)并且从未遇到过问题像这样。您认为在重启时会发生什么变化?根据你的帖子,权限没有改变 - 所以如果他们真的已经停止以root身份运行,这意味着其他东西正在跟踪它是否能够以不同的用户身份运行这些脚本 - 并且这样做的方式无法生存重新启动 - 故事越来越不可能。
无论如何解决我提到的所有问题并且可能修复你的方法是删除setuid位并通过sudo调用程序。