755보다 큰 권한을 가진 파일을 찾으려고 합니다. 다음 솔루션을 사용하십시오.다른 게시물여기서 나는 내가 원하는 것을 대부분 얻을 수 있었습니다:
find /bin -type f -perm -755 ! -perm 755
이는 755 이하의 모든 항목을 무시하지만 SUID 및 SGID 비트가 설정된 파일을 반환합니다. 나는 이것을 무시하고 싶다. 하나의 명령으로 이를 수행할 수 있습니까? 두 가지 모두에 대해 ! -perm
여러 매개변수를 시도했지만 아무것도 작동하지 않습니다.2000
4000
나는 또한 순차적 명령에서 2755
and 를 사용했지만 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 /6000
SUID나 SGID(또는 둘 다)와 일치하는 파일만 일치해야 하며 ! -perm /6000
이러한 파일은 제외되어야 합니다.
그건 그렇고, 귀하의 질문에 있는 은(는) 철자 오류인 것 같습니다. 왜냐하면 귀하가 올바르게 대답했기 때문입니다(두 번째 질문 없이).-type -f
-type f
-
) 두 번째 예에서는.
PS 여전히 원하는 대로 작동하지 않지만 두 번째 예제에서 원하는 대로 작동하도록 할 수 있습니다.무엇
(즉, 말 대신 일부 파일을 나열하려면 paths must precede expression
) 다음으로 변경하십시오.
find . -type f \( -perm -2755 ! -perm 2755 -o -perm -4755 ! -perm 4755 \)
즉, 인접한 인수(공백 포함) \(
와 분리됩니다.\)