별의 공부 블로그 🧑🏻‍💻
728x90
728x170

chmod

  • Change Mode
  • 파일이나 디렉터리에 접근할 수 있는 허가권(Permission)을 설정하는 명령
  • 다음의 모드로 지정
    • 문자 모드(Symbolic Mode)
      • 알파벳 기호를 사용
        • 권한, 사용자, 설정 3가지로 나눌 수 있음.
          • 권한의 표시
            • r : 읽기 모드 (read)
            • w : 쓰기 모드 (write)
            • x : 실행 모드 (execute)
          • 사용자의 지정
            • u : 파일 소유자의 접근 권한
            • g : 그룹에 속한 사람들에 대한 접근 권한
            • o : 다른 사용자들에 대한 접근 권한
            • a : all 의 약자로 파일 소유자, 그룹, 다른 사용자를 포함
          • 설정 기호
            • + : 접근 권한 설정
            • - : 접근 권한 해제
            • =
              • 특정 권한만 지정할 때 사용
              • 기존 권한을 초기화한 후에 지정한 권한만 설정
      • 여러 사용자 계층의 권한 설정은 콤마(,) 로 분리해서 지정할 수 있음.
    • 숫자 모드(Numberic Mode)
      • 8진수의 값 사용
        • 숫자(4, 2, 1, 0)을 조합하여 8진수의 값을 만들어 권한을 설정
      • 권한에 따라 다음의 가중치를 부여하고, 2가지 이상의 권한을 사용하려면 가중치 값을 더해서 지정함.
        • 권한에 따른 가중치
          • 읽기 권한 : 4
          • 쓰기 권한 : 2
          • 실행 권한 : 1
        • 예)
          • 읽기, 쓰기, 실행 등 모든 권한을 부여할 경우 : 7
          • 읽기 및 쓰기 권한을 부여할 경우 : 6
          • 읽기 및 실행 권한을 부여할 경우 : 5
          • 아무 권한도 설정하지 않을 경우 : 0
        • 사용자 계층별 구분
          • 기본 사용자 계층이 3계층이므로 숫자 3자리로 부여하여 접근 권한 지정
            • 소유자 : 100의 자리에 배치
            • 그룹 : 10의 자리에 배치
            • 다른 사용자 : 1의 자리에 배치

 

(참고) 허가권(Permission)

더보기
  • 허가권(Permission)
    •  10개 영역으로 나눌 수 있음. (----------)
      • 첫 번째 영역 (□---------)
        • 파일의 종류(타입)
        • 유형
          • - : 일반 파일
          • d : 디렉터리
          • l : 링크 파일
          • b : 블록 디바이스 (디스크 드라이버)
          • c : 캐릭터 디바이스 (입출력 관련 특수 파일)
          • p : named pipe (FIFO)
          • s : 소켓
      • 나머지 9개 영역 (-□□□□□□□□□)
        • 각각 3개씩 나눌 수 있음.
        • 구분
          • 첫 번째 3개 영역 (-□□□------)
            • 파일을 소유한 사용자(user)에게 적용되는 권한
          • 두 번째 3개 영역 (----□□□---)
            • 해당 그룹에 속한 소유자들(group)에게 적용되는 권한
          • 세 번째 3개 영역 (-------□□□)
            • 그 외의 사용자들(other)에게 적용되는 권한
        • 각 3자리는 rwx로 표시됨.
          • 표시
            • 권한이 있는 경우 : 해당 문자
            • 권한이 없는 경우 : -
          • 권한 설명
            • r : 읽기 권한 (read)
            • w : 쓰기 권한 (write)
            • x : 실행 권한 (execute)
          • 파일과 디렉터리에 따라 다음과 같은 역할을 함.
            • r
              • 파일 : 파일의 내용을 볼 수 있는 권한
              • 디렉터리 : 디렉터리 내부의 내용을 볼 수 있는 권한
            • w
              • 파일 : 파일의 내용을 수정할 수 있는 권한
              • 디렉터리 : 디렉터리 내부에 파일을 생성 또는 삭제할 수 있는 권한
            • x
              • 파일 : 실행 파일을 실행시킬 수 있는 권한
              • 디렉터리 : 디렉터리 내부로 접근할 수 있는 권한

