chmod 명령어는 리눅스에서 파일/디렉토리에 대한 권한을 부여하는 명령어이다.
리눅스에서는 파일에 대한 권한 주체 단위를 3가지로 구분하고 있다.
소유권에 대한 3가지 구분
1)해당 파일/디렉토리의 소유자(owner) : 말그대로 해당 파일에 대한 소유자
2)소유그룹(group) : 소유자가 속한 group. 리눅스에서 group이란 user1 user2등 특정 사용자들을 그룹핑한 모음이다. group별로 파일에 대한 group ownership을 부여하여, 소유자가 아니더라도 소유자가 속한 그룹에 속하여 있는 user라면 그룹에 대한 별도의 권한을 가질 수 있도록 한다.
3)그외(others) : 소유자도 아니고, 소유그룹에 속하지도 않는 사용자.
예를 들어, ls -al 명령어를 실행하면 아래와 같은 형태가 조회가 될 것이다.
-rwxr-x--x에 대한 의미
먼저, 가장 앞의 -는 -대신 d가 있으면 디렉토리, 그냥 -이면 파일을 의미한다. 그다음, 뒤에서부터 3개씩 끊어서 소유자, 소유그룹, 그외 가 가진 test.txt파일에 대한 파일권한을 의미한다.
앞에서부터 rwx는 소유자의 권한을 의미하고 test.txt파일에 대하여 read(읽기), write(쓰기), excute(실행) 권한을 모두 가진다는 것을 의미한다.
그 다음의 소유그룹의 경우에 r-x는 write는 빠진 read와 excute 권한만을 가진다는 것을 의미한다.
마지막으로 --x의 권한을 가진 others(그외)의 경우 excute권한만을 가진다는 것을 의미한다.
이런식으로 소유자에게는 모든 권한을 주고, 소유자는 아니지만 소유그룹에 속해 있는 user1(또는 user2)에게는 읽고 실행할 권한만을 주는 것이다. 그외의 사용자는 해당 파일에 대한 실행할 수 있는 권한만 주는 것이다.
root root가 의미하는 것
root root 중에 왼쪽은 owner를 의미하고, 오른쪽은 소유group을 의미한다.
위의 test.txt파일의 소유자는 root이고 소유그룹 또한 root그룹이라는 의미이다. root:admin 이런식으로 소유자는 root로 하고, root가 속한 admin그룹이라는 것을 만들어, 또다른 유저들도 해당 그룹에 포함시킬 수도 있다.
chown root:admin
위와 같은 방식으로 소유자와 소유그룹을 root:admin으로 변경시킬 수 있다.
chmod 명령어 사용법
앞서 본 test.txt파일에 대한 -rwxr-x--x 권한을 -rwxrwxrwx 와 같이 권한을 변경시키려면 어떻게 해야 할까?
일단 결론은 chmod 777 test.txt 라는 명령어를 사용하면 된다. owner에 7의 권한을 부여하고, group에도 7, others에게도 7의 권한을 부여한다는 의미이다.
777이라는 숫자는 어디에서 튀어 나온 것일까? 아래 표를 봐보자.
이 숫자를 외우는것은 다소 무식한 방법일수가 있다. 우리가 기억해야 할 것은 권한의 순서가 rwx 순서로 주어진다는 것만 기억하면 된다.
rwx는 3자리로 이뤄져 있기에 총 3bit 로 구성된다. 즉, x의 권한은 bit에서 001을 의미 w의 권한 010을 의미 r의 권한은 100을 의미
위의 2진법을 10진법으로 바꾸면, r의 권한은 숫자4를 의미하고, w는 2 x는 1을 의미한다. 그러므로 rwx권한 모두를 주고 싶을때는 7(4+2+1)의 숫자를 부여하면 되는 것이다. r-x rw- -wx 등 나올수 있는 8가지의 조합도 모두 마찬가지이므로 굳이 암기할 필요가 없다.
chmod 소유자에대한권한(0~7)소유그룹에대한권한(0~7)others에대한권한(0~7) 파일(또는 디렉토리)명
그래서 예를들어, chmod 777 test.txt 이런식으로 권한 부여할수가 있는 것이다.
chmod u+w, chmod g+r, chmod o+x (또다른방법)
chmod 777 등과 같이 일괄적으로 권한을 부여하는 것이 아닌, 각 주체별로 개별적인 권한을 추가 하는 방법이 있다.
owner는 u라는 약자를 사용하고 group은 g라는 약자 others는 o라는 약자를 사용한다.
해당 주체별로 +r(또는 w, x)등의 개별적인 권한을 더할 수도 있다.
'프로그래밍 > devops' 카테고리의 다른 글
crond, crontab활용 (0) | 2022.12.25 |
---|---|
리눅스 - 데몬(서비스), 프로세스 차이 (feat.systemd) (1) | 2022.12.22 |
2022 현재 리눅스 배포판 점유율 현황 (0) | 2022.12.19 |
DB,서버 타임존 일괄 UTC 세팅 후 client에서 KST 출력 (0) | 2022.12.09 |
linux 명령어 정리 (0) | 2022.11.30 |