UNIX 및실습 6 장. 파일접근권한관리하기 1
6 장. 파일접근권한관리하기 학습목표 파일의속성과접근권한의개념을이해한다. 접근권한을변경하는방법을익힌다. 접근권한을상속하고초기에설정하는방법을익힌다. 2
01. 파일의속성 다중사용자시스템의특징 여러사람이하나의시스템사용 다른사람이내파일을읽거나수정, 삭제할수없도록보안기능필요 다른사용자의무단접근으로부터자신의파일을보호하는기능으로파일에접근권한을부여하여권한만큼만파일을사용하도록함 파일의속성 유닉스에서파일을관리하기위해저장하는정보들 ls -l 명령으로파일속성을확인할수있음 3
파일의속성 ls l 명령 ssh lily.mmu.ac.kr $ ls l rw-r r - 1 user1 other 250 5 월 10 일 10:30 first.dat 4 1 2 3 4 5 6 7 8 번호 값 의미 1 - 파일종류 (- : 일반파일, d: 디렉토리 ) 2 rw-r--r-- 파일을읽고, 쓰고, 실행할수있는권한표시 3 1 물리적연결개수 4 user1 파일소유자의사용자명 5 other 파일소유자의그룹명 6 250 파일크기 ( 바이트단위 ) 7 5월 10일 10:30 파일이마지막으로변경된시간 8 first.dat 파일명
파일의종류 (1) 에나타나는문자들이의미하는파일의종류 문자 - 일반 ( 정규 ) 파일 d b c l p s 디렉토리파일 파일유형 블럭단위로읽고쓰는블럭장치특수파일 문자단위로읽고쓰는문자장치특수파일 기호적링크 파이프 소켓 5
파일의종류 file 파일명 지정한파일의종류를알려준다. 사용예 ssh lily.mmu.ac.kr $ file first.dat temp first.dat: 아스키텍스트 temp: 디렉토리 $ 6
실습하기 [ 실습하기 ] 파일의종류 1) cd 2) ls l 3) cd / 4) ls l 5) cd /dev 6) ls l 7) cd 어떤종류의파일들이있나? 7
소유자가속한그룹 groups [ 사용자명 ] 사용자명지정 인자로지정한사용자가속한그룹이름출력 인자가없으면 자신이속한그룹이름출력 사용예 ssh lily.mmu.ac.kr $ groups staff $ groups root root other bin sys adm uucp mail tty lp nuucp daemon $ 8
02. 파일의접근권한 파일을읽고, 쓰고, 실행할수있는권한 다중사용자시스템의가장기본적인보안기능 login:user3 cookbook.co.kr login: user1 login:user2 상황 : cookbook.co.kr 이회사의공동서버이다. user2 와 user3 이같은부서소속으로부서내부문서를공유해야하고, user1 은다른부서소속으로다른두사람의문서에접근하지못하도록하려면어떻게관리해야할까? 접근권한 9
파일접근권한 - 사용자구분 유닉스는접근권한을부여하기위해사용자를세카테고리로구분하여적용 파일의소유자, 파일이속한그룹, 기타사용자로구분 10
유닉스의사용자카테고리 소유자 그룹 일반적으로파일을생성한사용자. 명령을통해변경할수도있음 파일과동일한그룹에속한사용자들. 파일이속한그룹? 일반적으로파일을생성한사용자의기본그룹 상위디렉토리에특수한권한 (setgid) 이부여된경우다른그룹으로지정 명령을이용하여변경가능 기타사용자 소유자나그룹카테고리에속하지않은모든사용자들 접근권한은카테고리별로다르게부여 11
접근권한의종류 기본권한 읽기 (r), 쓰기 (w), 실행 (x) 파일의종류에따라의미다름 모드일반파일디렉토리파일특수파일 읽기 ( r ) 파일내용을읽거나복사할수있다 ls 명령으로디렉토리목록을읽을수있다 (ls 명령의옵션은실행권한이있어야함 ) read() 를사용하여파일을읽을수있다 쓰기 ( w ) 파일을수정 / 이동 / 삭제시킬수있다. ( 디렉토리에쓰기권한이있어야함 ) 디렉토리내에파일을생성, 삭제할수있다 write() 를사용하여파일에쓸수있다 실행 ( x ) 파일을실행시킬수있다 ( 실행가능한파일의경우 ) cd 명령을이용하여디렉토리로이동할수있다. 파일을디렉토리로이동하거나복사할수있다. 아무런의미가없다 12
접근권한표기방법 rw- r-- r-- 문자의의미소유자그룹사용자기타사용자 r: 읽기허가, w: 쓰기허가, x: 실행허가, -: 허가취소 다양한사용권한조합 사용권한 rwxr-xr-x r-xr-xr-x rw------- rw-rw-rwrwxrwxrwx rwx------ 의미 소유자는읽기 / 쓰기 / 실행권한을모두가지고그룹과기타사용자는읽기와실행권한만가짐 소유자, 그룹, 기타사용자모두읽기와실행권한만가짐 소유자만읽기 / 쓰기권한을갖고그룹과기타사용자는아무권한도없음 소유자와그룹, 기타사용자모두읽기와쓰기권한을가지고있음 소유자, 그룹, 기타사용자모두읽기 / 쓰기 / 실행권한을가지고있음 소유자만읽기 / 쓰기 / 실행권한을가지고있고그룹과기타사용자는아무권한도없음 13
03. 기호를이용한파일접근권한변경 chmod [ 옵션 ] 모드파일명 자신이소유한파일의사용권한을변경 옵션 -R : 하위디렉토리포함 모드 변경할사용권한표시 : 기호모드, 8 진수모드 14
기호를이용한파일사용권한변경 기호모드 기호를이용하여허가권변경 15 chmod u+w, u-x g+x, g-wx o=rwx, go-wx a=rwx 사용자카테고리 u g o a 사용자카테고리연산자권한 소유자 그룹 기타사용자 의미 모든사용자 (u+g+o) 파일명 연산자기호 + 허가권부여 - 허가권제거 = 권한기호 r w x 의미 특정사용자에게허가권지정 읽기허가 쓰기허가 실행허가 의미
기호를이용한파일사용권한변경 사용법 16 ssh lily.mmu.ac.kr $ ls -l first.dat -rw-r--r-- 1 user1 staff 183 May 9 23:11 first.dat $ chmod u-w first.dat $ ls l first.dat -r--r--r-- 1 user1 staff 183 May 9 23:11 first.dat $ chmod g+wx first.dat $ ls l first.dat -r--rwxr-- 1 user1 staff 183 May 9 23:11 first.dat $ chmod ug=rw first.dat $ ls l first.dat -rw-rw-r-- 1 user1 staff 183 May 9 23:11 first.dat $ chmod +rx first.dat $ ls l first.dat -rwxrwxr-x 1 user1 staff 183 May 9 23:11 first.dat $ chmod g-w first.dat $ ls l first.dat -rwxr-xr-x 1 user1 staff 183 May 9 23:11 first.dat
[ 실습하기 ] 기호를이용한권한변경 1) cd Unix/ch6 2) mkdir Practice 3) cd Practice 4) cp /etc/hosts. 5) ls l 6) chmod u+x hosts 7) chmod go+w hosts 8) chmod go-rw hosts 9) ls -l 1) ~ 3) 실습디렉토리생성후이동 4) /etc/hosts 파일을현재디렉토리로복사 5) 기본권한을확인 6) hosts 파일소유자의권한에쓰기추가 7) 그룹과기타사용자에게쓰기권한추가 8) 소유자의권한만남기고나머지권한은제거 9) 최종권한확인 17
[ 실습하기 ] 기호를이용한권한변경 1) cd 2) ls Unix 3) chmod u-r Unix 4) ls Unix 5) cd Unix 6) ls Unix 7) cd.. 8) chmod u+r Unix 9) ls Unix 10)chmod u-x Unix 11) ls Unix 12) cd Unix 13) chmod u+x Unix 1) 홈디렉토리로이동 2) Unix 디렉토리목록확인 3) Unix 디렉토리의읽기권한제거 4) ls 명령이실행되는가? 5) cd 명령이실행되는가? 6) ls 명령이실행되는가? 7) 상위디렉토리로이동 8) Unix 디렉토리에읽기권한부여 9) 10) Unix 디렉토리의실행권한제거 11) ls 명령이실행되는가? 12) cd 명령이실행되는가? 13) Unix 디렉토리에실행권한부여 18
04. 숫자를이용한파일접근권한변경 숫자모드 숫자를이용하여접근권한표현 모든카테고리의접근권한을동시에조정할때기호모드보다편리 각카테고리별로접근권한을하나의 8 진수로표현 3 개의 8 진수를사용하여전체접근권한표기 표시방법 소유자그룹기타사용자 1 사용권한 2 2 진수로대체 rwx rw- r-- 111 110 100 2 진수 권한이있으면 1, 없으면 0 으로표시 19 3 8 진수로변환 7 6 4 8 진수
숫자를이용한파일사용권한변경 2 진수와 8 진수 2진수 : 0과 1로구성 (2는없다 ) 8진수 : 0, 1, 2, 3, 4, 5, 6, 7로구성 10진수 : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9로구성 2 진수 1 1 1 10 진수의경우 2 진수의경우 8/10 진수 4 2 1 9 10 99 100 1 10 11 100 20
숫자를이용한파일사용권한변경 사용권한의 8 진수변환과정 1) 사용권한 2) 2진수로대체 3) 2진수계산 4) 계산결과합산 5) 8진수권한값 r - x 1 0 1 1*2 2 0*2 1 1*2 0 4 0 1 5 21
접근권한과 8 진수대응관계 기호 숫자 (2진수) 숫자 (8진수) 의미 rwx 111 4+2+1 7 읽기, 쓰기, 실행 rw- 110 4+2+0 6 읽기, 쓰기 r-x 101 4+0+1 5 읽기, 실행 r-- 100 4+0+0 4 읽기 -wx 011 0+2+1 3 쓰기, 실행 -w- 010 0+2+0 2 쓰기 --x 001 0+0+1 1 실행 --- 000 0+0+0 0 권한이없음 22
8 진수로표현한접근권한 사용권한 8 진수모드값 rwxrwxrwx 777 rwxr-xr-x 755 rw-rw-rw- 666 r-xr-xr-x 555 rw-r--r-- 644 rwx------ 700 rw-r----- 740 r-------- 400 --------- 000 23
숫자를이용한접근권한변경 사용예 chmod 8 진수 8 진수 8 진수 파일명 telnet hanbitbook.co.kr (1) chmod 444 first.dat (2) chmod 474 first.dat (3) chmod 475 first.dat (4) chmod 464 first.dat (5) chmod 575 first.dat (6) chmod 755 first.dat (7) chmod 700 first.dat (1) 444 = r--r--r-- (2) 474 = r rwxr-- (3) 475= r--rwxr-x (4) 464 = r--rw-r-- (5) 575 = r-xrwxr-x (6) 755 = rwxr-xr-x (7) 700 = rwx------ 24
[ 실습하기 ] 숫자를이용한접근권한변경 1) cd Practice 2) ls -l 3) chmod 644 hosts 4) ls l 5) chmod 666 hosts 6) ls l 7) chmod 400 hosts 8) ls l 1) ~ 2) 실습디렉토리로이동 3) 기본권한을확인 4) ~ 8) 여러가지숫자로바꾸어보고부여된권한을확인해보세요. 25
05. 기본접근권한의설정 기본접근권한 유닉스에서새로운파일이나디렉토리를만들때적용하는접근권한 파일 실행할수없는일반파일 ( 문서편집기로생성한파일 ) 기본접근허가권 666 실행할수있는일반파일 777 디렉토리 777 26
기본접근권한설정 umask [ 마스크값 ] 기본사용권한을변경하거나출력 마스크값 파일이나디렉토리생성시부여하지않을권한지정 마스크값을지정하면지정한마스크를이용하여사용권한지정 마스크값을지정하지않으면현재의마스크값을보여줌. 사용예 ssh lily.mmu.ac.kr $ umask 0022 $ umask 077 $ umask 0077 022 를의미 27
마스크값의의미 [1/2] 마스크 가리다 사용권한에서허용하지않을값을지정 마스크를이용한사용권한생성 기본사용권한 XOR 마스크 1) 최대권한 2) 2진수표현 3) 마스크값 (022) 4) XOR결과 일반파일 rw-rw-rw- 110110110 (666) 000010010 110100100 (644) 디렉토리 rwxrwxrwx 111111111 (777) 000010010 111101101 (755) (XOR : 두값이같으면 0, 다르면 1) 28
마스크값의의미 [2/2] 간단한계산방법 1) 최대권한 2) 마스크값 (022) 3) 뺄셈결과 대표적마스크값 rw-rw-rw- ----w--wrw-r r-- 666 022 644 마스크값 실행할수없는일반파일 실행할수있는일반파일 디렉토리 의미 022 644 755 755 소유자는모두할수있고그이외의사용자는쓰기금지 077 600 700 700 소유자이외는파일에접근금지 027 640 750 750 그룹은읽기와실행만가능, 기타사용자는파일에접근금지 29
[ 실습하기 ] 기본사용권한 1) cd ~/Unix/ch6/Practice 2) umask 3) mkdir utmp 4) touch utest 5) ls l 6) umask 027 7) umask 8) mkdir utmp2 9) touch utest2 10)ls -l 1) 실습디렉토리로이동 2) 현재의기본접근권한확인 3) 디렉토리생성 4) 파일생성 5) 부여된접근권한확인 6) 기본접근권한변경 ( 기타사용자의모든권한없앰 ) 7) 변경된마스크값확인 8) 디렉토리생성 9) 파일생성 10) 생성된디렉토리와파일의기본권한비교 30