xxx보다 큰 권한을 가지고 있지만 SUID 및 SGID를 무시하는 파일을 찾는 방법

xxx보다 큰 권한을 가지고 있지만 SUID 및 SGID를 무시하는 파일을 찾는 방법

755보다 큰 권한을 가진 파일을 찾으려고 합니다. 다음 솔루션을 사용하십시오.다른 게시물여기서 나는 내가 원하는 것을 대부분 얻을 수 있었습니다:

find /bin -type f -perm -755 ! -perm 755

이는 755 이하의 모든 항목을 무시하지만 SUID 및 SGID 비트가 설정된 파일을 반환합니다. 나는 이것을 무시하고 싶다. 하나의 명령으로 이를 수행할 수 있습니까? 두 가지 모두에 대해 ! -perm여러 매개변수를 시도했지만 아무것도 작동하지 않습니다.20004000

나는 또한 순차적 명령에서 2755and 를 사용했지만 4755, 다시 한 번 말하지만, 하나의 명령으로 두 가지 모두를 다루는 것을 선호합니다.

그 연산자가 도움이 될 것이라고 생각 -o하지만, 제가 사용하고 있는 부정 패턴이 포함된 매개변수를 사용하여 이를 수행하는 방법을 잘 모르겠습니다. 나는 노력했다

find . -type f \(-perm -2755 ! -perm 2755 -o -perm -4755 ! -perm 4755\)

하지만 이는 paths must precede expression오류를 발생시킬 뿐입니다.

답변1

누구에게나 적용 가능POSIX 호환 조회다음과 같이:

find DIR -type f -perm -0755 ! -perm 0755 ! -perm -04000 ! -perm -02000 -print

앞에서 언급했듯이 GNU find를 사용하면 setuid 및 setgid 테스트를 ! -perm /06000.

답변2

원하시는 내용이 무엇인지 잘 모르겠습니다. 하지만 제가 추측한 바에 따르면

찾다  (시작 디렉토리)  - F형 - 파마 - 755! -페름 755! -페름/6000

그럴 것 같습니다. "모든 권한 비트를 의미합니다.-perm /mode모델파일에 대해 설정합니다. ” 따라서  -perm /6000SUID나 SGID(또는 둘 다)와 일치하는 파일만 일치해야 하며 ! -perm /6000이러한 파일은 제외되어야 합니다.

그건 그렇고, 귀하의 질문에 있는 은(는) 철자 오류인 것 같습니다. 왜냐하면 귀하가 올바르게 대답했기 때문입니다(두 번째 질문 없이).-type -f-type f-) 두 번째 예에서는.


PS 여전히 원하는 대로 작동하지 않지만 두 번째 예제에서 원하는 대로 작동하도록 할 수 있습니다.무엇 (즉, 말 대신 일부 파일을 나열하려면 paths must precede expression) 다음으로 변경하십시오.

find . -type f \( -perm -2755 ! -perm 2755 -o -perm -4755 ! -perm 4755 \)

즉, 인접한 인수(공백 포함) \(와 분리됩니다.\)

관련 정보