[Linux] 파일 접근 권한 관리

IkSun·2023년 4월 13일

리눅스실습

목록 보기
5/14
post-thumbnail

파일 속성

⏹ 파일 속성 정보 보기 : ls -l 명령

-rw-r--r-- 1 root root 223 127 21:37 /etc/hosts
  • 파일의 속성
    • - : 파일의 종류(- : 일반 파일, d : 디렉토리)
    • rw-r--r-- : 접근 권한 표시
    • 1 : 하드 링크의 개수
    • root : 파일 소유자의 로그인 ID
    • root : 파일이 속한 그룹 이름
    • 233 : 파일의 크기(바이트 단위)
    • 12월 7 21:37 : 파일이 마지막으로 수정된 날짜
    • /etc/hosts : 파일명

⏹ ls -l vs stat

  • change 와 modify 의 차이?

파일 접근 권한

⏹ 접근 권한 종류

권한파일디렉토리
읽기 (read)파일을 읽거나 복사할 수 있다.ls 명령으로 디렉토리 명령 확인(ls 명령의 옵션은 실행권한이 있어야 사용할 수 있다.)
쓰기 (write)파일을 수정, 이동, 삭제할 수 있다(디렉토리에 쓰기 권한이 있어야 한다.)파일을 생성하거나 삭제할 수 있다.
실행 (excute)파일을 실행할 수 있다.(셸 스크립트나 실행 파일의 경우)cd 명령을 사용할 수 있다. 파일을 디렉토리로 이동하거나 복사할 수 있다.
  • 디렉토리에 읽기 권한이 있어야 ls 명령어를 사용할 수있고, 쓰기 권한이 있어야 mv,rm 등 명령어를, 실행 권한이 있어야 cd 명령어가 동작한다.

⏹ 접근 권한 표기 방법

-rw-r--r-- 1 root root 223 127 21:37 /etc/hosts
  • rw-: 소유자 root 가 read 와 write 권한이 있다
  • r-- : 그룹에 속한 유저들은 이 파일에 대해서 read 권한만 있다
  • r-- : 기타 사용자 다른 사람들은 이 파일에 대해서 read 권한만 있다

    u1 의 cat 명령어 실행은 read 권한이 있어야 출력을 할 수 있는데 누구의 권한에 의해서 cat 이 동작하는지?

    • u1 이라는 유저가 어떤 그룹에 속해있는지에 따라 달라진다. 만약 소유자가 아닌 root 라고 하는 그룹안에 사용자 리스트에 속해 있다면 그룹 사용자의 read 권한으로 cat 명령어를 수행한다고 볼 수 있다.

⏹ 접근 권한 변경 명령 : chmod

  • 기능 : 파일이나 디렉토리의 접근 권한을 변경한다.
  • 형식 : chmod [옵션] 권한 파일 (디렉토리)
  • 옵션 : -R : 하위 디렉토리까지 모두 변경 가능
    • 기호 모드 : 접근 권한을 변경하기 위해 문자와 기호를 사용하여 권한을 표시 (복잡하면서도 다양한 기능으로 권한을 표현할 수 있다)
    • 숫자 모드 : 접근 권한을 변경하기 위해 숫자를 사용 (일반적으로 숫자를 많이 사용)

기호를 이용한 파일 접근 권한 변경

⏹ 기호 모드의 구성 요소

chmod 의 기호모드 : 사용자 카테고리 문자, 연산자 기호, 접근 권한 문자

구분문자/기호의미
u파일 소유자
사용자 카테고리 문자g파일 소유자 그룹
o소유자와 그룹 이외의 기타 사용자
a전체 사용자
+권한 부여
연산자 기호-권한 제거
=접근 권한 설정 (아예 바꾸겠다)
r읽기 권한
접근 권한 문자w쓰기 권한
x실행 권한

ex) u-rwx : 파일 소유자에 대해서 r w x 권한을 를 뺴겠다

⏹ 기호 모드를 사용한 접근 권한 설정의 예

