☆ 파일 시스템의 퍼미션 및 소유권 ☆
☆ 퍼미션의 이해 ☆
- 퍼미션은 다중 사용자 운영체제에서, 파일이나 디렉토리를 read, write, execute 하는 등의 행위를 말합니다.
- 일반적으로 각 파일은 사용자 또는 그룹 사용자, 나머지 사용자들에 대해 각각 다른 퍼미션을 부여할 수 있습니다.
- 파일에 대한 퍼미션은 ls -l, ll 명령어를 이용하여 확인할 수 있습니다.
[ 퍼미션 확인 ]
1. 파일 유형과 퍼미션
- " ls -l ", " ll " 명령어를 이용하여 퍼미션 필드를 확인하면 이 필드는 총 10개의 문자로 이루어져 있습니다.
- 첫 번째 문자는 이 파일의 유형을, 나머지 9 개의 문자는 각 소유자와 그룹소유자 나머지 사용자들에 대한 퍼미션을 나타냅니다.
[ 파일 유형과 퍼미션 ]
* 파일 유형
- 10 개의 필드 중 가장 첫 번째 1개의 문자입니다.
[ 파일 유형의 종류 ]
* 파일 퍼미션
- 파일의 퍼미션은 파일 유형을 제외한 나머지 9개의 문자입니다.
- 3자리씩 나누어 파일에 대한 소유자(user), 그룹 소유자(group), 나머지 사용자(other)의 퍼미션으로 구분 됩니다.
- 읽기(read), 쓰기(write), 실행(excute)의 세 가지 권한이 부여될 수 있습니다.
** 소유자(user)
- 해당 파일이나 디렉토리를 생성하거나 해당 파일을 소유한 사용자를 의미합니다.
[ root 사용자의 파일 파일 및 디렉토리 생성 - 소유자 및 퍼미션 확인 ]
[ guest 사용자의 파일 파일 및 디렉토리 생성 - 소유자 및 퍼미션 확인 ]
** 그룹 소유자(group)
- 해당 파일이나 디렉토리에 대한 그룹에 포함되어 있는 사용자들의 권한을 의미합니다.
[ root 사용자의 파일 파일 및 디렉토리 생성 - 그룹 소유자 및 퍼미션 확인 ]
[ guest 사용자의 파일 파일 및 디렉토리 생성 - 그룹 소유자 및 퍼미션 확인 ]
** 소유자(user)
- 소유자와 그룹 소유자에 포함되지 않은 모든 사용자가 해당 파일과 디렉토리에 대해 가지는 권한을 의미합니다.
[ root 사용자의 파일 파일 및 디렉토리 생성 - 나머지 사용자 퍼미션 확인 ]
[ guest 사용자의 파일 파일 및 디렉토리 생성 - 나머지 사용자 퍼미션 확인 ]
퍼미션 인증 절차
☆ 퍼미션 및 소유권 변경 ☆
1. 파일 소유권 변경
- 사용하는 계정에 따라 파일 및 디렉토리를 생성할 경우 소유자와 그룹 소유자가 정해지게 됩니다.
- 새로운 파일 및 이미 존재하는 파일들을 원하는 소유자와 그룹 소유자로 변경할 수 있습니다.
* chown 명령어
[사용방법] # chown [option] [계정명]:[그룹명] filename
# chown [option] [uid].[gid] filename
- 파일의 소유권을 변경하거나 소유권과 그룹 소유권 변경할 때 사용하는 명령어 입니다.
- 변경 전후의 계정에 대한 권한을 가지고 있어야 하기 때문에 root로 실행하는것이 일반적입니다.
- " -R " 하위 디렉토리까지 소유자와 그룹 소유자를 변경
[ 파일의 소유권 변경 ]
[ 파일의 소유권과 그룹 소유권 변경 - 계정명으로 변경 ]
[ 파일의 소유권과 그룹 소유권 변경 - uid, gid 로 변경 ]
[ 하위 디렉토리까지 변경 ]
* chgrp 명령어
[사용방법] # chgrp [ option ] [ 그룹명 | gid ] filename
- 그룹의 소유권만을 변경하고자 할 경우 사용하는 명령어 입니다.
- " -R " 하위 디렉토리까지 그룹 소유자를 변경
[ 파일의 그룹 소유권 변경 - 그룹사용자 이름으로 변경 ]
[ 파일의 그룹 소유권 변경 - gid 로 변경 ]
2. 파일 퍼미션 변경
- root 사용자 혹은 파일의 소유주만이 파일의 퍼미션을 변경할 수 있습니다.
- 상대모드와 절대모드 두가지를 사용할 수 있습니다.
- 상대모드 : 기호로 표현하여 사용하는 방법으로 권한 부여시 " + ", 권한 제거시 " - " 기호를 사용합니다.
- 절대모드 : 파일과 디렉토리의 퍼미션을 8진 수의 숫자로 표현합니다.
* 상대 모드 (Symbolic method)
[사용방법] chmod [ mode ] file_name
[ 그룹 소유자에게 write, execute 권한 부여 ]
[ 모든 사용자에게 execute 권한 부여, 그룹 소유자의 read 권한 삭제 ]
* 절대 모드 (absolute method)
[사용방법] # chmod mode file_name
▷ rwxrw-r--의 절대 모드 표현
▷ rw-r-xr-x의 절대 모드 표현
▷ r-xr--r--의 절대 모드 표현
[ 4+2+0 = 6 , 4+0+1 = 5, 4+0+1 = 5 // 655 권한 부여 ]
☆ 특별한 퍼미션 ☆
1. SetUID (4000) 퍼미션
- 파일 및 명령어가 실행되는 동안 실행한 사용자가 아닌 파일 소유주의 권한을 부여하게 되는 퍼미션 값입니다.
[ Setuid 퍼미션 적용 (절대모드) - 실행권한이 있을경우 " s ", 실행권한이 없을경우 대문자 " S " ]
[ Setuid 퍼미션 적용 (상대모드) ]
[ /etc/passwd, /etc/group 문서와 /usr/bin/passwd 명령어의 퍼미션 확인 ]
[ passwd 명령어 퍼미션 확인 후 Setuid 권한 제거 ]
[ 권한 제거후 guest 계정으로 passwd 명령어 사용 - 변경 실패 ]
[ passwd 명령어에 Setuid 권한 부여 ]
[ guset 계정으로 passwd 명령어 사용 - 변경 성공 ]
2. setGID (2000) 퍼미션
- 파일 및 명령어가 실행되는 동안에는 그룹 소유주의 권한을 가지게 하는 퍼미션 값입니다.
[ 상대 모드, 절대 모드로 Setgid 부여 ]
[ Setgid 적용시 디렉토리에 적용할 경우 주의해서 적용해야 한다. ]
3. Sticky bit (1000) 퍼미션
- 모든 사용자가 읽고, 쓰고, 삭제가 가능합니다.
- 파일 삭제는 오로지 소유주만 삭제할 수 있습니다.
- 대표적인 sticky bit 가 적용된 디렉토리는 " /tmp ", " /var/tmp " 입니다.
[ Sticky bit 설정된 폴더 확인 ]
[ 폴더 2개 생성 후 한 폴더에만 Sticky bit 설정, 각각의 폴더에 파일 생성 - 디렉토리 ]
[ Sticky bit 가 설정된 Test1 폴더 안의 파일 삭제 불가, 설정되지 않은 Test2 폴더의 파일 삭제 가능 - 디렉토리 ]
리눅스 시스템에서는 모든 파일에 사용자들을 세 부류로 구분하여 각각의 부류가 파일에 대해 가질 수 있는 세가지 권한을 부여하고 있습니다. 또한, 파일과 디렉토리에 접근 가능하도록 퍼미션을 적용해 접근을 제한 할 수 있으며 행동에 제약을 줄 수 있습니다.
☆ 퍼미션의 이해 ☆
- 퍼미션은 다중 사용자 운영체제에서, 파일이나 디렉토리를 read, write, execute 하는 등의 행위를 말합니다.
- 일반적으로 각 파일은 사용자 또는 그룹 사용자, 나머지 사용자들에 대해 각각 다른 퍼미션을 부여할 수 있습니다.
- 파일에 대한 퍼미션은 ls -l, ll 명령어를 이용하여 확인할 수 있습니다.
1. 파일 유형과 퍼미션
- " ls -l ", " ll " 명령어를 이용하여 퍼미션 필드를 확인하면 이 필드는 총 10개의 문자로 이루어져 있습니다.
- 첫 번째 문자는 이 파일의 유형을, 나머지 9 개의 문자는 각 소유자와 그룹소유자 나머지 사용자들에 대한 퍼미션을 나타냅니다.
* 파일 유형
- 10 개의 필드 중 가장 첫 번째 1개의 문자입니다.
* 파일 퍼미션
- 파일의 퍼미션은 파일 유형을 제외한 나머지 9개의 문자입니다.
- 3자리씩 나누어 파일에 대한 소유자(user), 그룹 소유자(group), 나머지 사용자(other)의 퍼미션으로 구분 됩니다.
- 읽기(read), 쓰기(write), 실행(excute)의 세 가지 권한이 부여될 수 있습니다.
** 소유자(user)
- 해당 파일이나 디렉토리를 생성하거나 해당 파일을 소유한 사용자를 의미합니다.
** 그룹 소유자(group)
- 해당 파일이나 디렉토리에 대한 그룹에 포함되어 있는 사용자들의 권한을 의미합니다.
** 소유자(user)
- 소유자와 그룹 소유자에 포함되지 않은 모든 사용자가 해당 파일과 디렉토리에 대해 가지는 권한을 의미합니다.
퍼미션 인증 절차
만약 사용자가 쓰기 권한을 요청하게 되면, 가장 먼저 파일의 uid와 사용자의 uid를 비교하여 일치하면 소유자로 인정하여 소유자의 퍼미션을 부여하게 됩니다. 만일 일치하지 않을 경우 다음 단계의 gid와 비교를 하게 되고 일치하지 않을경우 나머지 사용자의 퍼미션을 부여받게 됩니다.
☆ 퍼미션 및 소유권 변경 ☆
1. 파일 소유권 변경
- 사용하는 계정에 따라 파일 및 디렉토리를 생성할 경우 소유자와 그룹 소유자가 정해지게 됩니다.
- 새로운 파일 및 이미 존재하는 파일들을 원하는 소유자와 그룹 소유자로 변경할 수 있습니다.
* chown 명령어
[사용방법] # chown [option] [계정명]:[그룹명] filename
# chown [option] [uid].[gid] filename
- 파일의 소유권을 변경하거나 소유권과 그룹 소유권 변경할 때 사용하는 명령어 입니다.
- 변경 전후의 계정에 대한 권한을 가지고 있어야 하기 때문에 root로 실행하는것이 일반적입니다.
- " -R " 하위 디렉토리까지 소유자와 그룹 소유자를 변경
* chgrp 명령어
[사용방법] # chgrp [ option ] [ 그룹명 | gid ] filename
- 그룹의 소유권만을 변경하고자 할 경우 사용하는 명령어 입니다.
- " -R " 하위 디렉토리까지 그룹 소유자를 변경
2. 파일 퍼미션 변경
- root 사용자 혹은 파일의 소유주만이 파일의 퍼미션을 변경할 수 있습니다.
- 상대모드와 절대모드 두가지를 사용할 수 있습니다.
- 상대모드 : 기호로 표현하여 사용하는 방법으로 권한 부여시 " + ", 권한 제거시 " - " 기호를 사용합니다.
- 절대모드 : 파일과 디렉토리의 퍼미션을 8진 수의 숫자로 표현합니다.
* 상대 모드 (Symbolic method)
[사용방법] chmod [ mode ] file_name
* 절대 모드 (absolute method)
[사용방법] # chmod mode file_name
▷ rwxrw-r--의 절대 모드 표현
▷ rw-r-xr-x의 절대 모드 표현
▷ r-xr--r--의 절대 모드 표현
☆ 특별한 퍼미션 ☆
1. SetUID (4000) 퍼미션
- 파일 및 명령어가 실행되는 동안 실행한 사용자가 아닌 파일 소유주의 권한을 부여하게 되는 퍼미션 값입니다.
passwd 명령어를 사용하여 패스워드를 변경하고자 할 경우 /etc/passwd 파일과 /etc/group 파일은 누구나가 읽을 수 있지만 /etc/shadow 파일은 보안상 root 사용자 이외에는 읽을 수 없습니다.
패스워드를 변경하려면 /etc/shadow 파일을 읽고 저장해야 하는데 이러한 경우에 passwd 명령어에 setuid 정책을 사용하여 명령어가 실행되는 동안은 root 권한을 갖도록 해줄 수 있습니다.
패스워드를 변경하려면 /etc/shadow 파일을 읽고 저장해야 하는데 이러한 경우에 passwd 명령어에 setuid 정책을 사용하여 명령어가 실행되는 동안은 root 권한을 갖도록 해줄 수 있습니다.
2. setGID (2000) 퍼미션
- 파일 및 명령어가 실행되는 동안에는 그룹 소유주의 권한을 가지게 하는 퍼미션 값입니다.
setgid 권한을 적용할 경우 주의할 것은 디렉토리입니다. 디렉토리에 setgid 권한을 부여하면 명시된 디렉토리 하위에 생성되는 디렉토리는 동일한 setgid 권한을 가지게 됩니다.
3. Sticky bit (1000) 퍼미션
- 모든 사용자가 읽고, 쓰고, 삭제가 가능합니다.
- 파일 삭제는 오로지 소유주만 삭제할 수 있습니다.
- 대표적인 sticky bit 가 적용된 디렉토리는 " /tmp ", " /var/tmp " 입니다.
'Server H&S > Server Basic' 카테고리의 다른 글
[ Linux 공부 - 1 ] 기본 4 (0) | 2010.09.05 |
---|---|
[ Linux 공부 - 1 ] 기본 3 (0) | 2010.09.04 |
[ Linux 공부 - 1 ] 기본 2 (0) | 2010.09.03 |
[ Linux 공부 - 1 ] 기본 1 (1) | 2010.09.02 |
리눅스 공부 INDEX ( 공부 일차에 따른 명령어 ) - Fedora 13 사용 (0) | 2010.09.02 |