리눅스에서는 권한을 설정하는 것이 상당히 중요해요. chmod로 유저, 소유 그룹, 다른 사람의 권한을 설정할 수 있어요. 리눅스 chown 명령어로 파일의 소유자, 그룹을 바꿀 수 있어요. 이 글 역시 -R과 같은 위험한 옵션은 다루지 않겠습니다. chmod는 이 글에서 설명하였습니다. 해당 글을 보시고 오시는 것도 좋습니다.
- 파일 mode와 chmod 명령어를 알아봅시다. 링크
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/li_cho1.png)
chown은 파일의 소유자와 group을 바꿉니다. 옵션 없는 기본형은 아래와 같습니다. 그리고 저는 이 포맷으로 많이 쓰는 편입니다.
chown USER:GROUP file_name
파일 file_name의 소유자를 USER로, 소유 그룹을 GROUP으로 바꿉니다.
어렵지 않지요? 예제를 보겠습니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/li_cho2.png)
adm.txt의 정보를 보기 위해, ls와 grep 명령어를 사용하였습니다. 보면, -rw-r–r– 옆에 1 root root라고 표시되어 있는 것을 볼 수 있어요. 이것은 소유자가 root이고, 소유 그룹이 root임을 의미해요. root라면 r, w 권한을 가집니다. root가 아니지만, root에 속하면 r 권한을 가져요. 그것도 아니라면 r 권한을 가져요.
그림으로 그리면 아래와 같습니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/li_cho9.png)
이 그림을 잘 기억해 두세요. chown 명령어로 이 순서도가 어떻게 바뀌는지 봅시다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/li_cho3.png)
chown root:cho adm.txt 명령어는 무엇을 의미할까요? 소유자를 root로, 소유 그룹을 cho로 변경하라는 의미입니다. 그러므로, 파일의 권한을 가져오는 순서도가 아래와 같이 바뀝니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/li_cho10.png)
정말 그런지 ls와 grep 명령어로 adm.txt의 정보를 확인해 보겠습니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/li_cho6-1.png)
root가 아니지만, group cho에 속하면 r– 권한을, cho에도 속하지 않는다면 r– 권한을 가지겠지요.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/li_cho4.png)
cho 유저로 adm.txt의 내용을 보기 위해, cat adm.txt를 입력하였습니다. 그랬더니 허가가 납니다. 왜? r 권한이 있기 때문입니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/li_cho5.png)
하지만, echo 12345 > adm.txt를 입력하니, 허가 거부라고 뜨면서 거부가 됩니다. 이는, cho가 root가 아니라서 쓰기 권한이 없기 때문입니다.
이제 아래 명령어를 입력해 봅시다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/li_cho7-1.png)
chown cho:cho adm.txt는 adm.txt의 소유자를 cho로, 소유 그룹도 cho로 바꾸는 것입니다. 이러면 파일의 권한을 가져오는 순서도가 아래와 같이 바뀝니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/li_cho13.png)
저는 cho user이므로, r 권한과 w 권한 둘 다 가지고 있습니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/li_cho8.png)
따라서, cho 유저로 echo 12345 > adm.txt를 수행할 수 있습니다. 정리하면
- chown user:group file 명령으로
- file의 소유자를 user로, 소유 그룹을 group으로 바꿀 수 있다.
그런데 파일의 소유자만 바꾸거나, 소유 그룹만 바꿔야 할 수가 있어요. 어떻게 해야 할까요?
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/li_cho11.png)
먼저, chown 유저명 파일은 파일의 소유자를 유저명으로 바꿉니다. 예를 들어, chown root adm.txt는 파일 adm.txt의 소유자를 root로 바꿉니다.
![](https://codingdog.pe.kr/wp-content/uploads/2023/07/li_cho12.png)
반대로, 파일의 소유 그룹만 바꾸려는 경우 chown :그룹명 파일 이렇게 입력해 주시면 됩니다. 그러면, 파일의 소유 그룹이 그룹명으로 바뀌게 됩니다.