Chapter 05. 파일접근권한관리하기
00. 개요 01. 파일의속성 02. 파일의접근권한 03. 기호를이용한파일접근권한변경 04. 숫자를이용한파일접근권한변경 05. 기본접근권한설정 06. 특수접근권한
파일의속성을이해하고설명할수있다. 접근권한의종류와표기방법을이해하고설명할수있다. 접근권한을바꾸기위해기호모드에서원하는권한을기호로표기할수있다. 접근권한을바꾸기위해숫자모드에서원하는권한을숫자로표기할수있다. 기호로표기된접근권한을숫자로바꿀수있다. 숫자로표기된접근권한을기호로바꿀수있다. 기본접근권한을확인할수있다. 기본접근권한을원하는값으로바꿀수있다.
리눅스실습스터디맵
00 개요 [ 그림 5-1] 5 장의내용구성
01 파일의속성 파일접근권한보호 리눅스는파일에무단으로접근하는것을방지하고보호하는기능을제공 사용자는자신의파일과디렉터리중에서다른사용자가접근해도되는것과그렇지않은것을구분하여접근권한을제한 파일의속성 [user1@localhost ~]$ ls -l /etc/hosts -rw-r--r--. 1 root root 158 8월 6 2012 /etc/hosts [user1@localhost ~]$
01 파일의속성 파일의종류 파일속성의첫번째항목은파일의종류를표시 -는일반파일을, d는디렉터리를의미 파일의종류를알려주는명령 [user1@localhost ~]$ file /etc/hosts temp /etc/hosts: ASCII text temp: directory [user1@localhost ~]$ 파일의접근권한표시 파일의소유자와그룹이나기타사용자들이파일에대해가지고있는접근권한을표시 하드링크의개수 하드링크는한파일에대해여러개의파일명을가질수있도록하는기능
01 파일의속성 파일소유자의로그인 ID 리눅스에서모든파일은소유자가있음 파일소유자의그룹이름 ls -l 명령에서출력되는그룹명은파일이속한그룹 사용자가속한기본그룹은시스템관리자가사용자를등록할때결정 사용자가속한그룹을알려주는명령은 groups [user1@localhost ~]$ groups user1 wheel dialout [user1@localhost ~]$ groups root root : root [user1@localhost ~]$ 파일의크기 : 바이트단위 파일이마지막으로수정된날짜
02 파일의접근권한 접근권한의종류 읽기권한, 쓰기권한, 실행권한등세가지로구성 접근권한의표기방법 사용자카테고리별로누가파일을읽고쓰고실행할수있는지를문자로표현한것 읽기권한은 r, 쓰기권한은 w, 실행권한은 x로나타내며, 해당권한이없는경우에는 -로표기 사용자카테고리별로세가지권한의부여여부를 rwx 세문자를묶어서표기 [user1@localhost ~]$ ls -l /etc/hosts -rw-r--r--. 1 root root 158 8월 6 2012 /etc/hosts [user1@localhost ~]$
02 파일의접근권한 접근권한의표기방법
02 파일의접근권한 접근권한의변경명령 기호모드 : 접근권한을변경하기위해문자와기호를사용하여권한을표시 숫자모드 : 접근권한을변경하기위해숫자를사용
03 기호를이용한파일접근권한변경 기호모드
03 기호를이용한파일접근권한변경 기호모드를사용한접근권한설정의예
03 기호를이용한파일접근권한변경 기회를이용한접근권한변경예 1 현재접근권한확인 : rw-r--r [user1@localhost ch5]$ ls -l 합계 4 -rw-r--r--. 1 user1 user1 158 3 월 25 18:03 test.txt [user1@localhost ch5]$ 2 소유자의쓰기권한을제거 : u-w [user1@localhost ch5]$ chmod u-w test.txt [user1@localhost ch5]$ ls -l 합계 4 -r--r--r--. 1 user1 user1 158 3 월 25 18:03 test.txt [user1@localhost ch5]$
03 기호를이용한파일접근권한변경 실습 그룹에쓰기와실행권한을부여한다 : g+wx 기타사용자에게실행권한을부여한다 : o+x 그룹과기타사용자의실행권한을제거한다 : go-x 모두에게실행권한을부여한다 : a+x 소유자에게쓰기권한을부여하고그룹의쓰기권한은제거한다 : u+w,g-w
04 숫자를이용한파일접근권한변경 숫자로환산하기 숫자모드에서는각권한이있고없고를 0 과 1 로표기하고이를다시환산하여숫자로표현 카테고리별로권한의조합에따라 0 부터 7 로나타내는것
04 숫자를이용한파일접근권한변경 권한을숫자로환산하는과정 1 r-x라고할때권한이있는것은 1로, 없는것은 0으로변환 2 2진수 1, 0, 1로변환 3 2진수를각자릿수별로 10진수로환산하면 4, 0, 1이된다. 4 세숫자를더하면 5 최종권한값은 5가됨
04 숫자를이용한파일접근권한변경 전체권한을숫자로표기
04 숫자를이용한파일접근권한변경 숫자모드로접근권한변경하기 숫자의각위치가사용자카테고리를나타내기때문에사용자카테고리를따로지정할필요가없다 항상세자리수를사용해야하므로변경하려는사용자카테고리의권한뿐만아니라그룹과기타사용자의권한도반드시같이명시
04 숫자를이용한파일접근권한변경 숫자모드로접근권한변경하기예 1 현재접근권한 : 644(rw-r--r--) [user1@localhost ch5]$ ls -l 합계 4 -rw-r--r--. 1 user1 user1 158 3 월 25 18:03 test.txt [user1@localhost ch5]$ 2 소유자의쓰기권한을제거 : r--r--r-- 이므로 444 [user1@localhost ch5]$ chmod 444 test.txt [user1@localhost ch5]$ ls -l 합계 4 -r--r--r--. 1 user1 user1 158 3 월 25 18:03 test.txt [user1@localhost ch5]$ 3 그룹에쓰기와실행권한을부여 : r--rwxr-- 이므로 474 [user1@localhost ch5]$ chmod 474 test.txt [user1@localhost ch5]$ ls -l 합계 4 -r--rwxr--. 1 user1 user1 158 3 월 25 18:03 test.txt* [user1@localhost ch5]$
04 숫자를이용한파일접근권한변경 실습 기타사용자에게실행권한을부여한다 : o+x, r--rwxr-x 475 그룹과기타사용자의실행권한을제거한다 : go-x, r--rw-r-- 464 모두에게실행권한을부여한다 : a+x, r-xrwxr-x 575 소유자에게쓰기권한을부여하고그룹의쓰기권한은제거한다 : u+w,g-w, rwxr-xr-x 755 소유자의권한만남기고나머지사용자의권한은모두제거 : rwx------ 700
05 기본접근권한설정 기본접근권한 리눅스에서는파일이나디렉터리를생성할때기본접근권한이자동적으로설정 일반파일의경우소유자와그룹은읽기와쓰기권한이설정되고기타사용자는읽기권한만설정 디렉터리의경우소유자와그룹은읽기, 쓰기, 실행권한이설정되고기타사용자는읽기, 실행권한만설정 [user1@localhost ch5]$ touch fedora.txt [user1@localhost ch5]$ mkdir temp [user1@localhost ch5]$ ls -l 합계 8 -rw-rw-r--. 1 user1 user1 0 3월 25 22:01 fedora.txt drwxrwxr-x. 2 user1 user1 4096 3월 25 22:01 temp/ ----------. 1 user1 user1 158 3월 25 18:03 test.txt [user1@localhost ch5]$
05 기본접근권한설정 기본접근권한확인하고변경하기 아무인자없이 umask 명령만사용할경우기본마스크값출력 [user1@localhost ch5]$ umask 0002 [user1@localhost ch5]$ 마스크값의의미 마스크값은파일이나디렉터리생성시부여하지않을권한을지정해놓는것 마스크값이 002 일경우 -------w- 이고, 기타사용자에게쓰기권한은부여하지않겠다는의미 [user1@localhost ch5]$ umask -S u=rwx, g=rwx, o=rx [user1@localhost ch5]$
05 기본접근권한설정 마스크값변경하기 [user1@localhost ch5]$ umask 077 [user1@localhost ch5]$ umask 0077 [user1@localhost ch5]$ 마스크값을바꾸면파일이나디렉터리를생성할때적용되는기본접근권한도변경 [user1@localhost ch5]$ touch liux.txt [user1@localhost ch5]$ ls -l 합계 8 -rw-rw-r--. 1 user1 user1 0 3월 25 22:01 fedora.txt -rw-------. 1 user1 user1 0 3월 25 22:22 liux.txt drwxrwxr-x. 2 user1 user1 4096 3월 25 22:01 temp/ ----------. 1 user1 user1 158 3월 25 18:03 test.txt [user1@localhost ch5]$
05 기본접근권한설정 마스크값의적용과정
05 기본접근권한설정 여러가지마스크값 umask 로마스크값을바꿀때파일과디렉터리에모두적용해봐야함 마스크값이파일에는적합하지만디렉터리에는적합하지않을수도있음
06 특수접근권한 특수접근권한 접근권한은원래 4 자리 생략된맨앞자리는특수접근권한의미 맨앞자리숫자가 0 이면일반적인접근권한이지만이숫자가 1, 2, 4 이면특수접근권한이설정 SetUID : 맨앞자리가 4 SetGID : 맨앞자리가 2 스티키비트 (sticky bit) : 맨앞자리가 1
06 특수접근권한 SetUID (1) 해당파일이실행되는동안에는파일을실행한사용자의권한이아니라파일소유자의권한으로실행 파일에 SetUID 설정 : SetUID 는접근권한에서맨앞자리에 4 를설정 [user1@localhost ch5]$ touch set.exe [user1@localhost ch5]$ chmod 755 set.exe [user1@localhost ch5]$ ls -l set.exe -rwxr-xr-x. 1 user1 user1 0 3월 26 00:45 set.exe* [user1@localhost ch5]$ [user1@localhost ch5]$ chmod 4755 set.exe [user1@localhost ch5]$ ls -l set.exe -rwsr-xr-x. 1 user1 user1 0 3월 26 00:45 set.exe* [user1@localhost ch5]$
06 특수접근권한 SetUID (2) SetUID 가설정되면소유자의실행권한에 s 가표시 set.exe 를실행하면항상 user1 의권한을가지고실행된다는의미 [user1@localhost ch5]$ ls -l /usr/bi/passwd -rwsr-xr-x. 1 root root 27848 12월 5 2012 /usr/bi/passwd* [user1@localhost ch5]$ /etc/shadow 파일은 root 계정으로만수정이가능 passwd 명령은 SetUID 가설정되어있기때문에소유자인 root 권한으로실행이되어암호변경가능 SetUID 를이용한해킹도등장하여보안에신경을써야
06 특수접근권한 SetGID SetGID 가설정된파일을실행하면해당파일이실행되는동안에는파일소유그룹의권한으로실행 SetGID 는 2755 와같이접근권한에서맨앞자리에 2 를설정 스티키비트 스티키비트는디렉터리에설정 디렉터리에스티키비트가설정되어있으면이디렉터리에는누구나파일을생성가능 파일은파일을생성한계정으로소유자가설정되며, 다른사용자가생성한파일은삭제불가 /tmp 디렉터리가대표적 스티키비트는접근권한에서맨앞자리에 1 을설정 [user1@localhost ch5]$ ls -l / grep tmp drwxrwxrwt. 13 root root 300 7월 3 23:38 tmp/ [user1@localhost ch5]$