检查非根用户是否可以访问路径
我有一个用Python写的安装脚本(在Linux系统上),这个脚本以管理员身份运行,需要检查某些文件是否可以被普通用户读取。
所以我不能使用os.path.exists()或者直接打开文件(然后捕捉可能出现的错误)。
现在我在考虑检查每个文件的权限位,但唯一的问题是,我还得检查文件路径上每个目录的权限位(目录需要有读取和执行的权限),如果我有成千上万的文件,这个过程可能会非常慢。
我这个解决方案算是最好的选择吗,还是有更好的办法呢?
补充一下:我需要在检查完文件后继续以管理员身份运行这个脚本,所以不能放弃管理员权限。
1 个回答
4
你可以使用 os.seteuid 来把当前的用户身份改成一个非管理员的用户。然后再尝试打开文件。如果没有权限的话,就会出现一个 IOError
错误。
import os
os.seteuid(65534) # user 65534 is `nobody`
filename='/etc/passwd-'
try:
open(filename,'r')
except IOError as err:
print(err)
# [Errno 13] Permission denied: '/etc/passwd-'