[시스템] 리눅스파일과 디렉토리의 속성 이해
리눅스 파일과 디렉토리의 속성에 대한 이해
리눅스나 유닉스 파일들은 다음과 같은 형식의 속성을 가지게 됩니다.
-rw-r–r– 1 alang users 4068 9월 6 10:30 test.php3
이는 이는 공백으로 구분이 되어지는데 차례로 다음과 같은 속성을 나
타냅니다.
-rw-r–r– : 파일의 허가권
1 : 링크수
alang : 파일의 소유자
users : 파일의 허가 그룹
4068 : 파일의 용량
9월 : 파일의 최종 수정달
6 : 파일의 최종 수정일
10:30 : 파일의 최종 수정 시간
test.php3 : 파일명
차례로 설명하겠습니다.
1. 파일 디렉토리의 허가권
파일의 허가권은 8진수의 2진수 변환으로 그 속성을 나타내는데 그 형식
은 다음과 같습니다.
허가권값 2진수 허가권 속성
———————————–
0 000 —
1 001 –x
2 010 -w-
3 011 -wx
4 100 r–
5 101 r-x
6 110 rw-
7 111 rwx
———————————-
위 표에서 허가권 속성은 rwx 로 표시 되는데 r(읽기허가),w(쓰기허가),
x(실행허가) 입니다. 하나의 파일에 대한 허가권 속성은 위에서 보듯이
디렉토리,사용자(소유자),그룹,일반유저로 나누어 지는데, 다음 예제로
설명을 하겠습니다.
-rw-r–r– 1 alang users 4068 9월 6 10:30 test.php3
위의 예문은 test.php3 파일의 허가권이 -rw-r–r– 와 같다는 의미인데
허가권 속성으로 나누어 보면 다음과 같습니다.
– rw- r– r–
즉 차례로 디렉토리 , 소유자의 권한 , 그룹의 권한 , 일반 유저의 권한
으로 나누어 집니다.
풀이해서 설명하면 – ( 디렉토리가 아닌 파일이다 ), rw- (파일 소유자
에게 읽기와 쓰기의 권한) , r– (그룹에겐 읽기의 권한) , r– (일반
유저들에겐 일기의 권한) 이 있다는 뜻이다.
drwxrwxr-x 2 alang alang 4096 10월 4 18:43 www/
위의 예문은 test.php3 파일의 허가권이 -rw-r–r– 와 같다는 의미인데
허가권 속성으로 나누어 보면 다음과 같습니다.
– rw- r– r–
즉 차례로 디렉토리 , 소유자의 권한 , 그룹의 권한 , 일반 유저의 권한
으로 나누어 집니다.
풀이해서 설명하면 – ( 디렉토리가 아닌 파일이다 ), rw- (파일 소유자
에게 읽기와 쓰기의 권한) , r– (그룹에겐 읽기의 권한) , r– (일반
유저들에겐 일기의 권한) 이 있다는 뜻이다.
drwxrwxr-x 2 alang alang 4096 10월 4 18:43 www/
위와 같은 거는 www 는 디렉토리 이며 이 디렉토리는 소유자에게 일기
쓰기,실행의 권한이.. 그룹에겐 읽기,쓰기,실행의 권한이.. 일반 유저
에겐 읽기,실행의 권한이 있다는 말이다.
허가권에 대해 이해 했을거라 생각하고 이런 허가권은 변경 할수가 있는
데 이는 “chmod” 라는 명령어를 사용하여 “허가권 값” 을 변경할수가
있습니다.
다음 예제를 통해서 “허가권 값”에 대해 알아보도록 하겠습니다.
test.php3 에 파일의 소유자에게 읽기,쓰기,실행의 권한을..그룹에게
읽기와 실행의 권한을 ..일반유저에게 읽기와 실행의 권한을 주겠다면
허가권 속성은 -rwxr-xr-x 입니다. 이 허가권 속성을 허가권 값으로
변경하면 0755 가 됩니다. 잘 생각하시면 이해가 되실거라 여겨집니다.
그럼 대표적인 허가권 값과 특수 허가권 값에 대해 알아보도록 하죠.
0400(-r——–) : 파일의 소유자에게만 읽기의 권한이 있음
0440(-r–r—–) : 파일의 소유자와 그룹에게 일기의 권한이 있음
0444(-r–r–r–) : 모두에게 읽기 권한만 주어짐..
0644(-rw-r–r–) : 파일의 소유자에게 일기,쓰기 권한이 있고 나머지에겐
읽기 권한만 주어진다.
0755(-rwxr-xr-x) : 파일의 소유자에게 일기,쓰기,실행 권한이 주어지고
나머지에겐 읽기,실행의 권한이 주어진다.
4755(-rwsr-xr-x) : setUID 허가권이 지정되었다는 의미를 제외하곤 그냥
755의 권한과 같은 의미 이다. (setUID 는 밑에서..)
2755(-rwxr-sr-x) : setGID 허가권이 지정되었다는 의미를 제외하곤 그냥
755의 권한과 같은 의미 이다. (setGID 도 밑에서..)
setUID는 파일을 실행할때 프로세서는 파일을 실행한 사용자의 권한이 아
닌 파일의 소유자의 권한으로 프로세서를 생성하고 실행한다는 의미이다.
setGID 역시 실행한 사용자의 권한이 아닌 소유그룹의 권한으로 실행을 한
다는 의미이다. setUID 가 지정된 파일의 소유자가 root 일 경우 이 파일이
root 가 아닌 다른 사용자에 의해 변경될경우 보안상 중대한 틈이 생기므로
관리시 주의해야 할것이다.
2. 허가권 변경 및 소유권 변경
파일및 디렉토리의 허가권에 대해 대략 이해를 하셨을거라 생각 됩니다.
이런 허가권을 변경하는데 사용되는 명령어로는 chmod 가 있습니다.
chmod [허가권 값] [파일,디렉토리]
위의 형식으로 허가권 값을 변경할수가 있지요.
[alang@zzang911 alang]$ ll test.php3
-rw-r–r– 1 alang alang 4068 9월 6 10:30 test.php3
[alang@zzang911 alang]$ chmod 755 test.php3
[alang@zzang911 alang]$ ll test.php3
-rwxr-xr-x 1 alang alang 4068 9월 6 10:30 test.php3*
위의 예문에서 644 허가권 값을 가진 test.php3 이 755 허가권 값으로
변경됨을 알수 있을것입니다.
이밖에 -R 옵션을 붙이면 해당 해당디렉토리와 하위디렉토리의 모든 허가
권 값이 변경되어진다.
[alang@zzang911 alang]$ chmod -R /home/alang/www
소유자와 소유그룹 변경은 chown 과 chgrp 로 바꿀수 있다.
chown [소유자.소유그룹] [파일,디렉토리]
chgrp [소유그룹] [파일,디렉토리]
3. 생성 파일의 기본 허가권 설정
시스템 관리자들은 시스템에 존재하는 모든 사용자 파일에 대한 기본허가권
을 어떻게 해야할지 정해야 합니다. 새로운 파일의 기본허가권을 정할땐
umask 라는 명령어를 사용합니다.
파일 생성 함수인 open 은 새파일에 대해 666의 허가권을 요청하는데 umask
가 022 로 지정되어있으면 644 ( 666 – 022 = 644 ) 의 허가권 값이 새 생성
파일의 주어지게 된다. 디렉토리일 경우는 처음 요청시 777 의 허가권을 요
청하게 되고 umask 가 022 일때는 755 ( 777 – 022 = 755 ) 로 주어지게 됩
니다. 이런 umask 는 각 사용자의 환경설정 파일인 .bashrc 나 .bash_profie
에 ‘umask 022’ 이런 형식으로 지정하면 됩니다.
이밖에 FTP 를 통해 생성되는 파일일 경우에는 FTP 데몬이 inet 데몬의 제어
를 받을땐 /etc/inetd.conf 파일의 ftp 설정부분을 다음과 같이 고쳐주시면
됩니다.
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a -u022
inet 데몬 제어가 아니고 독립적으로 운영될 경우는 FTP 설정 파일에 umask
부분을 변경해 주시면 됩니다.
이밖에 파일의 유형을 알고 싶을땐 file 이란 명령어를 사용하여 알수 있습
니다.
[alang@zzang911 alang]$ file young.mpeg
young.mpeg: MPEG system stream data
그리고 파일의 접근 통계를 알고 싶으시면 stat 명령어를 사용하시면 쉽게
알수가 있지요..
[alang@zzang911 alang]$ stat young.mpeg
File: “young.mpeg”
Size: 843328 Filetype: Regular File
Mode: (0666/-rw-rw-rw-) Uid: (504/alang) Gid: (504/alang)
Device: 3,66 Inode: 64520 Links: 1
Access: Thu Nov 23 19:54:00 2000(00000.00:00:59)
Modify: Fri Oct 13 16:15:47 2000(00041.03:39:12)
Change: Mon Oct 23 16:16:05 2000(00031.03:38:54)