Linux / Python如何将root访问py模块作为非r​​oot用户导入?

时间:2015-12-10 20:39:27

标签: python linux permissions chmod setuid

我正在尝试将通常写在py文件中的密码与脚本分开,并使其只有在脚本需要时才能通过root和python访问这些密码。我明白了这个想法: https://stackoverflow.com/a/158248/3892678

为此,我试图隐藏在a_script另一个passwords py文件中使用的密码。 passwords只能由root:root读取,写入和执行(-rwxrwx---)。作为另一个用户tomato,我想运行a_script,它会从passwords导入密码以在文件中使用。为了使该用户能够以root身份运行该文件,我使用setuid提升了文件setgidchmod 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用户和需要它的程序才能访问它吗?

1 个答案:

答案 0 :(得分:0)

怎么回合

os.popen("echo ROOT_PASSWORD | sudo -s -p '' cat /path/to/secure/file.txt").read()

(注意最好使用子进程模块......但需要更多输入)