리눅스 퍼미션(4,2,1)과 소유권 | chmod, chown, umask 명령어 | 스티키 비트

리눅스 퍼미션(Permission)권한(&허가)을 의미합니다. 유닉스 계열 운영 체제들은 MS-DOS 계열의 운영 체제들은 멀티 테스킹 시스템이 아니며 멀티 유저 시스템 역시 아닙니다. 보통 컴퓨터는 하나의 키보드와 모니터를 가지고 한 명이 사용하지만 멀티 유저 시스템인 리눅스는 한 명 이상이 사용할 수 있다는 것을 의미합니다.

유닉스 계열의 멀티 유저 시스템은 운영 체제 설계 초기부터 깊게 내장된 기능으로써 컴퓨터가 개인용으로 사용 되기 전에는 중앙 집권적이며, 중앙에 연결된 작은 단말기들로 구성되어 있던 것이 초기의 컴퓨터의 일반적인 구성이었습니다.

리눅스 시스템은 파일에 대한 소유권과 권한을 부여하여, 각 사용자가 자신의 파일에 대한 제어를 할 수 있습니다.

Ⅰ. 리눅스 퍼미션(Permission)

기본적인 Permission은 읽고, 쓰고, 실행하는 3가지의 속성을 가지고 있습니다. 파일과 디렉토리에 적용되는 속성은 각각 다음 표와 같습니다.

퍼미션 속성

파일

디렉토리

읽기(read)

· 파일 읽기(&열기)를 허용.
· 8진법 4

실행 속성이 설정되어 있으면 디렉토리의 내용물을 나열할 수 있게 끔 허용.

쓰기(write)

· 이 속성은 파일 쓰기 또는 잘라내기허용하지만, 이름 변경이나 파일 삭제는 허용하지 않음.
· 파일 삭제나 파일 이름 변경은 디렉토리 속성에 의해 결정
· 8진법 2

실행 속성이 설정되어 있으면 디렉토리 내의 파일들을 생성, 삭제, 이름 변경이 가능하도록 허용.

실행(excute)

· 파일이 프로그램으로 처리되고 파일이 실행(접근)되도록 허용. 스크립트 언어에서 작성된 프로그램 파일들을 읽기 기능으로 설정되어 있어야만 실행 가능.
· 8진법 1

디렉토리에 들어올 수 있도록 허용.

1. 권한(Permission)의 이해

2. 퍼미션 파일 속성의 이해

3. chmod 명령어

파일 및 디렉토리 모드를 변경하기 의해 chmod 명령어를 사용합니다. 변경은 슈퍼 유저만 가능하며, 8진수의 숫자로 표현합니다.

  • chmod
  • 파일(or 폴더) 권한 변경 명령어
  • 파일 관리 명령어
  • 기본 사용 옵션
chmod -[옵션] [권한 설정] [파일 or 디렉토리]

3.1 chmod 명령어 사용 예시

# 모든 사용자의 접근 차단
chmod 000 www
# 소유자는 읽고 쓰기 가능, 그룹과 사용자는 읽고 실행할 수 있음.
chmod 644 www
# 모든 사용자가 읽고 쓰고 실행 가능.
chmod 777 www
퍼미션의 소유권rw-r–r–
파일 종류Owner 퍼미션(user 권한)Group 퍼미션World 퍼미션

Ⅱ. 소유권(Ownership)과 그룹

소유자는 주로 서버 또는 웹사이트를 관리하는 소유권(root 사용자 및 유저)을 가진 사람을 의미합니다. 소유자 그룹은 어떤 파일 및 폴더에 특정 권한이 있는 사용자들끼리 공유하기 위해 사용되어진다고 이해할 수 있습니다.

1. rwx 속성의 소유권과 그룹

그룹 종류의미
소유자(Owner)파일이나 디렉토리를 처음 만들거나 소유권을 가진 사람
그룹(Group)사용자가 속한 그룹 및 그 그룹에 포함된 사람들
다른 사람들(Other)소유자 및 그룹에 속해있지 않은 사람들
모든 사람들(All)소유자, 그룹, 다른 사람들을 모두 합친 것.

2. chown 명령어

chown 명령어는 파일의 소유자와 그룹 변경을 하는 명령어입니다. Change와 Owner의 앞 글자를 따 와서 조합한 명령어입니다.

  • chown
  • 소유자 및 소유자 그룹 변경 명령어
  • 파일 관리 명령어
  • 기본 옵션
chwwn -[옵션] [소유자.소유그룹] [파일 or 디렉토리]

www 폴더 파일의 소유자는 testuser이며, 소유자 그룹은 nobody로써 nobody 그룹 안에 있는 사용자는 권한을 사용할 수 있음을 의미합니다.

