我有一个有趣的场景,我想得到一些关于实现的专家建议。我有一个运行在Linux上的Python应用程序,它需要根据组权限返回单个目录。
例如,Linux文件系统如下所示:
/Directory/Apple
/Directory/Beta
/Directory/Carotene在/etc/group中有一个组,用于苹果、Beta和胡萝卜素。这些组权限被分配给每个目录( Apple目录只能由Apple组的成员查看/执行,等等)。登录的用户只能是一个组(Apple/Beta/胡萝卜素)的成员,我需要能够在不抛出异常的情况下找出用户有权访问哪个目录。我不能在Python中使用组成员资格调用,因为上面的目录结构是一个远程挂载的文件系统。
因此,为了简化这一点:如果用户是Beta组的成员,我需要统计/Directory中的每个子目录,然后只返回一个路径(在本例中为/目录/Beta,因为该用户是组目录的成员)。
我认为os.stat是一种很好的实现方式,但如果可能的话,我希望看到一些其他的实现。
提前感谢!
发布于 2013-04-17 02:39:35
请求宽恕比请求许可更容易(EAFP)。要检查目录是否可访问,请执行以下操作:
import os
def accessible(dir):
try:
os.listdir(dir)
except OSError:
return False
return True
print(accessible('/root'))要检查是否允许目录的所有子目录,请在for循环中应用此函数。
发布于 2013-04-17 02:22:17
要确定特定目录是否可访问,请使用os.access。
os.access('/Directory/Apple', os.R_OK)要检查/Directory的所有直接子目录,请尝试以下循环:
def find_my_group_directory():
#UNTESTED
root, dirs, _ = next(os.walk('/Directory'))
for dir in dirs:
if os.access(os.path.join(root, dir), os.R_OK):
return os.path.join(root, dir)
return Nonehttps://stackoverflow.com/questions/16044276
复制相似问题