다음 find 명령을 이해하십시오.

다음 find 명령을 이해하십시오.

현재 다음 find 명령을 이해하는 데 문제가 있습니다.

find / -o -group `id -g` -perm \ 
 -g=w -perm -u=s -o -perm -o=w\
 -perm -u=s -o -perm -o=w \
 -perm -g=s -ls 

특히 이 부분은:

find / -o -group `id -g` -perm -g=w -perm -u=s

-o는 OR 연산자처럼 작동한다는 것을 알고 있습니다. 이 경우 해당 특정 줄은 / 또는 그룹 쓰기 권한 및 suid가 설정되고 내 그룹과 동일한 파일의 모든 파일을 찾는 것을 의미합니까? 이는 기본적으로 / 디렉토리의 모든 파일을 의미합니다. 누군가 내가 놓친 것을 나에게 설명해 줄 수 있습니까?

답변1

~에서find(1)맨페이지:

-H, -L옵션은 -P심볼릭 링크 처리를 제어합니다. 이러한 후속 명령줄 인수는 -또는 로 (시작하는 첫 번째 인수 까지 확인할 파일 또는 디렉터리의 이름으로 처리됩니다 !. 이 매개변수와 모든 후속 매개변수는 검색 대상을 설명하는 표현식으로 처리됩니다. 경로가 지정되지 않으면 현재 디렉터리가 사용됩니다. 표현식이 제공되지 않으면 -print해당 표현식이 사용됩니다(그러나 -print0어쨌든 사용을 고려해야 합니다).

귀하의 경우 시작점은 /표현식과 다르게 처리됩니다. 후자의,

-o -group `id -g` -perm \ 
-g=w -perm -u=s -o -perm -o=w\
-perm -u=s -o -perm -o=w \
-perm -g=s -ls

귀하의 경우 시작 지점에서 찾은 모든 파일에 대해 작동합니다. -o는 이항 연산자이고 양쪽에 표현식이 필요하므로 이 명령은 실제로 실패합니다.

발견됨: 잘못된 표현식입니다. 앞에 아무 것도 없이 이진 연산자 '-o'를 사용했습니다.

첫 번째 것을 제거하면 -o다음과 같습니다.

   ( -group `id -g` -perm -g=w -perm -u=s )
-o ( -perm -o=w -perm -u=s )
-o ( -perm -o=w -perm -g=s -ls )

다른 사람이 setgid로 쓸 수 있는 파일만 나열합니다. 처음 두 표현식 세트는 아무 작업도 수행하지 않으므로 눈에 보이는 효과 없이 적용됩니다.

관련 정보