웹에서 찾은 모든 하우투는 다음과 같습니다.
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 파일을 실제로 나열하려면 어떻게해야합니까?
음, 왜 이것이 "사실이 아닌가"? 당신은 한 R은 EAD T 그는 F를 riendly M의 오른쪽 교재를? 파일의 권한 비트는 정확히 모드 (8 진수 또는 기호)입니다.
—
0xC0000022L
** test **는 파일입니다. 디렉토리에서 검색을 찾으십시오. 따라서 test가있는 디렉토리에서 find를 사용해야합니다.
—
Nils
@ 닐 : 사실이 아닙니다.
—
0xC0000022L
find
(GNU는 정확하다고 생각합니다) 디렉토리와 파일을 동일하게 취합니다. 단순히 -perm
스위치 의 요점을 놓친 것 입니다. 설명서를 읽으면 도움이 될 것입니다.
@ 0xC0000022L 흥미 롭습니다. CentOS 5의 linux-manpage는 디렉토리 만 가져갈 것이라고 말합니다. 파일에서 실행하는 데 많은 의미가 있습니까?
—
Nils
@ Nils : 아닙니다. 특별한 의미는 없습니다. 그러나 그것은 당신이 그 어리 석음을 막지 않을 것입니다. 어쨌든, 언뜻보기에 이것이 문제라고 생각했습니다. 아아, 그것은이 질문에 대한 것이 아닙니다. 파일에서 비트를 확인하여 파일이
—
0xC0000022L
find $FILE -perm /7777
있는지 find
또는 방지 하는지 확인할 수 있습니다.