본문 바로가기
linux

파일과 디렉토리의 권한 설정

by dongwookim 2023. 3. 2.

이번 시간에는 파일과 디렉토리에 권한을 어떻게 부여하고 또 권한을 받는 대상을 어떻게 설정하는지에 알아보고자 한다.

 

예시:
-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