UMASK
새로운 파일, 디렉토리 생성 시 기본 허가권을 결정하는 기준이 되는 값(기본값 : 022)
기본 허가권
-디렉토리 : 777 (rwxrwxrwx)
-파일 : 666(rx-rx-rx-)
|
디렉토리 |
파일 |
기본값 |
777 |
666 |
UMASK |
022 |
022 |
결정된 허가권 |
755 |
644 |
if UMASK 077 077
if 결정된 허가권 600 600
#umask umask 확인
#umask [허가권] umask 변경
홈디렉토리에 적용되는 UMASK
/etc/login.defs
umask 값 확인
파일과 디렉토리 생성 후 확인
파일의 기본값 666, 디렉토리 기본값 777에서 umask가 적용되어 그룹과 기타 사용자의 쓰기 권한이 없는것 확인
umask 지정 후 변경된 허가권 확인
특수권한
1. SetUID
실행 파일에 한해서 설정이 가능하며 SetUID 설정이 되어있는 경우, 실행순간만 실행한 사용자가 아닌 파일을 소유한 사용자(UID)의 권한으로 프로세스가 실행된다. 매번 root가 권한을 부여해 주지않아도 되기 때문에 매우 효율적이다.
비밀번호가 저장되어 있는 shadow파일의 권한은 막혀있다.
그런데 우리가 passwd명령어를 사용하면 비밀번호를 바꿀 수 있다.
위와같이 passwd명령어 파일의 허가권을 보면 소유자 실행권한에 x대신 s가 있는것을 볼 수 있다.
passwd명령어에는 SetUID가 설정되어 있어 우리가 비밀번호를 바꾸려고 실행하는 순간에는 root의 권한을 사용할 수 있어 비밀번호를 바꿀 수 있는 것이다.
# chmod u+s [파일명]
# chmod 4[허가권] [파일명]
파일을 두개 만든 뒤 하나는 실행권한을 주며 SetUID를 설정시키고 하나는 실행권한 없이 SetUID를 설정한다.
소유자 권한 필드의 실행권한에 S와 s가 있는 것을 확인 할 수 있다.
x권한이 없었을 경우 S
x권한이 있었을 경우 s
SetUID라는 파일에 내용을 넣은 후 파일의 허가권을 400으로 설정
일반 사용자계정으로 SetUID파일 읽기를 시도
cat 명령어에 SetUID 설정 후 다시 시도
2. SetGID
프로세스가 실행한 사용자의 GID가 아닌 소유한 그룹의 GID권한으로 실행된다. SetGID가 디렉토리에 설정 되어 있는 경우, 디렉토리에서 만들어지는 모든 파일은 해당 디렉토리의 그룹 소유권을 갖는다. 팀 단위로 작업을 할 경우 모든 사용자가 파일을 공유하도록 할 때 사용된다.
# chmod g+s [파일명]
# chmod 2[허가권] [파일명]
Setgid라는 디렉토리 생성 후 before파일을 안에 생성
Setgid 디렉토리에 SetGID를 설정한다.
디렉토리의 그룹소유권 변경 후 디렉토리 안에 파일을 생성
그룹 소유권이 디렉토리에 걸린대로 그 그룹의 소유권으로 생성된다.
3. Sticky
모든 사용자가 읽기, 쓰기, 실행 가능하도록 하며, Sticky 비트가 설정 된 후에는 해당파일의 소유자와 root만 해당 파일을 삭제 할 수 있다.
# chmod o+t [파일명]
# chmod 1[허가권] [파일명]
디렉토리 두개 생성 후 하나는 777의 허가권 하나는 sticky설정과 함께 허가권 설정
기타 사용자 허가권 필드에 t 출력된다.
각각의 디렉토리에 파일 생성후 777의 허가권 설정
일반사용자 계정으로 내용 추가 가능여부 확인 후 삭제 가능여부 확인
sticky가 설정되어 있는 디렉토리의 파일은 삭제가 불가능하다.
속성
리눅스 파일에는 여러 속성이 있으며, 속성값에 따라 다양한 파일을 삭제하지 못할 수 있다. 파일마다 특정 속성을 부여하여 권한과는 다른 개념으로 파일을 관리할 수 있다.
1.chattr
속성 변경시 사용
# chattr [옵션] [파일]
옵션
+ 지정한 속성 추가
- 지정한 속성을 제거
= 기존 속성 초기화 후 지정한 속성만 부여
-i immutable(불변의)를 뜻하며 해당 파일의 수정, 삭제, 추가 및 링크 파일도 만들 수 없다.
-a append(첨가하다)를 뜻하며 해당 파일의 내용을 추가만 할 수 있으며 수정, 삭제가 불가능
2. lsattr
속성을 확인할 때 사용
# lsattr
실습을 위해 attr디렉토리 생성 후 resolv.conf를 복사해 넣는다.
resolv.conf 에 i속성 부여 후 확인
리다이렉션을 이용해 내용을 수정 시도(불가능)
파일 삭제 시도 (불가능)
i속성 제거 후 확인
내용 수정 시도 (가능)
파일 삭제 시도 (가능)
다시 실습환경 조성
a속성 부여 후 확인
내용 수정 시도 (불가능)
내용 추가 시도 후 확인 (가능)
파일 삭제 시도 (불가능)
a속성 제거 후 확인
내용 수정 시도 (가능)
파일 삭제 시도 (가능)
attr 디렉토리에 i속성 부여
디렉토리 안에 파일 생성 시도 (불가능)
디렉토리 안에 디렉토리 생성 시도 (불가능)
파일 이동(이전파일 삭제 후 이동) 시도 (불가능)
i속성 확인 후 i속성 삭제 & a속성 부여 후 확인
디렉토리 안에 파일 생성 시도 (가능)
파일 이동(이전파일 삭제 후 이동) 시도 (불가능)
attr디렉토리 안 확인
디렉토리 삭제 시도 (불가능)
ACL(Access Control List)
접근 제어 목록으로 허가권이 없더라도 디렉토리나 파일에 접근이 가능하도록 설정
# getfacl 파일과 디렉토리에 ACL 설정 확인
# setfacl 파일과 디렉토리에 ACL 설정
# getfacl [파일명]
# setfacl [옵션] [규칙] [파일명]
옵션
-m 권한을 수정할 때 사용
-x 권한을 삭제할 때 사용
-R 하위 디렉토리 및 파일의 권한을 변경
규칙
u:[UID]:[권한]
g:[GID]:[권한]
o:[권한]
ex) u:500:rwx UID로 500을 가지고 있는 사용자에게 r, w, x권한을 부여
=user:500:rwx u대신 user 사용 가능 (group, other도 가능)
=user:user1:rwx UID대신 유저명 사용 가능
=user:user1:7 숫자모드로 허가권 지정 가능
디렉토리 2개 생성 후 둘다 허가권 700 부여 후 확인
하나의 디렉토리에만 Kakao 계정으로 ACL적용 후 확인
Kakao계정으로 전환 후 ACL적용된 디렉토리 접근 후 새로운 디렉토리 생성
ACL적용되지 않은 디렉토리에 접근 시도 (불가능)
sudo
사용자 추가나, 시스템 종료 등 특정 명령어만 실행할 수 있는 권한을 부여하는것
sudo 명령으로 root권한을 실행하려면 특정 권한을 부여해야한다.
#visudo 저장 시 문법 확인하고 저장
= vi /etc/sudoers 문법이 잘못되어도 저장
[계정명] [호스트]=[명령어] [절대경로]
NOPASSWD: 명령어 앞에 쓰이며 매번 비밀번호 쓰지 않아도 실행할 수 있다.
*# which 명령어의 전체 주소(절대경로)를 보여주는 명령어
which 명령어를 이용하여 mkdir과 useradd 명령어의 절대경로를 찾은 후 vi로 sudoers파일을 연다.
위와 같이 형식으로 계정명, 호스트명, 명령어의 절대경로 입력 후 저장&닫기
설정한 계정으로 로그인 후 sudo 명령어 없이 sudoers파일에 저장한 명령어 시도 (불가능)
sudo명령어 사용후 설정한 명령어 시도 (가능)
'Linux' 카테고리의 다른 글
파일시스템&파티션 (0) | 2017.06.13 |
---|---|
프로세스 (0) | 2017.06.12 |
디렉토리 및 파일의 권한과 허가권&소유권 1 (0) | 2017.06.07 |
사용자 계정 관리2(명령어) (0) | 2017.06.06 |
사용자 계정 관리1 (파일) (0) | 2017.06.05 |