查找用户的可写文件和目录

ren*_*ren 13 permissions find files

如何确定给定用户可以写入的所有文件和文件夹?用户是nobody。也许是 bash 或 python 中的一些脚本?我正在使用 Ubuntu 11.04

Kus*_*nda 16

find / '(' -type f -o -type d ')' \
       '(' '(' -user  nobody -perm -u=w ')' -o \
           '(' -group nobody -perm -g=w ')' -o \
           '('               -perm -o=w ')' ')' -print
Run Code Online (Sandbox Code Playgroud)

这将找到属于nobody其所有者可写的所有文件和目录,或属于nobody可写组的所有文件和目录,以及任何人可写的所有文件或目录。

不过,这只会考虑主要组。

由于将此概括为考虑次要组(和 ACL 等)将导致更笨拙的find表达式,GNUfind用户可以使用

find / '(' -type f -o -type d ')' \
       '(' '(' -user  nobody -perm -u=w ')' -o \
           '(' -group nobody -perm -g=w ')' -o \
           '('               -perm -o=w ')' ')' -print
Run Code Online (Sandbox Code Playgroud)

这将报告当前用户可写的所有目录。要使用相同的简短语法查找其他用户可写的目录,请使用sudo -u username find ...,即在运行之前更改为该其他用户find(但请参阅相关问题的答案以了解警告和更好的替代方案)。