사용자의 권한을 검색하는 방법

사용자의 권한을 검색하는 방법

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

관련 정보