모든 SUID/SGID 파일을 검색하는 방법은 무엇입니까?

모든 SUID/SGID 파일을 검색하는 방법은 무엇입니까?

온라인에서 찾은 모든 가이드는 다음과 같습니다.

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 파일을 나열하는 방법은 무엇입니까?

답변1

테스트하고 싶다면어느비트, /즉 사용 사례에 따라 .

find "$DIRECTORY" -perm /4000

그리고:

find "$DIRECTORY" -perm /2000

또는 조합:

find "$DIRECTORY" -perm /6000

폴더와 파일을 GNU에 대한 인수로 사용할 수 있습니다 find.

제 생각에는 더 읽기 쉬운 또 다른 방법은 니모닉 단축키를 사용하는 것입니다. 즉:

find "$DIRECTORY" -perm /u=s,g=s

경고 사항

다양한 변형이 다르다는 점을 명심하세요 find. 그들은 또한 다르게 행동할 수도 있습니다. 친절한 매뉴얼(RTFM)을 꼭 읽어보세요.

답변2

다음 명령을 사용하면 SUID 권한이 있는 모든 바이너리를 열거할 수 있습니다. -perm -u=s도구의 플래그로 find이 문제를 해결할 수 있습니다.

find / -perm -u=s -type f 2>/dev/null

관련 정보