권한 표기의미
u+x소유자(u)에게 쓰기(w) 권한 부여(+)
o-r기타 사용자(o)의 읽기(r) 권한 제거(-)
+wx모든 사용자에게 쓰기(w) 와 실행(x) 권한 부여(+)
go=rwx그룹(g) 과 기타 사용자(o) 에게 읽기,쓰기,실행 권한부여(=)
u+x, go+w소유자(u) 에게 실행(x) 권한을 부여하고(+) 그룹(g) 과 기타 사용자(o) 에게 쓰기(w) 권한 부여(+)

숫자를 이용한 파일 접근 권한 변경

⏹ 숫자로 환산하는 방법

  • 권한 유무를 1과 0으로 표기하고 숫자로 환산

⏹ 숫자 모드를 이용한 접근 권한 변경

chmod [0~7] [0~7] [0~7] 파일명 
chmod 444 text.txt # 소유자 그룹, 기타 모두 read 권한

기본 접근 권한 설정

⏹ 기본 접근 권한

  • 리눅스 시스템에 설정된 기본 값으로 변경 가능
    • 파일의 기본 접근 권한
      -rw-rw-r--
    • 디렉토리의 기본 접근 권한
      drwxrwxr-x

⏹ 기본 접근 권한 확인 및 변경 : umask

  • 기능 : 기본 접근 권한을 출력하거나 변경한다.
  • 형식 : umask [옵션] [마스크 값]
    • 디폴트에서 만들어지는것에서 이 마스크 만큼 그 조합을 빼겠다.
  • 옵션 : -S : 마스크 값을 문자로 출력한다.
  • 사용 예
    • umask 077 : 그룹과 others 에 대해서 rwx 권한을 모두 뺴버리겠다.
  • 만들고 나서 바꾸려면 chmod 로 작성해야하고 처음부터 umask 값을 설정해두면 이후 파일을 생성할 때
    접근 권한이 파일이든 디렉토리든 최대권한에서 내가 설정한 umask 만큼 뺸값이 적용되어 파일, 디렉토리가 생성되는것이다

⏹ 마스크 값의 적용 과정

  • 리눅스에서 디폴트로 파일에게 주는 최대 권한
    • rw-rw-rw-
    • 마스크 값 : 666
  • 리눅스에서 디폴트로 디렉토리에게 주는 최대 권한
    • rwxrwxrwx
    • 마스크값 : 777

⏹ 여러가지 마스크 값

마스크 값의 의미

마스크 값일반 파일디렉토리의미
022644755그룹과 기타 사용자는 읽기만 가능하다.
077600700그룹과 기타 사용자의 접근 권한을 모두 제거한다.
027640750그룹은 읽기와 실행만 가능하고 기타 사용자의 접근 권한을 모두 제거한다.

특수 접근 권한 설정

⏹ SetUID : 4***

  • SetUID 가 설정된 파일을 실행하면 해당 파일이 실행되는 동안에는
    파일을 실행한 사용자의 권한이 아니라 파일 소유저의 권한이 적용
touch set.exe
chmod 755 set.exe # 실행 권한을 부여
ls -l set.exe
# 결과 : -rwxr-xr-x 1 user1 user1 0 12월 12  16:46 set.exe

# SetUID 설정
chmod 4755 set.exe 
ls -l set.exe  # 소유자 rws
# 결과 : -rwsr-xr-x 1 user1 user1 0 12월 12  16:46 set.exe 
  • SetUID 사례 : passwd 명령
ls -l /usr/bin/passwd
# 결과 : -rwsr-xr-x 1 root root 59976 6월 18  04:35 /usr/bin/passwd

/etc/shadoww 라는 파일에 내가 passwd 라는 명령어를 통해서 변경한 비밀번호의 값을 저장할 수 있다

그렇다면 내가 shadoww 파일을 vi 로 열어서 수정할 수 있을까? \to 불가능

chsh 라는 명령어를 통해 bash 쉘이 로그인 쉘로 바뀌어 지게 되고 그 정보가 /etc/passwd 라는 파일에 저장되는데

/etc/passwd 또는 /etc/shadow 라는 파일의 권한은 -rwsr-xr-x 이다. 따라서 일반 유저들은 그룹에 대한 접근 권한인 r 과 x 만 있기 떄문에 읽고 실행시킬 순 있지만 수정이 불가

-rws 가 붙어있는 파일 : u1 이 실행파일을 시키면 u1 이 실행을 시켜도 이 실행파일이 root 권한으로 실행이 된다

