我想查看系统上的用户有权访问哪些文件和文件夹。我是系统管理员。如何获取有关用户可以访问哪些文件和文件夹的更多信息?
首选命令行解决方案,我通过远程 ssh 连接到主机。
答案1
假设用户名是,rick
然后尝试这两个命令:
$ sudo ls -al /var/cache/ldconfig/aux-cache
-rw------- 1 root root 82579 Oct 1 16:51 /var/cache/ldconfig/aux-cache
$ sudo -u rick ls -al /var/cache/ldconfig/aux-cache
ls: cannot access '/var/cache/ldconfig/aux-cache': Permission denied
ls
在第一个示例中,sudo
默认用户可以使用此功能。但是当(root
sudo
年代替代乌驅動做) 表示用户rick
权限被拒绝。
答案2
您可以使用 find 命令和 -perm 选项根据文件的权限进行搜索,但是如果您打算检查所有者和组级别的访问权限,则还需要使用 -user 和 -group 参数。
您可以在查找手册页中找到这些选项的完整描述,以确定哪个选项最适合您的用例:
man find
但是举个例子,假设您在用户组中有一个名为 bob 的用户,则以下命令将查找 bo 作为所有者、组成员或其他身份具有读取权限的所有文件:
find -perm /444 -user bob -group users
如果用户 bob、组用户或默认的每个人中任何一个对该文件至少具有读取权限,则权限之前的 / 允许匹配,也就是说,它将匹配 bob 拥有的 600 个文件,因为他的用户帐户对该文件具有读取权限,即使其他用户没有。
还有其他前缀允许您对要搜索的权限进行微调,但同样,如果您不知道您的具体需求并且手册页已经记录了这些内容,那么这将是一个冗长的解释。
此外,我觉得这里有必要提一下,由于多个组成员身份等原因,权限确实会变得比这更复杂一些。像这样的工具是快速概览用户可能有权访问的文件的好方法,但如果安全是您的最终目标,不要假设输出是全面的,我建议在这种情况下测试是确保的最佳方法。
答案3
使用以下命令查找用户拥有的文件:
寻找目錄位置-用户<用户名>
...其中<username>
替换为您用来过滤搜索结果的用户的名称。您可以按如下方式进一步过滤搜索:
寻找目錄位置-用户<用户名>-姓名<文件名>
directory-location
:在此目录位置定位文件或目录。-user <username>
:查找属于该用户的文件或目录。-name <file-name>
:文件名或图样。