我正在尝试将通常写在py文件中的密码与脚本分开,并使其只有在脚本需要时才能通过root和python访问这些密码。我明白了这个想法: https://stackoverflow.com/a/158248/3892678
为此,我试图隐藏在a_script
另一个passwords
py文件中使用的密码。 passwords
只能由root:root读取,写入和执行(-rwxrwx---
)。作为另一个用户tomato
,我想运行a_script
,它会从passwords
导入密码以在文件中使用。为了使该用户能够以root身份运行该文件,我使用setuid
提升了文件setgid
和chmod 6777 a_script.py
,以便该文件具有-rwsrwsrwx
权限。现在,作为用户tomato
,我运行了python a_script.py
,但我回来了ImportError: No module named passwords
。我认为将uid和groupid设置为s将以root身份运行该文件,该文件应具有读取passwords
的权限。我做错了什么?
这是a_script.py
import os
print "uid: %s" % os.getuid()
print "euid: %s" % os.getgid()
print "gid: %s" % os.geteuid()
print "egid: %s" % os.getegid()
from passwords import MYPASS
print MYPASS
我获得ImportError
之前的所有打印语句都是1001
tomato
。谢谢你的帮助。可能有更好的方法将密码“隐藏”在另一个文件中,以便只有root用户和需要它的程序才能访问它吗?
答案 0 :(得分:0)
怎么回合
os.popen("echo ROOT_PASSWORD | sudo -s -p '' cat /path/to/secure/file.txt").read()
(注意最好使用子进程模块......但需要更多输入)