如何检索用户的权限

如何检索用户的权限

我需要了解 CentOS 系统中用户的权限有哪些。是否可以找到用户可以访问哪些目录以及可以执行哪些命令?它不涉及 ACL。

答案1

为了能够执行文件,该文件必须

  1. 由用户拥有并可由用户执行,或者
  2. 与用户属于同一组,且可由该组执行,或
  3. 可由“其他人”执行。

以下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 \)

相关内容