예전것/Linux Basic

find 옵션에 +,- 붙은것들

hangover 2009. 9. 7. 00:38
지식in에서 퍼옴
▶▶질문
find /home/guest -perm 744 // 권한이 744인 파일만 찾기
find /home/guest -perm -744 // ?
find /home/guest -perm +744 // ?
두 번째와 세 번째 명령에서 -, +가 붙으면 무슨 차이가 있나요?


▶▶답변
퍼미션은 권한을 나타내는 2진수들의 조합된 값입니다.

예들들어서 사용자 읽기 권한은 9번재 비트이며
2진수로 표기하면 100000000
8진수로 표시하면 400 입니다.

2진수 표현을 시각적으로 좀더 보기 쉽게 만든 것이 ls -l 했을 때 나오는 rwxr-xr-x 방식입니다.

100000000  = 400
r--------

11000000 = 600
rw------

8진수 표현을 많이 사용하는 이유는 3비트씩 딱 나눠서 떨어지기 때문입니다.
8진수 숫자 1자리는 3비트를 나타내기 때문에
읽기,쓰기,실행 3개를 하나의 숫자로 표현할 수 있기 때문이죠.

질문으로 돌아가서

-perm 744 는 권한이 정확하게 744인 경우입니다.

ls로 봤을때 rwxr--r-- 로 나오는 것이죠.


-perm -744 는 744(rwxr--r--)에 해당되는 퍼미션 비트를 모두 포함하고 있는 경우입니다.

rwxr--r-- (744), rwxr-xr-x (755) rwxrw-r-- (764)  등등등 이 모두 포함되겠죠.

-퍼미션은 권한의 최소값(?) 같은 개념이라고 생각하시면 되겠네요.


-perm +744 는 744에 해당되는 퍼미션 비트중 어느 하나라도 포함하고 있는것입니다.

r-------- (400), rw------- (600), ------r--(004) ... 등등 무지 많은 경우가 나오겠죠.

그래서 +퍼미션은 보퉁 하나나 두가지 정도의 아주 제한된 값을 조건으로 줄때 쓰는것입니다.


그룹 쓰기 권한, 또는 모든 사용자 쓰기 권한이 있는 파일은?  -perm +022

root 소유이면서 suid 비트+실행 권한을 가진 파일은? -user root -type f -perm -4111
(이건 보안 점검 같은때 많이 사용할 법한 명령입니다.
일반 사용자가 root 권한으로 실행할 수 있는 명령을 찾는거져)