특수 권한

  • 리눅스의 권한 체계는 3 계층 3가지 권한을 부여하는 형태로 이루어짐.
    • 3 계층 : 사용자(User), 그룹(Group), 기타 사용자(Other)
    • 3가지 권한 : 읽기(Read), 쓰기(Write), 실행(Execute)
  • 그러나 리눅스의 이러한 권한 체계로 원할한 시스템을 운영할 수 없음.
    • 일반 사용자가 작업을 하다보면 간혹 root 권한이 필요한 경우가 있음.
      • root 암호를 알려줄 수도 없고, root 권한을 부여할 수도 없는 상황이 있음.
  • 이처럼 일부의 권한 허용 등을 위한 특별한 권한 이 있음.
    • 시스템 운영에 필요한 권한들이지만, 보안상의 위험을 초래할 수 있으므로 정확한 이해가 필요함.
    • 종류
      • Set-UID
        • 보통 실행 파일에 사용됨.
        • Set-UID가 부여된 파일을 실행 시, 해당 파일을 실행하는 동안에는 실행시킨 사용자의 권한이 아닌 해당 파일의 소유자 권한으로 인식함.
        • 표시
          • 실행 파일에 주로 사용하므로 설정하면 소유자 권한 부분  x자리에 s로 표기됨. (-□□s------)
          • 실행 권한이 없는 파일에 부여하면 대문자 S로 나타남. (-□□S------)
      • Set-GID
        • Set-UID 처럼 파일에 설정되어 있을 경우, 해당 파일을 소유한 그룹 권한으로 인식함.
        • 최근의 리눅스에서 Set-GID 는 주로 디렉터리에 설정됨.
          • 이 권한이 설정된 디렉터리에 사용자들이 파일이나 디렉터리를 생성하면 사용자가 속한 그룹에 상관없이 디렉터리 소유 그룹 권한으로 만들어짐.
        • 표시
          • 그룹 소유권 부분 에서 x자리에 s로 나타남. (----□□s---)
          • 실행 권한이 없을 경우, 대문자 S로 표기됨. (----□□S---)
      • Sticky-Bit
        • 디렉터리에 설정되는 특수 권한
          • 일종의 공유 디렉터리 로 사용됨.
        • 리눅스에서는 /tmp 디렉터리에 기본적으로 설정되어 있음.
        • 일반적인 권한 계층에서 그 외의 사용자들(other) 계층 권한에 rwx로 설정되어 있을 경우
          • starrykss 라는 사용자도 파일 생성이 가능하고, yuloje 라는 사용자도 파일 생성이 가능함.
            • starrykss 사용자가 yuloje 사용자가 생성한 파일을 삭제할 수 있게 됨.
              • Sticky-Bit 를 설정할 경우
                • starrykss와 yuloje 사용자들이 파일을 생성하는데에는 제한이 없지만, 삭제할 경우 본인이 생성한 파일 이외에는 불가능함.
        • Sticky-Bit  group other 계층 사용자에게 사용할 수 있으나, 두 계층이 함께 사용하도록 하는 것은 불가능함.
        • 표시
          • 무조건 other 계층에 설정하도록 되어 있음.
          • 설정하면 other 계층 권한 부분  x자리가 t로 표시됨. (-------□□t)
          • 실행 권한이 없는 경우(그룹의 공유 모드로 사용한 경우), 대문자 T로 표시됨. (-------□□T)
  • 특수 권한의 설정
    • Set-UID, Set-GID, Sticky-Bit도 허가권(Permission) 설정 명령인 chmod를 사용하여 설정할 수 있음.
      • 문자 모드인 경우
        • Set-UID  Set-GID : s 사용
        • Sticky-Bit : t 사용
      • 숫자 모드인 경우
        • 1000의 자리 에 배치
          • 예) 5755 : Set-UID(4), Sticky-Bit(1) 부여
        • Set-UID : 4
        • Set-GID : 2
        • Sticky-Bit : 1

 