⏹ SetGID : 2***

  • SetGID 가 설정된 파일을 실행하면 해당 파일이 실행되는 동안에는 파일 소유 그룹의 권한으로 실행
chmod 2775 set.exe
ls -l set.exe  # 그룹 r-s
# 결과 : -rwxr-sr-x 1 user1 user1 0 12월 12  16:46 set.exe

⏹ 스티키 비트 : 1***

  • 스티키 비트는 디렉토리에 설정
  • 디렉토리에 스티기 비트가 설정되어 있으면 이 디렉토리에는 누구나 파일을 생성 가능.
ls -ld /tmp  
# 결과 : drwxrwxrwt 19 root root 4096 12월 12  16:18 /tmp
chmod 1775 temp
ls -ld temp   # others : rwt
# 결과 : drwxrwxr-t 2 user1 user1 4096 12월 12  16:44 /tmp

tmp 라는 디렉토리는 누구나 다 접근을 해서 rwx 가 가능.
그렇지만 tmp 라는 파일은 다른 사람이 만든것은 w 할 수 없다.

  • 내가 쓴것은 나만 지울 수있고 다른 사람은 읽을 수 만 있다 -> 그렇게 하기 위해서 스티키 비트를 설정한다.

과제

1) text.txt 파일의 현재 접근 권한이 다음과 같다. 여기서 사용자와 그룹에 실행 권한을 부여하기 위한 명령으로 맞지 않은 것은 무엇인가?

-r--r--r-- 1 user1 user1 223 7월 10 17:41 test.txt
  1. chmod u+x,g+x test.txt
  2. chmod 554 test.txt
  3. chmod ug+x test.txt
  4. chmod 664 test.txt

정답 : 4번

2) text.txt 파일의 접근 권한을 소유자는 읽을 수만 있고, 그룹과 기타 사용자에게는 아무 권한도 주지 않으려 한다. 이를 숫자 모드로 바르게 수행한 것은 무엇인가?

  1. chmod 700 test.txt
  2. chmod 500 test.txt
  3. chmod 400 test.txt
  4. chmod 100 test.txt

정답 : 3번

3) 현재 umask 값이 022다. 이 상태에서 a.txt 파일과 linux 디렉터리를 생성했다. 이들의 접근 권한은 어떻게 생성되는가?

  1. 파일: 622, 디렉터리: 755
  2. 파일: 644, 디렉터리: 755
  3. 파일: 422, 디렉터리: 744
  4. 파일: 444, 디렉터리: 722

정답 : 2번

4) 리눅스는 사용자를 세 카테고리로 구분한다. 이 카테고리에 해당하지 않는 것은 무엇인가?

  1. 소유자
  2. 그룹
  3. 관리자
  4. 기타 사용자

정답 : 3번

5) 다음 중 파일의 속성은 어떤 명령으로 확인할 수 있는가?

  1. ls
  2. ls -a
  3. ls -i
  4. ls -l

정답 : 4번

6) 다음 접근 권한을 숫자로 표기하시오.

rwxr-xr-x

정답 : 755

7) 파일의 접근 권한을 확인했더니 ‘rwsr-xr-x'이었다. s가 의미하는 것은 무엇인가?

정답 : SetUID : 그 해당 파일을 실행하면 그 파일이 실행되는 동안에는 소유자의 권한으로 실행된다.

8) /bin 디렉터리에서 SetUID가 설정된 명령의 예를 세 개만 제시하시오.

정답 : /bin/passwd, /bin/su, /bin/sudo

  • /bin/passwd: 사용자의 암호를 변경하는 명령입니다. SetUID가 설정되어 있어, 일반 사용자도 암호를 변경할 수 있습니다.
  • /bin/su: 사용자 계정을 변경하는 명령입니다. SetUID가 설정되어 있어, 일반 사용자도 다른 사용자의 계정으로 변경할 수 있습니다.
  • /bin/sudo: 다른 사용자의 권한으로 명령을 실행하는 명령입니다. SetUID가 설정되어 있어, 일반 사용자도 root 권한을 가진 사용자의 권한으로 명령을 실행할 수 있습니다.
profile
공부한 것 기록용

0개의 댓글