그냥 사는 이야기

리눅스 퍼미션(Permission) 본문

Development/System

리눅스 퍼미션(Permission)

없다캐라 2020. 10. 26. 15:05
반응형
  • id - 사용자 ID 정보를 표시한다.
  • umask - 기본 파일 퍼미션을 설정한다.
  • su - 다른 사용자로 쉘을 실행한다.
  • sudo - 다른 사용자로 명령어를 실행한다.
  • chmod - 파일 모드를 변경한다.
  • chown - 파일 소유자를 변경한다.
  • chgrp - 파일 그룹 소유자를 변경한다.
  • passwd - 사용자 비밀번호를 변경한다.

소유자, 그룹 멤버, 기타 사용자

$ file /etc/shadow
/etc/shadow: regular file, no read permission
$ less /etc/shadow
/etc/shadow: Permission denied

자신의 사용자 ID 정보를 확인하기 위해서는 id 명령어를 사용한다.

$ id
uid=1000(ubuntu) gid=1000(ubuntu) groups=1000(ubuntu),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),117(netdev),1001(docker)

사용자 계정은 /etc/passwd 파일에 정의되어 있고, 그룹은 /etc/group 파일에 정의되어 있다. 사용자 계정과 그룹이 생성되면, 이 파일들은 사용자 비밀번호에 관한 정보를 가진 /etc/shadow에 덧붙여 수정된다. 각각의 사용자 계정은 /etc/passwd 파일에 그 사용자 이름, uid, gid, 실제 사용자 이름, 홈 디렉토리와 로그인 쉘 정보가 저장된다.

읽기, 쓰기, 실행

파일 속성의 나머지 9개의 문자는 파일 모드(file mode)라고 불린다. 그것은 파일 소유자, 파일 소유 그룹, 기타 사용자에 대한 읽기, 쓰기, 실행권한을 나타낸다.

<표> 퍼미션 속성

속성 파일 디렉토리
r 파일 열기와 읽기를 허용한다. 실행 속성이 설정되어 있으면 디렉토리의 내용물을 나열할 수 있게끔 허용한다.
w 이 속성은 파일 쓰기 또는 잘라내기는 허용하지만, 이름 변경이나 파일 삭제는 허용하지 않는다. 파일 삭제나 파일 이름 변경은 디렉토리 속성에 의해 결정된다. 실행 속성이 설정되어 있으면 디렉토리 내의 파일들을 생성, 삭제, 이름 변경이 가능하도록 허용한다.
x 파일이 프로그램으로 처리되고 파일이 실행되도록 허용한다. 스크립트 언어에서 작성된 프로그램 파일들은 읽기 기능으로 설정되어 있어야만 실행 가능하다. 디렉토리에 들어올 수 있도록 허용한다(예를 들어 cd directory 같이).

chmod - 파일 모드 변경

8진법 표현

<표> 2진법과 8진법의 파일 모드

8진법 2진법 파일모드
0 000 ---
1 001 --x
2 010 -w-
3 011 -wx
4 100 r--
5 101 r-x
6 110 rw-
7 111 rwx

 

$ > foo.txt
$ ls -l foo.txt
-rw-r--r-- 1 ubuntu ubuntu 0 Oct 14 16:47 foo.txt
$ chmod 600 foo.txt
$ ls -l foo.txt
-rw------- 1 ubuntu ubuntu 0 Oct 14 16:47 foo.txt

7 (rwx), 6 (rw-), 5 (r-x), 4 (r--), 0 (---).

기호 표현

<표> chmod 기호 표기법

기호 의미
u user의 약자로, 파일이나 디렉토리 소유자를 의미한다.
g 그룹 소유자.
o others의 약자로, 기타 사용자를 의미한다.
a all의 약자로, u, g, o의 조합이다. 

 

<표> chmod 기호 표기법 예제

표기법 의미
u+x 소유자에게 실행 권한을 추가한다.
u-x 소유자의 실행 권한을 제거한다.
+x 모든 사용자(소유자, 그룹 기타 사용자)에게 실행 권한을 추가한다. a+x와 동일하다.
o-rw 소유자와 그룹 소유자가 아닌 사용자의 읽기, 쓰기 권한을 제거한다
go=rw 그룹 소유자와 기타 사용자가 읽기, 쓰기 권한을 갖도록 한다 그룹 소유자든 기타 사용자든 이전에 실행 권한을 가지고 있다면 그것은 제거된다.
u+x, go=rw 소유자에게 실행 권한을 추가하고 그룹 소유자와 기타 사용자에게 읽기, 쓰기 권한을 설정한다. 복수 지정은 콤마를 사용하여 구분한다.

사용자 ID 변경

다른 사용자 ID를 사용하는 세 가지 방법은 아래와 같다.

  1. 로그아웃 후 다른 사용자로 로그인하기
  2. su 명령어 사용하기
  3. sudo 명령어 사용하기

su - 다른 사용자 ID와 그룹 ID로 쉘 실행

$ su -
Password:
#

sudo- 다른 사용자로 명령어 실행

일반 사용자에게 반복되는 문제 중 하나는 슈퍼유저 특권이 필요한 소프트웨어 설치와 업데이트, 시스템 설정
파일 편집, 장치 접근과 같은 작업들을 어떻게 수행하는가이다. 윈도우즈 세계에서는 이런 것들은 종종 관리자
권한이 주어진 사용자에 의해 진행된다. 사용자에게 이 작업들의 실행이 허용되고 또한 실행된 프로그램은 동일
한 기능을 가지고 활성화된다. 이는 대부분의 경우에는 적절하지만 바이러스와 같은 멀웨어(악성 소표트웨어)의
실행조차도 허용한다.

chown - 파일 소유자와 그룹 변경

처음 sudo 명령의 사용 이후에는 왜 유저에게 비밀번호 입력을 위한 프롬프트가 나타나지 않았나? 그 이유는 sudo의 환경설정에 “신뢰”할 수 있는 시간이 지정되어 있기 때문이다.

chown [owner][:[group]] file ...
인자 결과
bob 파일의 소유권을 현 소유자에서 bob으로 변경한다.
bob:users 파일의 소유권을 현 소유자에서 bob으로 변경하고 파일 그룹 소유자를 users 그룹으로 변경한다.
:admins 파일 그룹 소유자를 admins 그룹으로 변경한다. 파일 소유자는 바뀌지 않는다.
bobs: 파일 소유자가 현 소유자에서 bob으로 변경되고 그룹 소유자는 bob의 로그인 그룹으로 변경된다.

 

chgrp - 그룹 소유권 변경

Comments