特定文件夹的用户权限列表

特定文件夹的用户权限列表

如何获取有权访问某个文件夹的用户及其拥有哪些权限的列表?

我已经尝试过最常见的,如“ls”、“namei”或“getfacl”

答案1

当你

ls -ld */

您将获得当前路径中目录 (-d) 的列表 (-l)。您可能会看到所有者、组和其他人的访问权限。
有关访问权限的更多详细信息,您可以查看:
这个链接

当您检查输出时LS命令您可以看到文件或目录的所有者以及旁边的文件或目录的组所有者。例如,如果该组称为“后勤" 您可以使用以下命令查看该组的成员:

grep 'logistics' /etc/group

答案2

没有办法完全通用地做到这一点。例如,如果文件是通过网络文件系统(例如 NFS 或 Samba)导出的,那么您需要了解授权客户端上的帐户。如果该文件通过 Web 或 FTP 服务器可见,那么全世界都可以访问它。

即使不涉及其他机器(真实的或虚拟的),文件也可以硬链接到另一个目录中。由于以下原因,目录树可以在其他地方访问绑定挂载。文件可能位于某些用户也可以直接访问的磁盘映像上。等等。

在名义情况下,文件只能通过一个路径访问,文件只能由能够从根到该文件遍历整个目录树的进程访问。或者从当前目录到该文件(这很不寻常,但可以通过更改目录权限或在 chdir 操作后降低进程的权限来安排进程拥有无法 chdir 进入的当前目录) ——但我们正在远离名义情况。因此,在名义情况下,获取对文件具有所需权限的用户,并删除对从根到该文件的链中的任何目录没有 x 权限的用户。例如,要写入/one/two/three,用户必须拥有 的 x 权限//one并且/one/two必须拥有 的写入权限/one/two/three

为了确定谁对文件拥有什么权限,大多数 Unix 变体都提供了一个名为getfacl。此命令在 Linux 上可用,但并不总是默认安装的一部分。它列出了用户和组的权限;如果用户被明确列出,则用户对该文件的权限由用户列表确定,如果没有明确列出,则该用户拥有该用户所在的任何组授予的所有权限,如果该用户不属于任何列出的组那么用户就拥有“其他”权限集。

请注意,用户的进程并不总是具有由类似网络数据库中的条目授予的确切组集/etc/group,但我们再次进入边缘情况领域。有一件事并不是什么极端情况,那就是 SELinux 和 AppArmor 等安全框架可以添加更多限制。您可以通过查看以下输出来判断此类限制是否有效ls -ld /path/to/file:如果权限后面有标点符号,则表示权限并不能说明全部情况(+表示 ACL 条目,.表示您可以使用的 SELinux 上下文)显示ls -Z等)。

我不知道有什么工具可以为您收集所有这些信息。

答案3

ls-d目录选项一起使用:

ls -ld yourDirectory

相关内容