|
http://www.hackerschool.org/HS_Boards/zboard.php?AllArticle=true&no=1836 [복사]
안녕하세요.
ftz 레벨 1을 클리어 해보신 분은
find -perm -4000 에서 -의 의미에대해서 궁금해보셨을 겁니다.
오늘은 이거에 대해서 공부해보도록 하겠습니다.^^:
일단 간단하게 파일퍼미션을 보겠습니다.
ls -al 을 하면
drwxrwxrwx 5 guest guest 1413120 7¿ù 29 04:21 .
drwxr-xr-x 44 root root 4096 1¿ù 15 2009 ..
-rw------- 1 guest guest 1599 7¿ù 29 05:11 .bash_history
-rw-r--r-- 1 root root 224 12¿ù 1 2009 .bash_profile
-rw-r--r-x 1 root root 151 12¿ù 1 2009 .bashrc
drwxrwxr-x 2 guest guest 4096 7¿ù 29 03:34 .pwn3
-rw------- 1 guest guest 12288 7¿ù 29 04:17 .test.c.swp
-rw------- 1 guest guest 2993 7¿ù 29 03:49 .viminfo
-rwxrwxr-x 1 guest guest 11755 7¿ù 29 03:49 1
-rw-rw-r-- 1 guest guest 126 7¿ù 29 03:49 1.c
drwxrwxr-x 2 guest guest 4096 7¿ù 29 03:47 aa
drwxrwxr-x 2 guest guest 4096 7¿ù 29 04:56 test
이렇게 나오는 데 맨앞부분이 퍼미션입니다.
퍼미션(권한)을 사용하는 이유는, 예를 들어서 내가 고생해서 만든 파일, 다른 사람이 와서, 지우면 기분더럽겠죠?(일반사용자)
또는, 친구간에 읽기만 할 수 있게 공유할 파일인데 어떻하죠?(그룹) 내가 혹시라도 내파일을 잘못건드릴까봐 걱정되죠?(소유자)
맨앞글자에 d는 디렉토리즉 폴더고, -는 일반파일입니다. 그밖에 심볼릭링크 등등있습니다.
그 다음부분인 9자가 권한을 나타내는 데,
d/rwx/rwx/rwx 여기서 d는 디렉토리를 나타낸다고했죠?
d다음에 처음으로 나오는 rwx는 소유자에대해서, 그다음은 그룹에대해서, 마지막은 그외에 일반유저에대해서 입니다. (r는 read 즉 읽기, w는 write 즉 쓰기, x는 execute 즉 실행입니다.)
소유자, 그룹 , 일반유저(소유자도 그룹도아닌 사람)에 대해서 각각 따로 설정할 수 있습니다.
파일퍼미션에대해서는 간단하게 다루겠습니다.
네이버에서 퍼미션을 검색하면, 그림으로 자세히 설명한 블로그 많이 나오니,
한번 보고오세요.^^;
먼저 find 메뉴얼을 봐야겠죠?
telnet으로 ftz.hackerschool.org 를 접속해주세요.
guest로 로그인해주세요.
man find를 입력해주시면
영어로 어쩌구저쩌구 나오는데, perm부분이 나올 때까지 enter를 눌러줍니다.~
-perm mode
File's permission bits are exactly mode (octal or
symbolic). Symbolic modes use mode 0 as a point of
departure.
-perm -mode
All of the permission bits mode are set for the
file.
-perm +mode
Any of the permission bits mode are set for the
file.
-perm mode 는 그냥 정확히 같은 퍼미션을 가진 파일찾는 거니까 무시해주고,
-mode 와 + mode 를 봅니다.
-perm -mode : 퍼미션 비트 모드중에 모든 것이 파일에 대하여 설정된 것
-perm +mode : 퍼미션 비트 모드중에 하나라도 파일에 대하여 설정된 것
정도 되겠네요. 이하 발번역이었습니다.
뭔소리인지 모르겠죠?
직접 해봅시다. 참고로 touch 는 파일생성, chmod는 권한변경하는 명령어입니다.
touch 1
touch 2
touch 3
.....
touch 7
까지 입력합니다.
그다음에
chmod 100 1
chmod 200 2
...
chmod 700 7
까지 입력합니다.
ls -l 을 입력했을 때
---x------ 1 guest guest 0 7¿ù 29 04:33 1
--w------- 1 guest guest 0 7¿ù 29 04:33 2
--wx------ 1 guest guest 0 7¿ù 29 04:33 3
-r-------- 1 guest guest 0 7¿ù 29 04:33 4
-r-x------ 1 guest guest 0 7¿ù 29 04:33 5
-rw------- 1 guest guest 0 7¿ù 29 04:33 6
-rwx------ 1 guest guest 0 7¿ù 29 04:33 7
이렇게 나옵니다.
그럼 이제 실험을 해볼까요?
-find -perm -300을 입력해주세요.
-find -perm +300을 입력해주세요.
[guest@ftz test]$ find -perm +300
.
./1
./2
./3
./5
./6
./7
[guest@ftz test]$ find -perm -300
.
./3
./7
[guest@ftz test]$
짠! 이런 결과가 나옵니다.
---x------ 1 guest guest 0 7¿ù 29 04:33 1
--w------- 1 guest guest 0 7¿ù 29 04:33 2
--wx------ 1 guest guest 0 7¿ù 29 04:33 3
-r-------- 1 guest guest 0 7¿ù 29 04:33 4
-r-x------ 1 guest guest 0 7¿ù 29 04:33 5
-rw------- 1 guest guest 0 7¿ù 29 04:33 6
-rwx------ 1 guest guest 0 7¿ù 29 04:33 7
이부분을 다시 봐주세요.
300은 write 와 execute 권한을 소유자에게 준거죠?
파일 1은 소유자에게 execute 권한이 있고, find -perm +300에서 검색되었습니다.
파일 2는 소유자에게 write 권한이 있고, find -perm +300에서 검색되었습니다.
파일 3은 소유자에게 write 와 execute 권한이 있고, find -perm +300과 find -perm -300에서 검색되었습니다.
파일 4는 소유자에게 read 권한이 있고, 어디서도 검색되지않았습니다....
이걸로 무엇을 알 수 있을까요?
파일 3과 7의 공통점은 무엇일까요?
파일7은 소유자에게 rwx 권한을 줬고,
파일 3은 소유자에게 wx 권한을 줬습니다.
우리가 검색한 300은 소유자에게 wx권한이죠?
이쯤 되면 아@!
find -perm +mode는 mode에있는 권한중에서 하나만이라도 만족하면,
출력해주고
find -perm -mode는 mode에있는 권한중에서 모두를 만족해야지,
출력해준다는 걸 알 수 있겠죠?
마지막으로 문제 !
a라는 파일이 있는데 퍼미션은 321입니다.
find -perm -311 을 하면 a라는 파일을 찾을까요? 못찾을까요?
주의사항 : 혹시 문제가 생기거나 이상하다 싶은 부분이 있으면, 꼭 덧글남겨주세요!
+와 -의 차이에 대해서 궁금해서 정리한 문서이기때문에
정확하지 않을 수 있습니다. 꼭 지적해주세요! |
Hit : 27963 Date : 2011/08/04 04:42
|