从inittab以非root身份执行python脚本
我有一个Python脚本,想通过inittab来启动,下面是相关内容:
s1:respawn:/home/a_user/app/script.py
我认为inittab是以root用户身份执行的,所以a_user的环境变量是不可用的。
这个脚本需要知道"a_user"的主目录,以便进行配置文件设置和日志文件存储。我希望避免在脚本中硬编码这些路径。请问有没有办法以a_user的身份来执行这个脚本,而不是以root身份?如果可以的话,a_user的HOME环境变量会可用吗?
谢谢!
2 个回答
1
你可以把Python的可执行文件复制到一个叫做python-suid的地方,
然后把这个文件的拥有者改成你想要用来运行脚本的用户,接着再设置这个文件的权限为suid。
这样在你的脚本里就可以用#!/usr/bin/python-suid来指定使用这个文件了。
1
使用 runuser
(或者你所用系统的类似命令)可以以不同的用户身份来运行程序。runuser
会改变 $HOME
这个环境变量,但其他类似的命令可能不会这样做。