chmod가 뭐지?

Reference

https://recipes4dev.tistory.com/175


자, 이게 뭐냐… 를 설명하기 전에 한가지 예시를 들어보자. 우리 전전전직장은 사규나 서류 양식, 실험 보고서 등을 각 폴더에 보관해두고 거기에 사원들이 접근할 수 있게 권한을 줬다. 부서가 좀 많이 있는데 내가 소속한 부서는 연구개발팀부였고 QC쪽도 같이 있었다. 그 외에도 학술영업 하는 부서, 경영지원 하는 부서, 생산쪽 부서… 이렇게 부서가 많다.

아무튼 이럴 경우 회사 입장에서 파일이나 폴더에 접근 권한을 설정할 수 있는데, 연차 신청서같이 회사원들이 공통적으로 사용하는 양식의 경우 회사원 전원이 읽고, 쓰고, 실행할 수 있게 해야 할 것이고 사규는 회사의 규칙이기 때문에 회사원들이 읽기는 해야 하지만 멋대로 수정하면 안되기때문에 회사원들에게는 읽기와 실행(읽을려면 실행해야 함…) 권한만 줄 수도 있다. 혹은 회사원들이 접근을 할 수는 있지만 각 부서의 부서장들에게만 쓰기 권한이 주어지거나, 특정 부서에서만 접근할 수 있는 경우도 있을 것이다.

그 외에도 리눅스에서는 sudo가 붙어야 정상적으로 실행되는 명령이 있다. 그 유명한 악마의 명령어 rm -rf /라던가, 뭉탱이로 폰트를 설치한다던가(리눅스는 폰트 파일을 글꼴이 설치되는 폴더로 복사하면 된다)… /usr/ 이런 폴더는 함부로 접근해서 파일 삭제하면 X되므로 sudo가 없으면 권한 없다고 작업이 안된다. 참고로 rm -rf/가 악마의 명령어인 이유는 쓰면 X되기때문이니까 절대 쓰지 말자. 누텔라가 악마의 잼인 이유랑 전혀 결이 다르다. 인생이 하드코어 모드로 바뀔수도 있다 하드코어 정도가 아니라 그냥 나이트메어 난이도지 

사촌(?)격인 chown은 파일의 소유권을, chgrp는 파일 그룹을 바꾼다. 나도 뭔지는 모름.


기본 양식

chmod [OPTION] [MODE] [FILE]

사용 방법

chmod u=rw file.text

file.text의 소유자(User)에게 읽기, 쓰기 권한을 준다.

chmod a=rwx file.text //전원에게 읽고/쓰고/실행할 수 있는 권한을 부여
chmod g-wx file.text //그룹(Group)에게서 쓰고/실행할 수 있는 권한 삭제
chmod u+w file.text //파일의 소유자에게 쓰기 권한을 부여

이런 식으로 +, -로 첨삭도 된다. 근데 +와 -는 이미 설정된 권한을 바탕으로 첨삭을 하는거라서 이 파일에 원래 어떻게 권한이 부여됐는지를 알아야 하는데 그걸 ls -l로 알 수 있다나… 사실 8진수로 많이 씀… 응? 근데 u g a 이런게 뭐예요? 그거는 인제 8진수 형식 설명하면서 알려드림.

8진수 형식은 chmod 755 이런 식으로 쓴다. 근데 저 세 개가 뭐임? 순서대로 파일의 소유자(user), 그룹(group), 그 외(other?) 사용자라고 보면 된다. 위 예시에 나온 a는 ugo 전체.

chmod 755 file.text

이게 뭔 소리냐… 저 숫자는 순서대로 파일 소유자, 그룹, 기타 사용자에 대한 rwx 권한이다. rwx는 각각 Read, Write, eXecution으로 읽고 쓰고 실행하는 권한을 나타낸다. 즉 저 명령어는 파일의 소유자는 rwx를 다 주고, 그룹과 다른 사용자에게는 읽고 실행하는 권한만 준다는 얘기이다. 예? 그걸 어떻게 아세요?

저기서 일단 u에 해당하는 7을 이진수로 바꾸면 111이다. r이 1, w가 1, x가 1이니까 111이고 8진수로 바꾸면 7이다. 마찬가지로 그룹과 다른 사용자의 권한인 5는 r, x는 1인데 w가 0이라 101, 5가 된다. 그럼 750은? 사용자는 모든 권한을 다 주고, 그룹은 읽고 실행하는 권한만 주고, 다른 사용자에게는 아무 권한도 주지 않는다는 얘기. 0이면 권한이 없어진다. 편하게 외우고 싶다면 r(read)은 4, w(write)는 2, x(execution)는 1이고 각 권한에 대해 1은 권한 부여, 0은 권한 박탈이라고 외우면 된다.