System/Linux

리눅스 파일 구조 및 퍼미션

Kaget 2020. 4. 27. 14:06

drwxr-x---     2             root root 4096 Dec 18 12:31 aa 
-  rw-------    1     root       root      2019       Dec 4 01:38       ab.txt


리눅스에서 ls -al을 입력했을 때 볼 수있는 파일 목록이다.

한 라인을 총 8구역으로 나눌 수 있다.

 

1. 파일종류

2. 퍼미션

3. 하드링크 수

4. 소유자

5. 그룹 소유자

6. 파일크기

7. 마지막 변경일

8. 파일명

 

 

파일의 종류

  1. - : 일반 파일
  2. d : 디렉토리
  3. l : 링크 파일
  4. b : 블록 디바이스 파일
  5. c : 문자 디바이스 파일

• 블록 디바이스 파일은 i/o의 최소 단위가 OS에서 정한 blk 단위
로 cache 가능하다.
• 문자 디바이스 파일은 순차적인 입출력하는 파일이다.

 

 

퍼미션

파일이나 디렉토리에 대한 사용자의 허가정도를 나타낸다.
사용자는 소유자(user), 그룹소유자(group), 이외 모든 사용자(other)로 구별한다.
접근 권한에는 r,w,x,t 등의 권한으로 구별한다.

구분 파일 디렉토리
r 읽기 파일 목록 보기
w 쓰기(수정) 파일 생성(삭제)
x 실행 들어가기

리눅스에서 파일을 삭제하고자 할때는 그 파일이 위치한 디렉토리 w,x 권한이 모두 있어야 한다.

 

퍼미션은 rwx rwx rwx 세 부분으로 나눠져 있는데

첫번째는 소유자 두번째는 그룹소유자 세번째는 이외 모든 사용자로 구성되어 있다.

rwx는 숫자로 나타낼 수 있는데 예를들면 rwxrw-r-- 은 764로 나타낼 수 있다.

r = 4, w=2, x=1 이다.

퍼미션은 2진수로 111 111 111 이런식으로 되어있기 때문에 이것을 10진법으로 변환하면

421 421 421 이런식이기 때문에 권한의 숫자가 저렇게 표현 되는 것이다.

퍼미션의 각 문자의 합으로 777(rwxrwxrwx) 이런식으로 표현한다.

 

 

chmod [옵션] [퍼미션 ] [파일] 
퍼미션 수정 명령
-옵션

  • -R : 디렉토리인 경우 하위 디렉토리와 파일까지 수정
  • ex)
    # chmod 755 a.txt
    # chmod -R 750 aa/

대상 : u(user), g(group), o(other), a(all)
operator : +(추가), -(삭제), =(변경하지 않음)
퍼미션 : r,w,x,s,t
ex)

# chmod -R 755 ./a/
(rwxr-xr-x)
# chmod o+x,g-x a.txt
# chmod g+wx, o-w, o+x a.txt

 

suid, sgid
실행 파일에만 적용된다. 파일이 실행된 프로세스는 실행한 사용자
소유로 실행 권한이 부여되지만 suid, sgid를 설정한 파일의 프로
세스는 소유자나 그룹 소유자의 ID로 실행된다. 실행 권한에 s로
명시된다.

suid : 4000, u+s
sgid : 2000, g+s

 

sticky bit
파일에 대해서 퍼미션과 관계없이 소유자만 삭제 가능하게 할 때
디렉토리에 other 권한을 제한한다.

sticky bit : 1000, o+t

 

권한을 총 정리 한다면

4777 : rwsrwxrwx (u+s)
2777 : rwxrwsrwx (g+s)
1777 : rwxrwxrwt (o+t)

이렇게 표현 할 수 있다.

 

 

chownchgrp
소유자 또는 그룹소유자 변경
# chown [-R] [유저명] [대상]
# chgrp [-R] [그룹명] [대상]

 

 

기본 퍼미션 설정
• 파일이 생성될 때 퍼미션중에 제외될 퍼미션을 지정
• 기본 umask는 022(0022)
- 디렉토리 퍼미션 : 755(0755), 파일 퍼미션 : 644(0644)

 

umask는 777-umask 를 기억해 두면 된다.

내가 기본 퍼미션으로 지정하고 싶은 퍼미션이 755라면 777-755를 계산하면 umask가 나온다.

ex) umask 022(0077)