小编elr*_*bis的帖子

终端:列出用户或组对其具有写权限的所有目录

我想列出用户或组具有写入权限的所有目录。

在 ServerFault 上发现了这个问题,但它针对的是 Windows Server,所以我很乐观,Linux 社区中有更好的东西。同时,我意识到这个问题存在递归扭曲,如果没有长时间运行的脚本,它可能无法实现。

我知道以下有用的命令:

  • 列出所有组: cut -d : -f 1 /etc/group
  • 列出所有用户: cut -d : -f 1 /etc/passwd
  • 获取用户的主目录: getent passwd user-name| cut -d: -f 6
  • 此脚本列出了每个用户及其组分配
  • 获取文件夹内容的权限和用户/组详细信息: ls -la

但是,当我不知道用户的目的是什么时,最好拉出他们拥有写权限的所有目录的列表,然后从那里开始环顾四周。如果不出意外,它是一个超级有用的审计..

如果这有助于理解我的目的,那么在我们的系统管理员担任新职位后,我继承了(或者至少是照看婴儿?)几个系统。所以我一直在试图了解这两个系统的演变,例如安装了什么软件,在哪里(..呃),各种配置文件所在的位置,以及现在,已经创建了哪些不同的组和用户——包括他们被允许写入的目录。通常我可以在 askubuntu 上找到这样有用的终端命令,但没有找到这个我想我会继续问。

确切的系统是 Ubuntu 10.04.2,但我们也支持 Ubuntu 12.04.5,因此最好是与版本无关的解决方案。在此先感谢您的帮助。


[更新:两个快速答案的初步结果]

值得注意的是,我以 root 身份登录,并且/是我的工作目录。此外,他们花费了相当多的时间来运行。

@Rinzwind 的组合命令在大约 5.5 分钟内得到了以下输出..

root@tatooine:/# sudo find -type d \( \( -user ftpgisdata -perm /u=w \) -o \( -group ftpgisdata -perm /g=w \) -o -perm /o=w …
Run Code Online (Sandbox Code Playgroud)

permissions command-line users groups

10
推荐指数
2
解决办法
2万
查看次数

标签 统计

command-line ×1

groups ×1

permissions ×1

users ×1