02.서버-Linux

[리눅스]Find perm 옵션

redkite 2013. 4. 23. 16:14

find 의 -perm 옵션은 보통 3가지 mode 를 사용합니다.

  1. -perm mode
  2. -perm -mode
  3. -perm /mode

mode 는 정확하게 mode 가 매치되는 것만

-mode 는 mode 를 포함하고, 추가적인 퍼미션이 있는 것만

/mode 는 mode 에서 한개 bit라도 매치되는 것이 있으면

아래의 예들을 실행해 보시면 이해에 도움이 되실 겁니다.

하나의 임시 디렉토리 속에 아래 명령으로 모든 가능한 퍼미션을 만들고 테스트 해보세요.

for i in $(seq 0 7); do for j in $(seq 0 7); do for k in $(seq 0 7); do  touch ${i}${j}${k}; chmod ${i}${j}${k} ${i}${j}${k}; done; done; done

아래는 서로 결과가 같고, 퍼미션이 0700인 것만 찾습니다.

find . -perm u+rwx

find . -perm u=rwx

find . -perm 0700

find . -perm 700

아래는 서로 결과가 같고, 퍼미션이 0020인 것만 찾습니다.

find . -perm g+w

find . -perm g=w

find . -perm 0020

find . -perm 020

find . -perm 20

아래는 서로 결과가 같고, 퍼미션이 0500 보다 더 많이 허용된 것을 찾습니다.

find . -perm -u+rx

find . -perm -u=rx

find . -perm -0500

find . -perm -500

아래는 서로 결과가 같고, 퍼미션 0771 의 각 권한(rwxrwxrwx) 중 한 개 이상의 권한이 같은 것을 찾습니다.

find . -perm /u+rwx,g+rwx,o+x

find . -perm /u=rwx,g=rwx,o=x

find . -perm /u=rwx,g=rwx,o+x

find . -perm /0771

find . -perm /771

아래와 같이 !을 붙일 때 찾을 수 있는 퍼미션의 예상은

find . ! -perm /u+rwx,g+rwx,o+x -ls

-------rw-

--------w-

----------

-------r--

입니다.

참조하세요 ^^

추가질문에 대한 답변

-perm -2 -o -perm -20

-o 는 or 의 의미입니다.

-perm -2 또는 -perm -20 입니다.

other 가 writable 이상이거나 또는 group 이 writable 이상인 것을 의미합니다.

즉, other 또는 group 에 실행권한이 있는 파일을 의미합니다.

같은 의미지만 반대로 이야기 하면, 실행권한이 user 에게만 있거나 아예 없는 파일을 제외한 파일을 의미합니다.

만약,

find ../ ! -user mylin \( -perm 2 -o -perm -20 \) -exec {} \; 이라면

상위 디렉토리의 하위로 소유자가 user가 아니고 other나 group 에 실행권한이 있는 파일을 찾아서 실행한다

는 의미가 됩니다.