如何在不使用su或sudo的情况下以root特权运行程序


Answers:


9

如果它不是bash脚本而是常规应用程序,则应将其所有权授予root用户并在应用程序上设置setuid位。然后,在执行时,应用程序在其下运行的有效用户是root。但是出于安全考虑,在许多系统中,shell脚本均禁止这样做。unix.stackexchange.com上的此问题确实解决了克服此问题的方法。


很好,我只是发布了一个链接。赫曼特的答案是一个很好的解决方案
迈克尔·莫罗泽克

Ruby是否可以算作Shell脚本?
Stefan 2010年

1
@Stefan是的,任何通过解释器运行的都可以,因为不是脚本本身运行,而是ruby解释器,而不是setuid。您需要一个实际的二进制文件才能使用setuid
Michael Mrozek

2
我希望我可以对此表示否决,但不幸的是,我缺乏25点信誉度。让普通用户以root用户身份运行bash脚本是一个非常糟糕的主意,除非您确切地知道自己在做什么(并且如果必须询问如何做,那么就不会)。如果OP在这里发布他的脚本,我可能至少会找到3种利用它的方法。几乎所有的发行版都很难做到这一点。

Unix的主要原则之一是:“给用户任何机会用脚射击自己:”)
fschmitt 2010年

1

使用sudo。如果您不想打电话sudo /path/to/myscript,写一个单行包装器exec sudo /path/to/myscript "$@"。请参阅在shell脚本上允许setuid,特别是Maciej Piechotka关于使用sudo的答案以及我对setuid程序的更一般的讨论


整个想法是不必使用sudo
Alexej Magura

@AlexejMagura Sudo是最简单的解决方案。没有sudo很难做到这一点(除非您愿意为不安全的解决方案做好准备,在这种情况下,您不妨为所有人提供root密码)。
吉尔(Gilles)'所以
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.