리눅스 심화(2day) - 파일 속성 & 접근 권한

chaeyoung·2022년 5월 10일
0

리눅스(CentOS)

목록 보기
6/13

파일 속성

  • 사용자는 자신의 파일과 디렉토리에 접근 권한 설정
  • 리눅스는 파일에 무단 접근 방지 + 보호 기능 제공
파일 종류접근 권한하드 링크 개수파일 소유자소유자 그룹파일 크기(byte)마지막 수정 날짜파일명
-rw-r--r--1rootroot15812월 7 2016/etc/hosts
  • 접근 권한: 파일을 읽고 쓰고 실행할 수 있음

1. 파일 종류

  • - : 일반 파일
  • d : 디렉토리

file [파일]

  • 지정한 파일의 종류를 알려준다.
  • 문제 : /etc/hosts 파일의 종류를 확인하기

2. 파일 접근 권한 & 접근 권한 변경

  • 접근 권한 종류

    권한표기파일디렉터리
    읽기r파일 읽기, 복사ls 명령, 실행 권한이 있어야 사용 가능
    쓰기w파일 수정, 이동, 삭제파일 생성, 삭제
    실행x파일 실행cd 명령, 파일 디렉터리로 이동, 파일 디렉토리로 복사
  • 접근 권한 표기 방법

  • rw-r--r--

    • 소유자 권한: rw-
    • 그룹 권한: r--
    • 기타 사용자 권한: r--
  • 접근 권한 조합 ==> 해석해보자

    접근 권한 조합

chmod [옵션] [권한 모드 파일 or 디렉토리]

  • 파일이나 디렉토리의 접근 권한 변경
  • -R : 하위 디렉토리까지 모두 변경 가능

기호(심볼릭) 모드

  • 문자와 기호를 사용하여 접근 권한 변경
  • 거의 안씀 (나중에 필요하면 리눅스(1) 자료 참고)

숫자 모드(중요)

  • 숫자를 사용하여 접근 권한 변경
  • 권한의 유/무를 0과 1로 표기한 후 10진수로 다시 환산하여 표현
  • 카테고리별로 권합 조합에 따라 0~7로 나타냄

구성요소

  • 소유자(0~7)/그룹(0~7)/기타 사용자(0~7)

숫자 모드 구성 요소

  • 0: 아무 권한도 없음
  • 1: 실행 권한
  • 2: 쓰기 권한
  • 3: 실행, 쓰기 권한
  • 4: 읽기 권한
  • 5: 읽기, 실행 권한
  • 6: 쓰기, 읽기 권한
  • 7: 읽기, 쓰기, 실행 권한
  • 1,2,4만 외우자!!!

숫자 모드로 접근 권한 변경하기

  • chmod (0~7) (0~7) (0~7) 파일명
  • 항상 세 자리 수를 사용해야 함

문제 풀기

현재 접근 권한은 (rw-r--r--)
1. 소유자의 쓰기 권한을 제거

[root@localhost 20220511]# chmod 444 test
[root@localhost 20220511]# ls -ld test 
-r--r--r--. 1 root root 0 May 11 23:41 test
  1. 그룹에 쓰기와 실행 권한을 부여
[root@localhost 20220511]# chmod 474 test
[root@localhost 20220511]# ls -ld test
-r--rwxr--. 1 root root 0 May 11 23:41 test
  1. 기타 사용자에게 실행 권한을 부여
[root@localhost 20220511]# chmod 475 test
[root@localhost 20220511]# ls -ld test
-r--rwxr-x. 1 root root 0 May 11 23:41 test
  1. 그룹과 기타 사용자의 실행 권한을 제거
[root@localhost 20220511]# chmod 464 test
[root@localhost 20220511]# ls -ld test 
-r--rw-r--. 1 root root 0 May 11 23:41 test
  1. 모두에게 실행 권한 부여
[root@localhost 20220511]# chmod 575 test
[root@localhost 20220511]# ls -ld test 
-r-xrwxr-x. 1 root root 0 May 11 23:41 test
  1. 소유자에게 쓰기 권한 부여 그리고 그룹의 쓰기 권한 제거
