使用参数作为sudo运行脚本而不要求输入密码
我有两个Java程序,我从bash脚本调用:
java program1 arg ... arg sudo java program2 arg ... arg
我想在没有被要求输入密码的情况下将program2作为sudo运行。 我知道sudoers文件,但我不知道如何配置它来运行java程序作为sudo而不被要求输入密码。 有什么想法吗?
在sudoers文件中使用通配符
在sudoers
文件中,您可以使用通配符(*),从而创建使用参数运行脚本的可能性。
一个例子
我用一个令人震惊的简单python脚本测试它。 在sudoers
文件中,我不得不在sudoers
文件的行中使用python
: /usr/bin/python
的绝对路径:
jacob ALL=NOPASSWD: /usr/bin/python /home/jacob/Bureaublad/pscript_1.py*
然后我的(python脚本)代码是:
#!/usr/bin/python import sys s1 = sys.argv[1] s2 = sys.argv[2] print(s1) print(s2)
然后我跑进了一个终端:
~$ sudo python '/home/jacob/Bureaublad/pscript_1.py' monkey banana monkey banana
没有要求我的密码。
同样,您应该能够通过将以下行添加到sudoers
文件来实现您想要的:
ALL=NOPASSWD: /path/to/java *
并运行脚本:
sudo java
并且不会要求您输入密码。
更多信息
关于如何使用sudoers
文件的一个有趣的来源可能就是这个 。