사용법

chmod [option] mode file(s)

 

주요 옵션

옵션 설명
-R - 하위 디렉터리를 포함하여 디렉터리 내부의 모든 파일의 접근 권한 변경
- (--recursive)
-c - 변경된 정보 출력
- (--changes)
-f - 중요한 오류 메시지가 아니면 출력하지 않음.
- (--silent)
- (--quiet)
-v - 명령 진행 결과에 대한 정보를 자세히 출력함.
- (--verbose)
--version 명령어의 버전 정보 출력

 

사용 예

예 1
  • 다음 사용자에게 모든 권한을 부여
  • 다음의 명령과 같음
    • chmod a+rwx aa.txt
    • chmod 777 aa.txt
$ chmod ugo+rwx aa.txt

 

예 2
  • aa.txt 파일에 대해 소유자는 읽기(r), 쓰기(w), 실행(x)이 가능하고, 그룹 및 다른 사용자는 읽기(r)와 실행(x)만 가능하게 설정
$ chmod 755 aa.txt

 

예 3
  • 현재 디렉터리 안의 모든 파일을 다른 사용자가 읽기(r) 및 쓰기(w) 권한을 사용할 수 없도록 설정
  • 다음의 명령과 같음.
    • chmod o-rw * 
$ chmod o-r,o-w *

 

예 4
  • .txt 로 끝나는 파일들에 대해 모든 사용자가 읽을(r) 수 있도록 설정
$ chmod a+r *.txt

 

예 5
  • /etc/fstab 이라는 파일을 다른 사용자(other)는 읽을(r) 수만 있도록 설정
    • = 기호는 기존 권한을 초기화한 후에 지정한 권한만 설정할 때 사용
    • 사용자(user)그룹(group)은 영향 없향 없이 기존의 허가권이 유지됨.
$ chmod o=r /etc/fstab

 

예 6
  • 하위 디렉터리를 포함하여 현재 디렉터리의 모든 파일에 대해 그룹 및 다른 사용자가 접근할 수 없도록 설정
$ chmod -R go-rwx *

 

예 7
  • a.txt 파일에 어떠한 권한도 설정하지 않음.
  • 다음 명령과 같음.
    • chmod 0 a.txt
$ chmod a= a.txt

 

예 8
  • 소유자에게는 어떠한 권한도 설정하지 않고, 그룹 및 다른 사용자에게 읽기 및 쓰기 권한을 부여
  • 다음 명령과 같음.
    • chmod 066 a.txt
$ chmod 66 a.txt

 

예 9
  • a.out 이라는 파일에 Set-UID 를 설정
$ chmod u+s a.out

 

예 10
  • a.out 이라는 파일에 Set-GID 를 설정
$ chmod g+s a.out

 

예 11
  • data 디렉터리에 Sticky-Bit 설정
$ chmod o+t data/

 

예 12
  • /project 라는 디렉터리에 Set-GID를 부여하여 파일 생성시 자동으로 그룹 소유권을 지정하고, 그룹 사용자간의 공유 모드(Sticky-Bit)로 사용하도록 설정
$ chmod g+s,o+t /project

 

예 13
  • /project 라는 디렉터리를 해당 그룹에 속한 사용자들만 접근하고, 파일을 생성/삭제할 수 있도록 하고, 그룹 소유권을 자동 지정(Set-GID)하고, 공유(Sticky-Bit)하여 사용하도록 설정
    • 3070
      • Set-UID(4) : X
      • Set-GID(2) : O
      • Sticky-Bit(1) : O
    • 3070
      • Group : Read(4), Write(2), Execute(1)
        • Write(2) : 디렉터리 내부의 파일을 생성 및 삭제할 수 있는 권한 
$ chmod 3070 /project
728x90
그리드형(광고전용)
⚠️AdBlock이 감지되었습니다. 원할한 페이지 표시를 위해 AdBlock을 꺼주세요.⚠️
starrykss
starrykss
별의 공부 블로그 🧑🏻‍💻


📖 Contents 📖