웹에서 찾은 모든 하우투는 다음과 같습니다.
Find all SUID files:
find / -perm -4000 -print
Find all SGID files:
find / -perm -2000 -print
그러나 그것은 사실이 아닙니다. 보다:
$ ls -lah test
-r-sr-xr-x 1 user user 0B Jan 24 22:47 test
$
$
$ stat -x test | grep Mode
Mode: (4555/-r-sr-xr-x) Uid: ( 1000/ user) Gid: ( 1000/ user)
$
$
$ find test -perm 4000
$ find test -perm 2000
$
질문 : 진실은 무엇입니까? 모든 SUID / SGID 파일을 실제로 나열하려면 어떻게해야합니까?
답변
당신이 테스트하려는 경우 모든 비트의 사용 /
. 즉, 사용 사례 :
find "$DIRECTORY" -perm /4000
과:
find "$DIRECTORY" -perm /2000
또는 결합 :
find "$DIRECTORY" -perm /6000
GNU에 대한 인수로 폴더와 파일을 모두 사용할 수 있습니다 find
.
읽기 쉬운 IMO 접근 방식 중 하나는 니모닉 바로 가기를 사용하는 것입니다. 즉 :
find "$DIRECTORY" -perm /u=s,g=s
주의 사항
변형이 find
다양 하다는 것을 명심하십시오 . 또한 다르게 동작 할 수 있습니다. 항상 사용 설명서 (RTFM)를 읽으십시오.
답변
다음 명령을 사용하면 SUID 권한이있는 모든 바이너리를 열거 할 수 있습니다. 도구 의 -perm -u=s
플래그 find
는 트릭을 수행합니다.
find / -perm -u=s -type f 2>/dev/null