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