728x90
728x170
chmod
- Change Mode
- 파일이나 디렉터리에 접근할 수 있는 허가권(Permission)을 설정하는 명령
- 다음의 모드로 지정
- 문자 모드(Symbolic Mode)
- 알파벳 기호를 사용
- 권한, 사용자, 설정 등 3가지로 나눌 수 있음.
- 권한의 표시
- r : 읽기 모드 (read)
- w : 쓰기 모드 (write)
- x : 실행 모드 (execute)
- 사용자의 지정
- u : 파일 소유자의 접근 권한
- g : 그룹에 속한 사람들에 대한 접근 권한
- o : 다른 사용자들에 대한 접근 권한
- a : all 의 약자로 파일 소유자, 그룹, 다른 사용자를 포함
- 설정 기호
- + : 접근 권한 설정
- - : 접근 권한 해제
- =
- 특정 권한만 지정할 때 사용
- 기존 권한을 초기화한 후에 지정한 권한만 설정
- 권한의 표시
- 권한, 사용자, 설정 등 3가지로 나눌 수 있음.
- 여러 사용자 계층의 권한 설정은 콤마(,) 로 분리해서 지정할 수 있음.
- 알파벳 기호를 사용
- 숫자 모드(Numberic Mode)
- 8진수의 값 사용
- 숫자(4, 2, 1, 0)을 조합하여 8진수의 값을 만들어 권한을 설정
- 권한에 따라 다음의 가중치를 부여하고, 2가지 이상의 권한을 사용하려면 가중치 값을 더해서 지정함.
- 권한에 따른 가중치
- 읽기 권한 : 4
- 쓰기 권한 : 2
- 실행 권한 : 1
- 예)
- 읽기, 쓰기, 실행 등 모든 권한을 부여할 경우 : 7
- 읽기 및 쓰기 권한을 부여할 경우 : 6
- 읽기 및 실행 권한을 부여할 경우 : 5
- 아무 권한도 설정하지 않을 경우 : 0
- 사용자 계층별 구분
- 기본 사용자 계층이 3계층이므로 숫자 3자리로 부여하여 접근 권한 지정
- 소유자 : 100의 자리에 배치
- 그룹 : 10의 자리에 배치
- 다른 사용자 : 1의 자리에 배치
- 기본 사용자 계층이 3계층이므로 숫자 3자리로 부여하여 접근 권한 지정
- 권한에 따른 가중치
- 8진수의 값 사용
- 문자 모드(Symbolic Mode)
(참고) 허가권(Permission)
더보기
- 허가권(Permission)
- 총 10개 영역으로 나눌 수 있음. (----------)
- 첫 번째 영역 (□---------)
- 파일의 종류(타입)
- 유형
- - : 일반 파일
- d : 디렉터리
- l : 링크 파일
- b : 블록 디바이스 (디스크 드라이버)
- c : 캐릭터 디바이스 (입출력 관련 특수 파일)
- p : named pipe (FIFO)
- s : 소켓
- 나머지 9개 영역 (-□□□□□□□□□)
- 각각 3개씩 나눌 수 있음.
- 구분
- 첫 번째 3개 영역 (-□□□------)
- 파일을 소유한 사용자(user)에게 적용되는 권한
- 두 번째 3개 영역 (----□□□---)
- 해당 그룹에 속한 소유자들(group)에게 적용되는 권한
- 세 번째 3개 영역 (-------□□□)
- 그 외의 사용자들(other)에게 적용되는 권한
- 첫 번째 3개 영역 (-□□□------)
- 각 3자리는 rwx로 표시됨.
- 표시
- 권한이 있는 경우 : 해당 문자
- 권한이 없는 경우 : -
- 권한 설명
- r : 읽기 권한 (read)
- w : 쓰기 권한 (write)
- x : 실행 권한 (execute)
- 파일과 디렉터리에 따라 다음과 같은 역할을 함.
- r
- 파일 : 파일의 내용을 볼 수 있는 권한
- 디렉터리 : 디렉터리 내부의 내용을 볼 수 있는 권한
- w
- 파일 : 파일의 내용을 수정할 수 있는 권한
- 디렉터리 : 디렉터리 내부에 파일을 생성 또는 삭제할 수 있는 권한
- x
- 파일 : 실행 파일을 실행시킬 수 있는 권한
- 디렉터리 : 디렉터리 내부로 접근할 수 있는 권한
- r
- 표시
- 첫 번째 영역 (□---------)
- 총 10개 영역으로 나눌 수 있음. (----------)
특수 권한
- 리눅스의 권한 체계는 3 계층에 3가지 권한을 부여하는 형태로 이루어짐.
- 3 계층 : 사용자(User), 그룹(Group), 기타 사용자(Other)
- 3가지 권한 : 읽기(Read), 쓰기(Write), 실행(Execute)
- 그러나 리눅스의 이러한 권한 체계로 원할한 시스템을 운영할 수 없음.
- 일반 사용자가 작업을 하다보면 간혹 root 권한이 필요한 경우가 있음.
- 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 를 설정할 경우
- starrykss 사용자가 yuloje 사용자가 생성한 파일을 삭제할 수 있게 됨.
- starrykss 라는 사용자도 파일 생성이 가능하고, yuloje 라는 사용자도 파일 생성이 가능함.
- Sticky-Bit 은 group과 other 계층 사용자에게 사용할 수 있으나, 두 계층이 함께 사용하도록 하는 것은 불가능함.
- 표시
- 무조건 other 계층에 설정하도록 되어 있음.
- 설정하면 other 계층 권한 부분 의 x자리가 t로 표시됨. (-------□□t)
- 실행 권한이 없는 경우(그룹의 공유 모드로 사용한 경우), 대문자 T로 표시됨. (-------□□T)
- 디렉터리에 설정되는 특수 권한
- Set-UID
- 특수 권한의 설정
- 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
- 1000의 자리 에 배치
- 문자 모드인 경우
- Set-UID, Set-GID, Sticky-Bit도 허가권(Permission) 설정 명령인 chmod를 사용하여 설정할 수 있음.
사용법
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) : 디렉터리 내부의 파일을 생성 및 삭제할 수 있는 권한
- Group : Read(4), Write(2), Execute(1)
- 3070
$ chmod 3070 /project
728x90
그리드형(광고전용)
'System Software > Linux' 카테고리의 다른 글
[리눅스 명령어] chgrp (0) | 2022.03.07 |
---|---|
[리눅스 명령어] chown (0) | 2022.03.07 |
[리눅스 명령어] vi (0) | 2022.03.07 |
[리눅스 명령어] man / manpath / whatis / apropos / whereis / info (0) | 2022.03.07 |
[리눅스 명령어] uname (0) | 2022.03.05 |
[리눅스 명령어] date (0) | 2022.03.05 |
[리눅스 명령어] users / who / whoami / w / logname / id / groups (0) | 2022.03.04 |
[리눅스 명령어] newgrp (0) | 2022.03.03 |