이번 시간에는 파일과 디렉토리에 권한을 어떻게 부여하고 또 권한을 받는 대상을 어떻게 설정하는지에 알아보고자 한다.
예시:
-rw-r--r-- 1 root root 2Mar 2 14:05 a.txt 라는 ls 명령어 결과를 분석하면 아래와 같다.
분석
- : 파일 -, 디렉토리 d, 심볼링크 l
rw-: user 권한(Owner), r 읽기 4, w 쓰기 2, x 실행 1
r--: group권한, r 읽기 4, w 쓰기 2, x 실행 1
r--: Other 기타사용자, r 읽기4, w 쓰기 2, x 실행 1
위의 4,2,1은 8진수로 나타낸 것이며 최대 7까지 나타낼 수 있다.
. : .ACL(Access Control List) 설정되지 않음. + ACL 설정
1 : 파일: 하드링크 갯수, 디렉토리: 디렉토리 내의 디렉토리 갯수
root : Owner(소유주)
root : Group(그룹)
2 : 용량 size
Mar 2 14:05 : 마지막으로 수정한 날짜
a.txt : name
권한: chmod
개체별로 권한 설정
# chmod ugoa+-rwxs 파일명 디렉토리명
8진수법
# chmod 644 파일명or디텍토리명
u g o
읽기 4 4 4
쓰기 2 2 2
실행 1 1 1
7 7 7
-R 옵션 하위 디렉토리에도 속성 상속
아래와 같이 3개의 텍스트 파일이 주어졌다고 가정 해보자
개체 별로 설정했을때 a파일의그룹,기타 사용자에 실행권한을 주고(+) 확인하면
x가 부여됨을 알 수 있다. 반대로 실행권한을 제거하고(-) 확인하면 x가 사라짐을 알 수 있다.
8진수법으로는 더 간편히 입력할 수 있다. 읽기(r):4 쓰기(w):2 실행(x):1로 계산을 하며 755는
owner가 rwx 그룹과 기타사용자는 r-x을 알 수 있다.
umask
Linux에서 파일과 디렉토리 생성시 최고권한으로 생성되는 것을 막는 명령어
파일의 최고 권한은 666, 디렉토리 777(s 권한이 없으면 접근불가) 이 값에서 umask값을 뺴고 생성
ex
디 777 파 666
022 022
755 644
기본 umask 값인 0022를 0044로 바꾸고 새 디렉토리 2를 만든 후 확인해 보면
777
- 044
--------
733 이므로 rwx, -wx, -wx로 나타남을 알 수 있다.
소유주 및 그룹 변경
chown
사용법
# chown owner 파일명
# chown :그룹 파일명
# chown owner:그룹 파일명
# 속성 전파 chown -R owner:group 디렉토리
a 파일에 a 사용자 권한, b 파일에 b 그룹 권한, 1 디텍토리에 a 사용자 및 a 그룹 권한을 부여하였다고 하자
그러면 아래와 같이 변경됨을 확인할 수 있다.
useradd : 유저추가
passwd 유저명: 암호추가
useradd a 로 유저 a를 생성하고 passwd a로 유저 a의 암호를 설정한다
echo 'It1' | passwd --stdin 유저명
한번에 암호 설정
:passwd는 재입력해야하는 번거로움이 있기에 해당 명령어로 한번에 비밀번호 설정이 가능하다.
아래와 같이유저 b를 생성하고 한번에 암호 설정하는 echo 명령어를 입력한다
임의의 사이즈 파일 만들기
truncate dd
truncate -s 10M b.txt
dd if=/dev/zero of=./c.txt bs=10M count=1
MAC
Modify: 내용 수정
Access: 접근
Change: 권한 변경
파일의 시간을 세분화 해서 볼 수 있는 기능을 MAC Time이라고 한다.
a.txt 파일에 cat 출력으로 접근했을 때 Access의 값이 변함을 확인할 수 있다.
cat >> a.txt 명령어로 추가 내용입력을 했을 떄 Modify의 값이 변하고 이떄 Change의 값도 같이 변화한다.
권한 변경만 했을 떄는 Change 값 하나만 변화한다.
특수권한
setuid 4000 기존에 실행 권한이 있으면 소문자 s 없으면 대문자 S
해당 파일이 실행되는 동안에는 소유주의 권한으로 실행됨
아래 예시에서 a.txt 파일이 8진수 4755일때 기존 소유주 권한 o 4655일떄 기존 소유주 권한 x 임을 알 수 있다.
setgid 2000 기존 실행 권한이 있으면 소문자 s 없으면 대문자 S
해당 파일이 실행되는 동안에는 그룹의 권한으로 실행됨
setgid 설정된 디렉토리 에서는 하위디렉토리 생성시 setgid가 생성된다.
아래 예시에서 8진수 6755 일떄 기존 그룹권한 o 6644일떄는 기존 그룹권한 x 임을 알 수 있다.
stikybit 1000 실행 권한이 있으면 소문자 t 없으면 대문자 T
해당 권한이 설정된 디렉토리에서는 파일이나 디렉토리를 생성한 사용자만 삭제 가능(단 root 제외)
아래 예시에서 기타 사용자 권한에 t가 있으므로 기존 기타 사용자 권한이 o 임을 알 수 있다.
'linux' 카테고리의 다른 글
디스크관리 1 (0) | 2023.03.06 |
---|---|
사용자 그룹관리(/etc/passwd와 /etc/group) (0) | 2023.03.04 |
압축과 아카이브 (0) | 2023.03.02 |
link 파일: hardlink와 Symboliclink (0) | 2023.03.02 |
리눅스 기본명령어 (0) | 2023.02.28 |