我需要了解 CentOS 系统中用户的权限有哪些。是否可以找到用户可以访问哪些目录以及可以执行哪些命令?它不涉及 ACL。
答案1
为了能够执行文件,该文件必须
- 由用户拥有并可由用户执行,或者
- 与用户属于同一组,且可由该组执行,或
- 可由“其他人”执行。
以下find
命令在当前目录中查找此类文件(仅适用于当前用户及其主要组):
uid=$( id -u ) # the user's ID
gid=$( id -g ) # the primary group ID
find . -type f \( \
\( -user "$uid" -perm -0100 \) -o \
\( -group "$gid" -perm -0010 \) -o \
-perm -0001 \) -print
-0100
表示“至少可由用户执行”,并且-0010
和-0001
相当于“组”和“其他”。
文件夹的可访问性也适用相同的标准(如果我没有完全弄错的话),因此更改-type f
为-type d
应该会给您提供可访问的文件夹。人们可能还想检查文件夹中的“读”位,显然(-0500
,-0050
和-0005
代替上面的权限)。
对于文件夹,这可能是一个解决方案:
find . -type d \( \
\( -user "$uid" -perm -0500 \) -o \
\( -group "$gid" -perm -0050 \) -o \
-perm -0005 -o -prune \) -print
我在最后添加了这样的内容-prune
,这样我们就不会进入用户无论如何都无法访问的文件夹。
将点更改为斜杠以在整个系统上搜索。
也很容易将其转变为仅打印用户的文件夹名称不能使用权:
find . -type d \( \
\( -user "$uid" -perm -0500 \) -o \
\( -group "$gid" -perm -0050 \) -o \
-perm -0005 -o -print -prune \)