# www 폴더의 소유권 testuser, 그룹 변경
chown testuser.nobody www 
# www 폴더의 소유권 testuser, 그룹을 재궈적으로 변경(하위 폴더 및 파일)
chown -R testuser.nobody www 

Ⅲ. umask 명령어

umask 명령어는 파일이 생성될 때 주어진 기본 퍼미션을 제어합니다. 파일 모드 속성에서 제거할 비트 마스크를 표현하기 위해 8진법을 사용하게 됩니다.

# 파일 생성 시 기본 허가권(Permission)은 644입니다. 
# umask 기본 명령어로 현재의 umask 값을 확인할 수 있습니다.
~]# umask
0022
  • umask 0022
  • 파일 생성 시
  • 파일: 644(666-022)
  • 디렉토리: 755(777 – 022)

Ⅳ. 리눅스 파일 특수 권한(스티키 비트 Sticky-Bit)

리눅스의 권한은 읽고(4), 쓰고(2), 실행(1)하는 3가지 권한 외에 추가로 또 하나의 권한이 있습니다. 특수 권한은 추가로 3가지 권한이 있습니다.

스티키 비트(Sticky-Bit)는 파일 읽기와 쓰기는 가능하지만 파일 삭제 및 이름 변경은 소유자만 할 수 있는 권한입니다. 스티키 비트가 있는 파일은 실행 권한 위치에 대문자 T가 표시됩니다.

~]# ll 
drwxrwxrwt  26 root root   4096 Feb  4 08:39 2020-2021
-rwxrwxrwT     1 root root     83 Feb  3 10:27 sort.txt

1. SetID: SetUID & SetGID

SetUID는 실행 파일에 줄 수 있는 권한이며, 어느 사용자가 실행하더라도 소유자와 그룹 권한으로 실행할 수 있습니다.

-rwsr--r-- 1 root root 1315 Jan 26 13:38 /etc/passwd

SetID 권한을 사용해야 하는 경우는 일반 사용자에게 해당 파일의 실행 권한을 부여해야 하는 경우입니다.

2. Sticky-Bit 권한 주기

# SetID 권한 추가 
chmod +s 파일명
# 스티키 비트 권한 추가 / t 옵션은 파일 및 디렉토리에 권한을 부여
chmod +t 파일명
# 스티키 비트 권한 삭제
chmod -t 파일명

Ⅴ. 리눅스 퍼미션과 그룹의 관계 예시

drwxr-xr-x 2 testuser nobody 6 Jun  6 18:08 a
drwxr-xr-x 2 testuser nobody 6 Jun  6 18:08 aa

testuser 사용자는 testuser로 서버에 접속하여 읽고,쓰고,실행의 권한을 가지고 있고, nobody에 속한 그룹의 계정은 읽고 실행이 가능합니다. 그 외에 모든 사용자가 읽고 실행이 가능합니다.

만약 Apache Web 서버의 .conf 파일이 설정이

User nobody
Group nobody

위와 같은 설정이라면,
Apache는 해당 폴더에 대해 nobody 소유권을 가지고 읽고 실행할 권한을 가지게 됩니다.

testuser nobody가 아닌 nobody nobody 소유권을 가지고 있다고 하면,
그룹의 권한 뿐 아니라 유저의 소유권을 가지고 읽고,쓰고,실행할 권한을 가지게 되는 것입니다.

구분

설명

소유자(nobody)

읽기, 쓰기, 실행 (7) 가능

그룹(nobody)

읽기, 쓰기, 실행 (7) 가능

기타 사용자(other)

읽기, 실행 (5)만 가능 (쓰기 불가)

여기서 기타사용자는 웹 접속만 가능한 사용자가 포함됩니다.

단순하게 생각하면 testuser이라는 기타 사용자(other)가 SSH에 접속해 있다면, other 권한으로 읽고 실행이 가능합니다. 또한 root가 소유자라면 기타 사용자에 속하지 않아, 기타 사용자의 권한을 사용하지 못합니다.

퍼미션이 711 인 경우

711 (rwx–x–x)에서 소유자는 읽기, 쓰기, 실행 모두 가능하지만 그룹과 기타 사용자는 실행(x)만 가능 (읽기 불가)인 상태로 적용된 이유는 다음과 같습니다. 경로를 알고 있으면 그 안 파일 실행이나 접근은 가능한 상태로 보안 목적으로 디렉토리 및 파일 내용을 숨기고 싶지만
접근은 허용해야 할 때 사용합니다.

Ⅵ. 참조

리눅스 커맨드 라인 인터페이스(Linux command line Interface-CLI)

