리눅스 시스템에서 파일 권한은 보안의 핵심적인 부분이라고 할 수 있습니다. 권한은 파일이나 폴더에 누가 접근할 수 있는지를 정의하는데요. 이번 포스팅에서는 리눅스 파일권한이 어떻게 동작하고 어떻게 사용하는지를 정리했습니다.
파일 권한
리눅스의 파일 권한은 소유자, 그룹 그리고 기타 사용자로 구분되는 3가지 카테고리에 대한 권한으로 구성됩니다. 각각의 권한에는 읽기, 쓰기 그리고 실행 권한이 있으며 각 카테고리별로 설정이 됩니다.
- 소유자: 파일을 만든 사용자(계정)에 대한 권한입니다. 기본적으로 소유자는 소유한 파일에 대한 모든 권한을 가집니다.
- 그룹: 그룹은 사용자의 집합입니다. 그리고 그룹의 권한은 해당 그룹에 속한 멤버(계정)가 가진 권한입니다.
- 기타: 파일에 대한 권한을 가지지 않은 모든 사용자에 대한 권한을 정의합니다.
파일 권한 확인 방법
"ls"라는 명령어는 현재 위치에 어떤 파일과 디렉터리가 있는지를 확인할 때 사용하는 아마 "cd" 다음으로 많이 사용되는 명령어 일 텐데요. 이 "ls"명령에 "-l" 옵션을 통해서 파일의 권한을 확인할 수 있습니다. "-l"은 long list를 의미하며 파일의 권한을 포함한 메타데이터를 확인하는 데 사용합니다. 아니면 줄여서 "ll" 명령어만 사용해도 동일한 결과를 볼 수 있습니다.
여기서 권한과 관련된 필요한 정보를 읽어보겠습니다.
File type
먼저 제일 앞 한자리 문자는 파일 타입입니다. "-"은 일반 파일을 의미하고 "d"는 directory 그러니까 디렉터리를 의미합니다. 그 외에 "b, c, l"도 있으나 여기서는 그냥 넘어가겠습니다.
Permission
그리고 이어서 나오는 9자리 문자가 바로 각 파일 혹은 디렉터리에 설정된 접근 권한을 보여줍니다.
User/Group Owner
해당 파일 혹은 디렉터리의 소유권을 가지고 있는 사용자명과 그룹명도 확인할 수 있습니다.
*Permission과 User owner 사이에 있는 숫자는 링크 수라고 하네요.
이제 Permission(권한)에 대해서 좀 더 상세히 공부해 보겠습니다.
위 캡처에서 볼 수 있는 2개 파일은 각각 "rw-r--r--" 권한과 "rwxrwxrwx" 권한이 지정되어 있습니다. 이 9자리 권한 정의는 앞에서부터 3자리씩 각각 소유자, 그룹, 기타의 권한을 나타냅니다. 구분에 따라 표로 정리하면 아래와 같겠죠.
소유자 | 그룹 | 기타 | octal value | |
rw-r--r-- | rw- | r-- | r-- | 644 |
rwxrwxrwx | rwx | rwx | rwx | 777 |
여기서 사용된 r, w, x 3가지 표시의 의미는 각각 읽기(r), 쓰기(w), 실행하기(x)입니다. 그리고 앞에서부터 차례대로 r, w, x 순서대로 해당 권한이 있는지를 표시합니다. 만약 아무것도 없이 해당 자릿수가 "-"로 표현되어 있다면 해당 권한이 없다는 의미되겠죠.
- r(read): 파일을 읽고 내용을 볼 수 있는 권한입니다. "cat"와 같이 파일 내용을 표시하는 도구를 사용할 수 있으며 파일의 복사도 가능합니다. 만약 디렉터리인 경우 디렉터리 안의 파일을 조회할 수 있는 권한까지 허용됩니다.
- w(write): 파일을 열고 수정까지 할 수 있습니다. 디렉터리인 경우 내부에 파일을 추가하거나 삭제가 가능합니다.
- x(execute): 실행이 가능한 파일일 경우 실행할 수 있는 권한까지 있습니다. 디렉터리의 경우 해당 디렉터리 내의 파일 및 하위 디렉터리에 있는 파일을 실행할 수 있는 권한을 의미합니다. 따라서 어떤 파일을 실행하기 위해서는 파일에 대한 실행권한도 필요하지만 해당 파일이 속해있는 디렉터리에 대해서도 권한이 필요합니다.
자 그럼 위 표에서 첫 번째 파일인 "rw-r--r--"의 소유권을 해석해 보면, 해당 파일의 소유자는 "rw-" 권한이 있는데 이는 읽기와 쓰기는 가능하나 실행할 수 있는 권한은 없음을 의미합니다. 그리고 그룹 권한이 있는 사용자나 기타 사용자는 모두 "r--"권한이 있기 때문에 읽기만 가능한 파일입니다.
반면 두 번째 파일은 "rwxrwxrwx" 권한이 부여되어 있는데요. 소유자, 그룹, 기타 사용자의 경우 모두 동일하게 "rwx" 다시 말해 읽고 쓰고 실행하는 모든 권한이 부여되어 있음을 알 수 있습니다.
8진수 숫자 표기(Octal value)
리룩스에서 파일 권한을 위와 같이 문자로 표시하기도 하지만 숫자로도 표시하기도 합니다. 3자리 값의 숫자로 파일의 권한을 표시하는데 첫 번째 자릿수는 소유자, 두 번째는 그룹 마지막으로 세 번째 자릿수는 그 외 사용자의 권한을 표시합니다. 각 권한을 표시하는 숫자는 다음과 같습니다.
- r (read): 4
- w (write): 2
- x (execute): 1
예를 들어 권한을 표시하는 숫자가 "744"라고 한다면 첫 번째 숫자 "7"은 소유자의 권한입니다. 7은 4 + 2 + 1이기 때문에 소유자는 모든 권한을 가진다는 것을 의미합니다. 그리고 두 번째 숫자 "4"는 그룹 권한이며 4는 4 + 0 + 0으로 읽기 권한만 있다는 의미가 되겠습니다. 마찬가지로 세 번째 숫자 "4"는 기타 사용자에 대한 권한이며 읽기만 가능하다는 의미되겠습니다.
권한 수정하기(chmod)
파일이나 디렉터리의 권한은 "chmod"명령을 통해서 변경할 수 있습니다. 방법은 숫자를 이용하는 방법과 기호를 이용하는 방법이 있습니다.
숫자를 이용한 권한 변경
chmod 명령어를 입력한 후 소유자, 그룹, 기타 사용자의 권한을 나타내는 8진수 숫자 3자리를 입력합니다. 예를 들어 "example.log"라는 파일에 "777" 권한을 부여하고 싶다면 다음과 같이 입력할 수 있습니다.
chmod 777 example.log
기호를 이용한 권한 변경
기호를 이용하는 권한 변경은 다음 3가지 옵션을 활용해서 기존 권한에 새로운 권한을 추가하거나 삭제하는 식으로 수정할 수도 있고 위에서 언급한 숫자를 이용한 권한 변경처럼 새로운 권한을 바로 지정할 수도 있습니다.
사용되는 기호는 다음과 같습니다.
- + : 권한 추가
- - : 권한 제거
- = : 권한 설정
- u : 소유자
- g : 그룹 사용자
- o : 기타 사용자
예를 들어 "example.log"라는 파일에 소유자는 파일을 실행할 수 있는 권한을 추가하고자 할 때는 다음과 같은 명령을 사용합니다.
chmod u+x example.log
추가로 그룹 사용자는 읽기와 쓰기가 가능하도록 하고 다른 사용자들은 읽기 권한만 설정하고 싶다면 다음과 같이 할 수 있습니다.
chmod g=rw,o=r example.log
chmod 명령어 추가 옵션
chmod 명령어를 사용할 때, 다음의 추가 옵션을 사용할 수도 있습니다.
- -R : 하위 디렉터리까지 권한을 같이 변경합니다.
- -v : chmod 명령어의 실행 결과로 변경된 권한을 출력합니다.
- -c : 변경된 파일이나 디렉터리에 대한 내용을 출력합니다.
- -f : 권한 변경 실패 시 메시지를 출력하지 않고 무시합니다.
마무리
리눅스에서 파일 디렉터리의 권한은 시스템을 유지 관리하는데 매우 필수적인 부분이라고 할 수 있습니다. 어렴풋 알고는 있었지만 리눅스를 사용한다면 한 번은 짚어볼 내용인 것 같습니다. 자세한 내용은 다음 문서 등으로 통해 확인해 보세요.
끝!
'Tips' 카테고리의 다른 글
code-server 서버에 폰트 설치하고 적용하기 (0) | 2024.08.29 |
---|---|
페이팔에서 신한 아멕스 카드 사용하시려면 인내심이 필요합니다. (4) | 2023.10.25 |
RDP, Windows Defender Credential Guard는 저장된 자격 증명 사용을 허용하지 않습니다?! (0) | 2023.07.02 |
삼성 갤럭시 탭4 10.1 SM-T530 안드로이드 9(LineageOS 16) 업그레이드 (42) | 2023.03.24 |
댓글