【发布时间】:2012-06-07 02:50:59
【问题描述】:
您好,我在 Linux 环境中工作,我正在尝试编写一个命令,该命令将路径作为输入并输出对该文件/目录具有读取权限的所有用户的列表。
例如,如果文件 /a/b/c 由 userid, u 和 groupid, g 拥有,并具有一些权限,我希望此命令识别 /a 和 /a/b 的权限,然后计算所有可以阅读的用户 c.尤其是当团体参与时,我会遇到麻烦。
我正在尝试将基于组的识别读取访问权限划分为案例:
1) g 匹配 c 的父 gid,gp,(或祖父等)的 gid,在这种情况下,如果 gp 的权限为:040,或限制较少,则 g 的任何成员都可以读取 c。
2) g 不同于 c 的父级 gid,gp。两个子案例:
...a) 用户 ID m 是 g 的成员(对于 g 中的所有 m(m 不拥有 c))并且拥有 c 的父级 p。如果 p 有权限,则 m 可以读取 c:400,或者限制更少。
...b) 用户 ID m 是 g 的成员(对于 c 的 gid 中的所有 m(m 不拥有 c))并且不拥有 c 的父级 p。如果 p 有权限,则 m 可以读取 c:004 或更少限制。
3) 你拥有 p,在这种情况下 p 需要 400 或更少限制的权限。
顺便说一句,我在这个系统上有根访问权限。我想我必须为 /etc/group 和 /etc/passwd 和 grep 制作一系列猫以获取相关信息,这很好。此外,我们可以考虑在这种环境中免费提供“统计信息”(它是我们已经拥有此信息的更大项目的一部分)。
我想我正在寻找的是现有的解决方案、伪代码或帮助我集思广益的算法和我缺少的其他注意事项的人。如有必要,请随时提出澄清问题 - 我知道这里的伪逻辑不是最容易阅读的。多谢你们。
【问题讨论】:
标签: linux shell permissions