Linux에서 chmod 명령을 사용하는 방법
게시 됨: 2022-10-25 Linux의 chmod
명령을 사용하여 파일에 액세스하고 디렉토리를 검색하고 스크립트를 실행할 수 있는 사람을 제어합니다. 이 명령은 Linux 파일 권한을 수정합니다. 이 권한은 언뜻 보기에는 복잡해 보이지만 작동 방식을 알면 실제로는 매우 간단합니다.
chmod는 파일 권한을 수정합니다.
Linux에서 파일이나 디렉토리에 대해 수행할 수 있는 작업은 권한 집합을 통해 제어됩니다. 세 가지 권한 집합이 있습니다. 하나는 파일 소유자를 위한 집합이고 다른 하나는 파일 그룹의 구성원을 위한 집합이며 다른 모든 사람을 위한 마지막 집합입니다.
권한은 파일 또는 디렉토리에서 수행할 수 있는 작업을 제어합니다. 파일 읽기, 수정 또는 스크립트나 프로그램인 경우 실행을 허용하거나 방지합니다. 디렉토리의 경우 권한은 디렉토리로 cd
할 수 있는 사람과 디렉토리 내에서 파일을 생성하거나 수정할 수 있는 사람을 제어합니다.
chmod
명령을 사용하여 이러한 각 권한을 설정합니다. 파일이나 디렉토리에 어떤 권한이 설정되었는지 확인하려면 ls
를 사용할 수 있습니다.
파일 권한 보기 및 이해
-l
(긴 형식) 옵션을 사용하여 ls
가 파일 및 디렉토리에 대한 파일 권한을 나열하도록 할 수 있습니다.
ls -l
각 줄에서 첫 번째 문자는 나열되는 항목의 유형을 식별합니다. 대시( -
)이면 파일입니다. 문자 d
이면 디렉토리입니다.
다음 9자는 세 가지 권한 집합에 대한 설정을 나타냅니다.
- 처음 세 문자는 파일을 소유한 사용자에 대한 권한( 사용자 권한 )을 나타냅니다.
- 가운데 세 문자는 파일 그룹의 구성원에 대한 권한( 그룹 권한 )을 나타냅니다.
- 마지막 세 문자는 처음 두 범주( 기타 권한 )에 속하지 않는 사람에 대한 권한을 나타냅니다.
각 권한 집합에는 세 개의 문자가 있습니다. 문자는 권한 중 하나의 존재 여부를 나타내는 표시기입니다. 대시( -
) 또는 문자입니다. 문자가 대시인 경우 권한이 부여되지 않았음을 의미합니다. 문자가 r
, w
또는 x
인 경우 해당 권한이 부여된 것입니다.
문자는 다음을 나타냅니다.
- r : 읽기 권한. 파일을 열고 내용을 볼 수 있습니다.
- w : 쓰기 권한. 파일을 편집, 수정 및 삭제할 수 있습니다.
- x : 실행 권한. 파일이 스크립트 또는 프로그램이면 실행(실행)할 수 있습니다.
예를 들어:
-
---
는 권한이 전혀 부여되지 않았음을 의미합니다. -
rwx
는 모든 권한이 부여되었음을 의미합니다. 읽기, 쓰기 및 실행 표시기가 모두 있습니다.
스크린샷에서 첫 번째 줄은 d
로 시작합니다. 이 줄은 "archive"라는 디렉토리를 나타냅니다. 디렉토리의 소유자는 "dave"이고 디렉토리가 속한 그룹의 이름은 "dave"라고도 합니다.
다음 세 문자는 이 디렉토리에 대한 사용자 권한입니다. 소유자에게 모든 권한이 있음을 보여줍니다. r
, w
및 x
문자가 모두 있습니다. 이것은 사용자 dave에게 해당 디렉토리에 대한 읽기, 쓰기 및 실행 권한이 있음을 의미합니다.
세 개의 문자 중 두 번째 세트는 그룹 권한이며 rx
입니다. 이는 dave 그룹의 구성원이 이 디렉토리에 대한 읽기 및 실행 권한을 가지고 있음을 보여줍니다. 즉, 디렉토리에 있는 파일과 내용을 나열할 수 있고 해당 디렉토리로 cd
(실행)할 수 있습니다. 쓰기 권한이 없으므로 파일을 생성, 편집 또는 삭제할 수 없습니다.
세 문자의 마지막 세트도 rx
입니다. 이러한 권한은 처음 두 가지 권한 집합의 적용을 받지 않는 사람에게 적용됩니다. 이 사람들("기타"라고 함)은 이 디렉토리에 대한 읽기 및 실행 권한이 있습니다.
요약하자면 그룹 구성원 및 기타 사용자는 읽기 및 실행 권한이 있습니다. 소유자인 dave라는 사용자에게도 쓰기 권한이 있습니다.
다른 모든 파일(mh.sh 스크립트 파일 제외)에 대해 dave와 dave 그룹의 구성원은 파일에 대한 읽기 및 쓰기 속성을 갖고 나머지는 읽기 권한만 가집니다.
mh.sh 스크립트 파일의 특수한 경우 소유자 dave와 그룹 구성원은 읽기, 쓰기 및 실행 권한이 있고 나머지 구성원은 읽기 및 실행 권한만 있습니다.
권한 구문 이해
chmod
를 사용하여 권한을 설정하려면 다음과 같이 알려야 합니다.
- 대상: 권한을 설정하는 대상입니다.
- What : 우리는 어떤 변화를 만들고 있습니까? 권한을 추가하거나 제거합니까?
- which : 어떤 권한을 설정하고 있습니까?
표시기를 사용하여 이러한 값을 나타내고 u+x
와 같은 짧은 "권한 문"을 형성합니다. 여기서 "u"는 "사용자"(누가)를 의미하고 "+"는 추가(무엇을)를 의미하고 "x"는 실행 권한을 의미합니다. (어느).
우리가 사용할 수 있는 "who" 값은 다음과 같습니다.
- u : 파일의 소유자를 의미하는 사용자.
- g : 그룹, 파일이 속한 그룹의 구성원을 의미합니다.
- o : 기타,
u
및g
권한이 적용되지 않는 사람을 의미합니다. - : 모두, 위 의 모든 것을 의미합니다.
이들 중 어느 것도 사용되지 않으면 chmod
는 " a
"가 사용된 것처럼 동작합니다.
사용할 수 있는 "무엇" 값은 다음과 같습니다.
- – : 빼기 기호. 권한을 제거합니다.
- + : 더하기 기호. 권한을 부여합니다. 기존 권한에 권한이 추가됩니다. 이 권한과 이 권한만 설정하려면 아래에 설명된
=
옵션을 사용하십시오. - = : 등호. 권한을 설정하고 다른 사용자를 제거합니다.
사용할 수 있는 " which " 값은 다음과 같습니다.
- r : 읽기 권한.
- w : 쓰기 권한.
- x : 실행 권한입니다.
권한 설정 및 수정
모든 사람에게 모든 권한이 있는 파일이 있다고 가정해 보겠습니다.
ls -l new_ file.txt
사용자 dave는 읽기 및 쓰기 권한을 갖고 그룹과 다른 사용자는 읽기 권한만 갖기를 원합니다. 다음 명령을 사용하여 수행할 수 있습니다.
chmod u=rw,og=r new_file.txt
"=" 연산자를 사용한다는 것은 기존 권한을 모두 지운 다음 지정된 권한을 설정한다는 의미입니다.
이 파일에 대한 새 권한을 확인하겠습니다.
ls -l new_file.txt
예상대로 기존 권한이 제거되고 새 권한이 설정되었습니다.
기존 권한 설정을 제거 하지 않고 권한을 추가하는 것은 어떻습니까? 우리도 쉽게 할 수 있습니다.
편집을 마친 스크립트 파일이 있다고 가정해 보겠습니다. 모든 사용자가 실행할 수 있도록 해야 합니다. 현재 권한은 다음과 같습니다.
ls -l new_script.sh
다음 명령을 사용하여 모든 사람에 대한 실행 권한을 추가할 수 있습니다.
chmod a+x new_script.sh
권한을 살펴보면 실행 권한이 이제 모든 사람에게 부여되고 기존 권한이 그대로 유지되는 것을 볼 수 있습니다.
ls -l new_script.sh
"a+x" 문에 "a"가 없어도 동일한 결과를 얻을 수 있었습니다. 다음 명령도 마찬가지로 작동했을 것입니다.
chmod +x new_script.sh
여러 파일에 대한 권한 설정
한 번에 여러 파일에 권한을 적용할 수 있습니다.
현재 디렉토리에 있는 파일은 다음과 같습니다.
ls -l
확장자가 ".page"인 파일에서 "다른" 사용자에 대한 읽기 권한을 제거하려고 한다고 가정해 보겠습니다. 다음 명령으로 이를 수행할 수 있습니다.
chmod 또는 *.page
어떤 효과가 있었는지 확인해 보겠습니다.
ls -l
보시다시피 "기타" 범주의 사용자에 대해 ".page" 파일에서 읽기 권한이 제거되었습니다. 다른 파일은 영향을 받지 않았습니다.
하위 디렉토리에 파일을 포함하려면 -R
(재귀) 옵션을 사용할 수 있습니다.
chmod -R 또는 *.page
숫자 속기
chmod
를 사용하는 또 다른 방법은 소유자, 그룹 및 기타 사용자에게 부여하려는 권한을 세 자리 숫자로 제공하는 것입니다. 맨 왼쪽 숫자는 소유자의 권한을 나타냅니다. 가운데 숫자는 그룹 구성원의 권한을 나타냅니다. 맨 오른쪽 숫자는 다른 사용자에 대한 권한을 나타냅니다.
사용할 수 있는 숫자와 숫자가 나타내는 내용은 다음과 같습니다.
- 0: (000) 권한이 없습니다.
- 1: (001) 실행 권한.
- 2: (010) 쓰기 권한입니다.
- 3: (011) 쓰기 및 실행 권한.
- 4: (100) 읽기 권한입니다.
- 5: (101) 읽기 및 실행 권한.
- 6: (110) 읽기 및 쓰기 권한.
- 7: (111) 읽기, 쓰기 및 실행 권한.
세 가지 권한 각각은 십진수에 해당하는 이진 비트 중 하나로 표시됩니다. 따라서 바이너리로 101인 5는 읽고 실행을 의미합니다. 바이너리로 010인 2는 쓰기 권한을 의미합니다.
이 방법을 사용하여 원하는 권한을 설정합니다. 이러한 권한을 기존 권한에 추가하지 마십시오. 따라서 읽기 및 쓰기 권한이 이미 있는 경우 실행 권한을 추가하려면 7(111)을 사용해야 합니다. 1(001)을 사용하면 읽기 및 쓰기 권한이 제거되고 실행 권한이 추가됩니다.
다른 사용자 범주에 대해 ".page" 파일에 대한 읽기 권한을 다시 추가해 보겠습니다. 사용자 및 그룹 권한도 설정해야 하므로 이미 있는 것으로 설정해야 합니다. 이 사용자는 이미 읽기 및 쓰기 권한(6(110))이 있습니다. "기타"에 읽기 및 권한이 있기를 원하므로 4(100)로 설정해야 합니다.
다음 명령은 이를 수행합니다.
chmod 664 *.페이지
이렇게 하면 사용자, 그룹 구성원 및 기타 사용자에게 필요한 권한이 필요한 것으로 설정됩니다. 사용자와 그룹 구성원은 이미 있던 권한으로 재설정되고 다른 사용자는 읽기 권한이 복원됩니다.
ls -l
고급 옵션
chmod
에 대한 매뉴얼 페이지를 읽으면 SETUID 및 SETGID 비트와 제한된 삭제 또는 "고정" 비트와 관련된 몇 가지 고급 옵션이 있음을 알 수 있습니다.
99%의 경우에 chmod
가 필요한 경우 여기에 설명된 옵션을 통해 해결할 수 있습니다.
리눅스 명령어 | ||
파일 | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · tail · stat · ls · fstab · echo · less · chgrp · chown · rev · 보기 · 문자열 · 유형 · 이름 바꾸기 · zip · 압축 해제 · 마운트 · 언마운트 · 설치 · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · 패치 · 변환 · rclone · 파쇄 · srm | |
프로세스 | alias · screen · top · nice · renice · progress · strace · systemd · tmux · chsh · history · at · batch · free · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · timeout · wall · yes · kill · sleep · sudo · su · time · groupadd · usermod · groups · lshw · 종료 · 재부팅 · 정지 · poweroff · passwd · lscpu · crontab · 날짜 · bg · fg | |
네트워킹 | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · dig · finger · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw |
관련: 개발자 및 열광자를 위한 최고의 Linux 노트북