[root@localhost 20220511]# chmod 755 test
[root@localhost 20220511]# ls -ld test 
-rwxr-xr-x. 1 root root 0 May 11 23:41 test
  1. 소유자의 권한만 남기고 나머지 사용자의 권한은 모두 제거
[root@localhost 20220511]# chmod 700 test
[root@localhost 20220511]# ls -ld test 
-rwx------. 1 root root 0 May 11 23:41 test

5. 기본 접근 권한

  • 파일이나 디렉토리는 기본 접근 권한이 자동으로 설정 됨
  • 일반 파일 생성시 최대 권한 : rw-rw-rw-(666)
  • 디렉토리 파일 생성시 최대 권한 : rwxrwxrwx(777)

umask

  • 기본 접근 권한 확인 및 변경
  • root 계정 umask 값: 0022
  • 일반 사용자 계정 umask 값: 0002
  • 파일이나 디렉토리 생성시 부여하지 않을 권한을 지정
    ==> (root 계정과 일반 사용자 계정에 따라 기본 접근 권한이 다르다!!!)
[root@localhost 20220511]# umask
0022
[root@localhost 20220511]# touch file
[root@localhost 20220511]# ls -ld file
-rw-r--r--. 1 root root 0 May 12 00:07 file

마스크 값 변경하기

  • 마스크 값 변경 시 파일 or 디렉토리 생성 때 적용되는 기본 접근 권한 변경
[root@localhost 20220511]# umask 077
[root@localhost 20220511]# umask
0077
[root@localhost 20220511]# touch file2
[root@localhost 20220511]# ls -ld file2
-rw-------. 1 root root 0 May 12 00:09 file2

문제

  1. 사용자 계정에서 최대 권한을 생각하기 umask를 확인
  2. 파일과 디렉토리를 생성
  3. 각 파일의 권한을 확인

6. 특수 접근 권한

  • 생략된 맨 앞자리는 #특수 접근 권한을 의미

종류

  • 0 : 일반 접근 권한
  • 1 : 스티키 비트
  • 2 : SetGID
  • 4 : SetUID

SetUID (4)

  • 해당 파일 실행시 파일을 실행한 사용자의 권한이 아닌 파일 소유자의 권한 으로 실행
  • SetUID 실행시 소유자의 실행 권한이 s로 표시
  • 파일만 설정 가능
[user@localhost 20220511]$ chmod 755 set.exe 
[user@localhost 20220511]$ ls -l set.exe 
-rwxr-xr-x. 1 user user 0 May 12 00:25 set.exe
[user@localhost 20220511]$ 
[user@localhost 20220511]$ chmod 4755 set.exe
[user@localhost 20220511]$ ls -l set.exe
-rwsr-xr-x. 1 user user 0 May 12 00:25 set.exe
  • passwd 명령도 SetUID 설정이 되었기 때문에 소유자인 root 권한으로 실행 되어야 암호 변경 가능

SetGID (2)

  • 해당 파일이 실행되는 동안에는 파일 소유 그룹 권한으로 실행
  • SetGID 실행시 그룹 실행 권한이 s로 표시
  • 파일, 디렉토리 설정 가능
    (디렉터리에 설정한 경우 해당 디렉터리에서 생성한 파일의 소유그룹은 해당 디렉터리 소유그룹으로 자동 설정됨
    )
[user@localhost 20220511]$ chmod 2755 set.exe
[user@localhost 20220511]$ ls -l set.exe 
-rwxr-sr-x. 1 user user 0 May 12 00:25 set.exe

스티키 비트

  • 디렉토리만 설정 가능
  • 스티키 비트가 설정된 디렉토리에는 소유자/root 외에는 다른 사용자가 생성 및 삭제할 수 없음
  • 기타 사용자 실행 권한이 t로 표시
[user@localhost 20220511]$ mkdir dir
[user@localhost 20220511]$ ls -ld dir
drwxrwxr-x. 2 user user 6 May 12 00:42 dir
[user@localhost 20220511]$ chmod 1777 dir
[user@localhost 20220511]$ ls -ld dir
drwxrwxr-t. 2 user user 6 May 12 00:42 dir
profile
안녕하세요! 풀스택 개발자가 되고싶은 윤채영입니다. 제 블로그에 방문해주셔서 감사합니다!~~

0개의 댓글