온라인에서 찾은 모든 가이드는 다음과 같습니다.
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