우분투(Ubuntu) 22.04 Server chmod 권한 변경 방법
안녕하세요. YeopBox의 상큼한놈 입니다.
우분투를 웹 서버 등의 용도로 이용하다 보면 특정 사용자를 생성 후에 구동을 하곤 합니다.
한 서버에 각각의 사용자 별로 다른 프로젝트를 실행하는 경우도 많아 chown과 마찬가지로 chmod도 필수적으로 알아야 하는 커맨드입니다.
이번에는 리눅스 이용 시 보안 상 가장 중요한 권한을 변경하는 방법에 대하여 알아보도록 하겠습니다.
chmod 사용방법
chmod를 이용 시 다음 두 가지 방법을 이용해서 파일/폴더의 권한을 수정할 수 있습니다.
- 특정 소유자에 대한 권한 추가/수정/삭제
- 숫자를 이용한 권한 수정
이 두가지 중에 필자의 경우 2번째 방법을 주로 이용하는데요, 자신에 성향에 맞는 방법으로 이용해 주시면 됩니다.
먼저, 첫번째 방법인 특정 사용자에 대한 권한 추가/수정/삭제에 대하여 알아보도록 하겠습니다.
파일의 소유자 권한은 크게 3가지로 나눠집니다.
- User (사용자) : 해당 파일의 소유자
- Group (그룹) : 해당 파일의 소유자 그룹
- Others (그 외 사용자) : 소유자 및 그룹 외의 사용자
위 3가지의 소유자 권한을 나타내기 위해 아래와 같은 커맨드를 이용합니다.
ALL | User | Group | Others |
---|---|---|---|
모든 사용자 | 파일 사용자 | 그룹 | 그 외 사용자 |
특정 권한을 추가하거나 수정 삭제하기 위해 아래의 커맨드를 이용합니다.
+ | – | = |
---|---|---|
해당 권한 추가 | 해당 권한 삭제 | 해당 권한으로 수정 |
아래 커맨드는 실제 어떤 권한을 지정하기 위해 사용됩니다.
Read | Write | eXecute |
---|---|---|
읽기 권한 | 쓰기 권한 | 실행 권한 |
위 3개의 커맨드를 순서대로 결합하여 아래와 같이 사용할 수 있습니다.
chmod [options] [file name]
1 2 3 4 5 6 |
// test 파일의 파일 사용자에게 읽기 권한을 추가 sudo chmod u+r test // test 파일의 그룹에 쓰기 권한을 추가 sudo chmod g+w test // test 파일의 그 외 사용자에겐 실행 권한을 추가 sudo chmod o+x test |
위 스크린 샷과 같이 각 소유자 그룹 별로 해당 권한이 추가된 것을 확인할 수 있습니다.
이번에는 읽기,쓰기와 같이 권한이 여러 개 지정되어야 하는 사항을 가정하고 커맨드를 입력해 보았습니다.
1 2 3 4 5 6 |
// test 파일의 파일 사용자에게 읽기,쓰기,실행 권한을 줌 sudo chmod u+rwx test // test 파일의 그룹에게 읽기,실행 권한을 줌 sudo chmod g+rx test // test 파일의 그 외 사용자에게 읽기 권한을 줌 sudo chmod o+r test |
그럼 그 위와 같이 커맨드에 대한 권한이 추가된 것을 확인할 수 있습니다.
이번에는 권한을 삭제하거나 수정해 보겠습니다.
저는 먼저 읽기,쓰기,실행 권한이 지정된 파일을 아래와 같이 수정해보았습니다.
1 2 3 4 |
// test 파일의 모든 사용자의 읽기,쓰기,실행 권한을 삭제 함 sudo chmod a-rwx test // test 파일의 모든 사용자에게 읽기,실행 권한으로 수정 함 sudo chmod a=rx test |
그럼 위와 같이 권한이 수정되는 것을 확인할 수 있습니다.
이번에는 두번째 방법인 숫자를 이용한 권한 수정 방법에 대하여 알아보겠습니다.
숫자로 권한을 주는 방법은 0~7의 숫자를 소유자 권한의 순서에 맞게 입력하면 됩니다. (예: chmod 755 filename)
숫자는 아래의 표에 필요한 권한의 합을 작성해 주시면 됩니다. (예: 읽기와 실행 권한이 필요하면 4+1 = 5)
Read (읽기 권한) | Write (쓰기 권한) | Execute (실행 권한) | |
---|---|---|---|
+ | 22 = 4 | 21 = 2 | 20 = 1 |
숫자의 입력 순서는 아래와 같습니다.
User (파일 사용자) | Group (그룹) | Other (그 외 사용자) |
---|---|---|
0 ~ 7 | 0 ~ 7 | 0 ~ 7 |
위 방법을 참고하여 아래와 같이 이용하실 수 있습니다.
1 2 3 4 |
// test 파일의 파일 사용자에겐 읽기(4),쓰기(2),실행(1) 권한을 그룹과 그 외 사용자에겐 읽기(4), 실행(1) 권한을 줌 sudo chmod 755 test // test 파일의 파일 사용자에겐 읽기(4),쓰기(2),실행(1) 권한을 그룹과 그 외 사용자에겐 권한을 할당하지 않음 sudo chmod 700 test |
그럼 위와 같이 권한이 지정되는 것을 확인할 수 있습니다.
이번에는 0~7사이의 권한이 실제 어떻게 적용되는지 확인해보도록 하겠습니다.
1 2 3 4 5 6 |
// test 파일의 파일 사용자에겐 읽기(4),쓰기(2),실행(1) 권한을 그룹은 읽기(4),쓰기(2) 권한을 그 외 사용자에겐 읽기(4),실행(1) 권한을 줌 sudo chmod 765 test // test 파일의 파일 사용자에겐 읽기(4) 권한을 그룹은 쓰기(2),실행(1) 권한을 그 외 사용자에겐 쓰기(2) 권한을 줌 sudo chmod 432 test // test 파일의 파일 사용자에겐 실행(1) 권한을 나머지에게는 권한을 할당하지 않음 sudo chmod 100 test |
특정 폴더의 하위 파일/폴더 까지 권한을 지정해 주고 싶은 경우 아래와 같이 ‘-R’ 커맨드를 추가해 주면 됩니다.
1 2 |
// testdir 하단의 폴더/파일까지 모두 읽기(4),쓰기(2),실행(1) 권한을 줌 sudo chmod 777 -R testdir |
그럼 위와 같이 폴더 내 파일의 권한까지 수정된 것을 확인할 수 있습니다.
덧붙여 좀 더 자세한 사용 방법을 알고 싶으신 경우 아래의 커맨드를 이용해 확인하실 수 있습니다.
1 |
chmod --help |
마치며…
이번에는 리눅스 사용 시 중요한 권한 지정에 대한 커맨드에 대하여 알아보았습니다.
해당 커맨드는 리눅스를 이용할 시에 필수적으로 이용되기에 이용 방법을 암기하는 것이 중요한 것 같습니다.
포스트를 작성할 때 단어 선정을 어떻게 해야할지 고민이 많았는데요, 만일 수정되면 좋은 사항이 있을시 댓글로 남겨주시면 포스트에 반영할 수 있도록 하겠습니다.
감사합니다.