리눅스는 다양한 사용자와 프로그램이 동시에 작동하는 다중 사용자 운영 체제입니다. 이러한 환경에서 파일과 디렉토리의 보안을 유지하는 것은 매우 중요합니다. 리눅스에서는 파일과 디렉토리에 퍼미션(permission)을 설정하여 접근 권한을 제어합니다.
이번 글에서는 리눅스 퍼미션의 기본 개념과 파일 및 디렉토리에 퍼미션을 설정하는 방법, 퍼미션 변경 명령어 등에 대해 자세히 다루어 리눅스 파일 시스템의 보안을 효과적으로 관리할 수 있도록 알려드리겠습니다.
리눅스 퍼미션 개요
리눅스 퍼미션은 파일이나 디렉토리에 대한 접근 권한을 결정하는 정보입니다. 퍼미션은 세 가지 카테고리로 구성됩니다.
- 소유자(owner) : 파일이나 디렉토리를 만든 사용자
- 그룹(group) : 파일이나 디렉토리를 만든 사용자 그룹
- 기타(other) : 소유자나 그룹에 속하지 않은 모든 사용자
각 카테고리에는 읽기(r), 쓰기(w), 실행(x) 권한이 할당됩니다.
- 읽기(r) 권한 : 파일의 내용을 읽거나 디렉토리의 목록을 볼 수 있는 권한
- 쓰기(w) 권한 : 파일에 내용을 쓰거나 디렉토리에 새 파일이나 디렉토리를 만들 수 있는 권한
- 실행(x) 권한 : 파일을 실행하거나 디렉토리로 이동할 수 있는 권한
퍼미션 종류
소유자 퍼미션 : 파일 또는 디렉토리의 소유자가 가지는 권한입니다. (rwx)
그룹 퍼미션 : 파일 또는 디렉토리와 동일한 그룹에 속한 사용자가 가지는 권한입니다. (rwx)
다른 사용자 퍼미션 : 그룹에 속하지 않은 다른 사용자가 가지는 권한입니다. (rwx)
퍼미션 표현 방식
숫자 표현 방식 : 8진수 숫자 3자리로 표현됩니다. 각 숫자는 소유자, 그룹, 다른 사용자 퍼미션을 나타냅니다.
첫 번째 숫자 : 소유자 퍼미션 (4 : 읽기, 2 : 쓰기, 1 : 실행)
두 번째 숫자 : 그룹 퍼미션 (4 : 읽기, 2 : 쓰기, 1 : 실행)
세 번째 숫자 : 다른 사용자 퍼미션 (4 : 읽기, 2 : 쓰기, 1 : 실행)
예시 : 755 (4 + 2 + 1, 4 + 1 + 0, 4 + 1 + 0) – 소유자는 읽기, 쓰기, 실행 권한, 그룹은 읽기, 실행 권한, 다른 사용자는 읽기, 실행 권한을 가짐
문자 표현 방식 : rwx로 표현됩니다. 각 문자는 읽기(r), 쓰기(w), 실행(x) 권한을 나타냅니다.
예시 : rwxr-xr-x (소유자 : 읽기, 쓰기, 실행, 그룹 : 읽기, 실행, 다른 사용자 : 읽기, 실행)
퍼미션 설정 방법
chmod 명령 : chmod 명령을 사용하여 파일 또는 디렉토리의 퍼미션을 변경할 수 있습니다.
기본 구문 : chmod [옵션] 퍼미션 변경 방법 파일 또는 디렉토리
예시 : chmod 755 example.txt – example.txt 파일의 퍼미션을 755로 변경
chown 명령 : chown 명령을 사용하여 파일 또는 디렉토리의 소유자를 변경할 수 있습니다.
기본 구문 : chown [옵션] 사용자 :그룹 파일 또는 디렉토리
예시: chown alice:web example.txt – example.txt 파일의 소유자를 alice, 그룹을 web으로 변경
chgrp 명령 : chgrp 명령을 사용하여 파일 또는 디렉토리의 그룹을 변경할 수 있습니다.
기본 구문 : chgrp [옵션] 그룹 파일 또는 디렉토리
예시 : chgrp web example.txt – example.txt 파일의 그룹을 web으로 변경
퍼미션 활용 예제
시스템 파일 보호: 중요한 시스템 파일의 퍼미션을 600으로 설정하여 다른 사용자의 접근을 차단합니다.
웹 서버 문서 디렉토리 설정: 웹 서버 문서 디렉토리의 퍼미션을 755로 설정하여 웹 서버 사용
실제 예제
예제 1 : 파일 퍼미션 변경
현재 퍼미션이 644인 myfile.txt 파일의 퍼미션을 소유자는 읽기, 쓰기, 실행 권한, 그룹은 읽기 권한, 다른 사용자는 읽기 권한으로 변경하려고 합니다.
Bash
chmod 644 myfile.txt
코드를 사용할 때는 주의가 필요합니다.
예제 2 : 디렉토리 퍼미션 변경
현재 퍼미션이 775인 mydir 디렉토리의 퍼미션을 소유자는 읽기, 쓰기, 실행 권한, 그룹은 읽기, 실행 권한, 다른 사용자는 읽기 권한으로 변경하려고 합니다.
Bash
chmod 755 mydir
코드를 사용할 때는 주의가 필요합니다.
예제 3 : 소유자 변경
myfile.txt 파일의 소유자를 alice로, 그룹을 web으로 변경하려고 합니다.
Bash
chown alice:web myfile.txt
코드를 사용할 때는 주의가 필요합니다.
예제 4: 그룹 변경
mydir 디렉토리의 그룹을 web으로 변경하려고 합니다.
Bash
chgrp web mydir
코드를 사용할 때는 주의가 필요합니다.
주의 사항
- root 사용자는 모든 파일과 디렉토리의 퍼미션을 변경할 수 있습니다.
- 일반 사용자는 자신이 소유한 파일과 디렉토리의 퍼미션만 변경할 수 있습니다.
- 퍼미션을 잘못 설정하면 시스템 보안에 위험을 초래할 수 있으므로 주의해야 합니다.
- 퍼미션 변경 후에는 파일 또는 디렉토리에 정상적으로 접근할 수 있는지 확인해야 합니다.
퍼미션 관련 유용한 명령어
- ls -l : 파일과 디렉토리의 목록을 자세히 표시합니다. 퍼미션 정보도 포함되어 있습니다.
- stat : 파일이나 디렉토리의 정보를 표시합니다. 퍼미션 정보도 포함되어 있습니다.
- chown : 파일이나 디렉토리의 소유자를 변경합니다.
- chgrp : 파일이나 디렉토리의 그룹을 변경합니다.
리눅스 퍼미션 보안 최적화 방법
- 필요한 권한만 부여 : 파일이나 디렉토리에 필요한 권한만 부여하고, 불필요한 권한은 제거해야 합니다.
- root 권한 사용 제한 : 일반 사용자는 가능한 한 root 권한을 사용하지 않고 자신의 작업을 수행해야 합니다.
- umask 설정 : umask 명령어를 사용하여 새로 만든 파일이나 디렉토리의 기본 퍼미션을 보안 수준에 맞게 설정해야 합니다.
- 정기적인 퍼미션 확인 : 파일과 디렉토리의 퍼미션을 정기적으로 확인하고, 이상이 발견되면 즉시 수정해야 합니다.
마치며
리눅스 퍼미션은 시스템 보안과 파일 관리에 필수적인 요소입니다.
이 글에서 다룬 개념, 종류, 설정 및 활용 방법을 이해하고, 실제 예제를 통해 퍼미션을 다루는 실무 능력을 향상시키는 데 도움이 되었기를 바랍니다.