0

我在重启后遇到了一个 SUID 位被忽略的问题。这个问题很可能在于我对 SUID Bit 的理解。由于它们执行的功能,我需要提升目录中 python 文件的权限。这就是我所做的。

sudo find dir -type f -exec chmod u+s {} \; 这是在 python 脚本中使用 pexpect 提供密码来完成的。但是通过命令行完成时我遇到了同样的问题。

如果我然后运行 ​​ls -l -h 给出以下结果(在重新启动后完成时我得到相同的输出)

-rwsrwxrwx 1 根根。. . 文件名.py

-rwsrwxrwx 1 根根。. . 文件名.py~

-rwSr--r-- 1 用户用户。. . 文件名.pyc

在会话中设置 SUID 有效,但是一旦重新启动,SUID 位仍然存在,但似乎被忽略了。现在我认为通过 chmod 设置 SUID 位意味着用户以提升的 root 权限运行程序,并且 chmodding 通过重新启动是持久的。

我的问题是有没有办法让 SUID 位在重新启动后仍然存在而不被忽略?

对此的任何帮助都会很棒

干杯

4

1 回答 1

1

-rwsrwxrwx 1 根根。. . 文件名.py

真的吗?即使这是一个防火墙严密的工作站,没有其他人可以物理访问并且您是唯一的物理用户,将其留在您的文件系统上也是一个非常糟糕的主意。

sudo find dir -type f -exec chmod u+s {} \;

这也是。

使用 pexpect 提供密码

...意味着root密码存储在非root用户可读的明文文件中?

我很怀疑你的分析。我经常使用 setuid 程序(尽管不是 python 脚本——我希望那时的行为与任何其他 setuid 脚本一样——尽管这不能解释为什么它们作为 setuid 工作)并且从未遇到过这样的问题。您认为重新启动时会发生什么变化?根据您的帖子,权限没有更改-因此,如果它们确实已停止以 root 身份运行,这意味着其他东西正在跟踪它是否可以以其他用户身份运行这些脚本-并且以无法生存的方式这样做重新启动 - 故事变得越来越不可能。

无论解决我提到的所有问题并可能解决您的所有问题的方法都是删除 setuid 位并通过 sudo 调用程序。

于 2013-03-12T16:26:59.093 回答