Similar Posts

  • yum 명령어 | 사용법 | 옵션 | yum-utils | 패키지 관리와 저장소 관리🔝

    레드햇 계열의 리눅스 배포판에서 사용하는 YUM 명령어는 패키지 관리(설치, 업데이트, 제거)를 하는데 사용하는 명령어입니다. yum은 기존 패키지 시스템인 RPM의 의존성 문제를 해결하기 위해 제공되는 도구이며, RPM에서 수행할 수 있는 많은 작업을 수행할 수 있습니다. 목차Ⅰ. 리눅스 퍼미션(Permission)1. 권한(Permission)의 이해2. 퍼미션 파일 속성의 이해3. chmod 명령어Ⅱ. 소유권(Ownership)과 그룹1. rwx 속성의 소유권과 그룹2. chown 명령어Ⅲ. umask…

  • 리눅스 명령행 인자(Command-Line Argument)와 명령어 옵션

    ‘리눅스 명령행 인자(Command-Line Argument)‘는 ‘리눅스 명령어 인수‘, ‘명령 인자‘ 등으로도 불리며, 리눅스 커맨드 라인에서 명령어를 실행할 때 프로그램에 전달하는 매개변수를 뜻 합니다. 리눅스에서 “매개변수(Parameters)”는 일반적으로 프로그램이나 함수에 전달되는 값을 가리킵니다. 이 값은 해당 프로그램이나 함수가 실행될 때 필요한 입력 값으로 사용됩니다. 컴퓨터 프로그래밍에서 “매개변수(Parameters)”는 함수에 전달되는 값을 받아들이는 변수를 의미합니다. 이는 함수 정의에…

  • 리눅스 tee 명령어

    리눅스 tee 명령어는 배관시설에 비유해서 이름이 붙여진 명령어입니다. 파이프 모양과 똑같은 “T”에서 본따 tee 명령어이며 표준 출력으로 하나 이상의 다른 파일을 동시에 출력합니다. tee 명령어의 목적은 작업 진행 중 파이프라인(I)의 중간 내용을 알고 싶을 때 유용하게 사용할 수 있습니다. 목차Ⅰ. 리눅스 퍼미션(Permission)1. 권한(Permission)의 이해2. 퍼미션 파일 속성의 이해3. chmod 명령어Ⅱ. 소유권(Ownership)과 그룹1. rwx…

  • 리눅스 심볼릭 링크(Symbolic Link)와 하드 링크(Hard Link)

    리눅스에서 사용하는 심볼릭 링크(Symbolic Link)는 윈도우에서 사용하는 “바로가기”와 같은 기능을 가지고 있습니다. 소프트 링크 or 심링크로도 불리며, 하나의 파일에 여러 이름으로 생성할 수 있습니다. 목차Ⅰ. 리눅스 퍼미션(Permission)1. 권한(Permission)의 이해2. 퍼미션 파일 속성의 이해3. chmod 명령어Ⅱ. 소유권(Ownership)과 그룹1. rwx 속성의 소유권과 그룹2. chown 명령어Ⅲ. umask 명령어Ⅳ. 리눅스 파일 특수 권한(스티키 비트 Sticky-Bit)1. SetID: SetUID…

  • [Linux] stat 명령어 : 파일&파일 시스템 확인

    리눅스 stat 명령어는 파일 및 파일 시스템의 상태를 보여주는 명령어입니다. 파일에 대한 자세한 정보가 필요할 때 사용합니다. 목차Ⅰ. 리눅스 퍼미션(Permission)1. 권한(Permission)의 이해2. 퍼미션 파일 속성의 이해3. chmod 명령어Ⅱ. 소유권(Ownership)과 그룹1. rwx 속성의 소유권과 그룹2. chown 명령어Ⅲ. umask 명령어Ⅳ. 리눅스 파일 특수 권한(스티키 비트 Sticky-Bit)1. SetID: SetUID & SetGID2. Sticky-Bit 권한 주기Ⅴ. 리눅스 퍼미션과…

  • 리눅스 netstat 명령어, ifconfig 명령어

    리눅스에 netstat 명령어 및 ifconfig 명령어를 실행하기 위해 리눅스 서버에 명령어 실행을 위한 net-tools이 설치되어 있어야 합니다. 목차Ⅰ. 리눅스 퍼미션(Permission)1. 권한(Permission)의 이해2. 퍼미션 파일 속성의 이해3. chmod 명령어Ⅱ. 소유권(Ownership)과 그룹1. rwx 속성의 소유권과 그룹2. chown 명령어Ⅲ. umask 명령어Ⅳ. 리눅스 파일 특수 권한(스티키 비트 Sticky-Bit)1. SetID: SetUID & SetGID2. Sticky-Bit 권한 주기Ⅴ. 리눅스 퍼미션과…