RPM%作为其他用户发布

时间:2014-05-14 11:18:03

标签: bash rpm

我需要在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'])

有没有正确的方法呢?

2 个答案:

答案 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"