由于某些原因,我需要/root/.ssh/authorized_keys
与无权阅读的用户一起阅读。显然,我不能更改文件的权限(也不能更改 ACL),因为 ssh 不喜欢它。
我使用 Python 访问该文件:
try:
with open("/root/.ssh/authorized_keys",'r') as f:
foo()
except EnvironmentError:
print 'Bad permissions and/or file not existing'
python 脚本将由具有sudo
. 我必须在sudoers
文件中添加哪些最小权限才能允许脚本读取文件?
Sudo 用于执行而不是读取文件。如果有人使用 sudo 运行该 python 脚本,则整个脚本将具有 root 权限,并且读取文件没有问题。但它也没有问题添加密钥,或更改 root 密码,或者只是执行 rm -rf /*。
如果您只想使用 sudo 授予对特定文件的读取访问权限,最好的方法是授予用户 sudo 权限以将该文件打印到标准输出。
例如,您可以编写一个脚本,它只对文件进行分类。把这个放在
/usr/bin/get_root_authkeys.sh
:(确保该文件是可执行的,但用户不可写)。
然后把它放在 sudo 中:
一个稍微简单的解决方案:您可以为他们授予 cat 命令的 sudo 权限,例如
从那里开始,您无需执行 fopen,而是执行该 sudo 命令(例如
sudo /usr/bin/get_root_authkeys.sh
orsudo cat /root/.ssh/authorized_keys
)并读取其输出。试试这个
/etc/sudoers
: