Linux 重新启动时忽略SUID位

Linux 重新启动时忽略SUID位,linux,file-permissions,Linux,File Permissions,我有一个问题,在重新启动后SUID位被忽略。问题很可能在于我对SUID Bit的理解。我需要提升目录中python文件的权限,因为它们执行的功能。这就是我所做的 sudo find dir-type f-exec chmod u+s{};这是在python脚本中完成的,使用pexpect提供密码。但是当通过命令行执行时,我会遇到同样的问题 如果我然后运行ls-l-h,则会给出以下结果(当重启后执行此操作时,我会得到相同的输出) -rwsrwxrwx 1根目录。filename.py -rwsrw

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

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

如果我然后运行ls-l-h,则会给出以下结果(当重启后执行此操作时,我会得到相同的输出)

-rwsrwxrwx 1根目录。filename.py

-rwsrwxrwx 1根目录。filename.py~

-rwSr--r--1个用户。filename.pyc

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

我的问题是,有没有一种方法可以让SUID位在重启后存活下来而不被忽略

这方面的任何帮助都会很好

干杯

-rwsrwxrwx 1根目录。filename.py

真的吗?即使这是一个防火墙很强的工作站,其他人没有物理访问权限,而您是唯一的物理用户,将其留在您的文件系统上也是一个非常糟糕的主意

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

这也是

使用pexpect提供密码

…意味着根密码存储在非根用户可读的明文文件中

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


不管怎样,解决我提到的所有问题的方法,也可能解决您的问题的方法是删除setuid位并通过sudo调用程序

使用pexpect,用户输入密码,该密码立即用于执行sudo命令,然后丢弃。使用SUID的目的是避免每次需要执行某些功能时都必须让用户输入sudo密码。然而,你可能是对的,应该寻找另一条路线。Cheers
是为了避免用户输入sudo密码
——这就是sudo的NOPASSWD配置选项的用途-