我需要在RPM的%post部分中以不同的用户身份运行命令。
目前我正在通过python使用一些黑客,但它不是最好的方式(感觉有点脏)...
%post -p /usr/bin/python
import os, pwd, subprocess
os.setuid(pwd.getpwnam('apache')[2])
subprocess.call(['/usr/bin/something', 'an arg'])
有没有正确的方法呢?
答案 0 :(得分:2)
如果您正在安装/usr/bin/something
作为软件包的一部分,请使用
attr(4755, apache, apache) /usr/bin/something
如果像这样安装,/usr/bin/something
将始终以用户apache
运行,无论用户实际运行它。
答案 1 :(得分:0)
此处接受的答案是错误的IMO。设置属性以允许任何人以所有者身份执行某些操作的情况很少。
如果您要以特定用户身份运行某些程序,而该用户没有设置外壳程序,则可以使用su -s
来设置要使用的外壳程序。
例如:su -s /bin/bash apache -c "/usr/bin/something an arg"