[Linux] Linux file permission (파일 및 디렉터리 권한 설정)
리눅스에서 파일 및 디렉터리의 권한을 확인하고 변경하는 작업은 시스템 보안 및 운영에 매우 중요한 부분입니다. 이 글에서는 리눅스 명령어를 이용해 파일 권한을 확인하고 변경하는 방법을 소개합니다.
테스트 환경
• Red Hat Enterprise Linux (RHEL)
Linux File permission 확인
리눅스에서는 ls
명령어를 통해 파일의 권한을 확인할 수 있습니다.
# ls -l -rw-r-xr-x 1 root root 16 Apr 24 19:08 test.txt위 출력 결과에서 파일 권한 외의 항목들(소유자, 소유 그룹, 크기, 수정 일자, 파일명 등)은 비교적 직관적으로 이해할 수 있습니다. 따라서 이 글에서는 파일 권한 부분을 중심으로 자세히 설명하겠습니다.
1. Linux file permission
1) Linux file permission 3가지 범주
- 소유자(user), 그룹(group), 그 외(other)
2) 리눅스 권한 3가지
- 읽기(Read), 쓰기(Write), 실행(Execute)
파일과 디렉터리에서는 권한의 의미가 약간 다릅니다. 특히 디렉터리에서 실행 권한(x)은 해당 디렉터리로의 진입을 허용한다는 점이 핵심입니다.
권 한 | 파일 | 디렉터리 |
---|---|---|
읽기 (r) | 파일을 읽을 수 있는 권한 | 디렉터리의 내용을 볼 수 있는 권한 |
쓰기 (w) | 파일을 수정할 수 있는 권한 | 파일 및 디렉터리를 생성/삭제할 수 있음 |
실행 (x) | 파일을 실행할 수 있는 권한 | 디렉터리 내부로 이동할 수 있음 (cd ) |
이 기준에 따라 test.txt
파일의 권한을 분석하면 다음과 같습니다.
-
소유자(root)는 파일을 읽고(r), 쓰고(w), 실행(x)할 수 있습니다.
-
그룹(root)은 읽기(r), 실행(x) 권한이 있습니다.
-
기타 사용자도 읽기(r), 실행(x) 권한을 가집니다.
이처럼 파일 권한을 분석해 보면, 리눅스의 파일은 권한 정보뿐만 아니라 소유자와 그룹이 지정되어 있다는 것을 알 수 있습니다. 즉, 소유자나 소유 그룹이 누구냐에 따라 접근 가능 여부가 달라질 수 있습니다. 따라서 단순히 권한 변경뿐 아니라 소유자와 그룹 변경도 중요합니다. 이 글에서는 권한 변경과 함께 소유자 및 그룹 변경 방법도 함께 알아보겠습니다.
Linux file permission 변경( chmod )
리눅스에서 파일 권한을 변경하려면 chmod
명령어를 사용합니다. chmod
에는 크게 심볼릭 방식(symbolic)과 8진수 방식(octal) 두 가지 방법이 있습니다.
1. 심볼릭 방식
심볼릭 방식은 어떤 사용자 범위(user, group, other, all)에 어떤 권한을 추가하거나 제거할지 명시적으로 지정하는 방식입니다.
# chmod <권한 범주><연산자><권한>
권한 범주 | 범주 | 설명 |
---|---|---|
u | user | 파일 소유자 |
g | group | 파일 그룹의 멤버 |
o | other | 소유자나 그룹의 멤버가 아닌 다른 모든 사용자 |
a | all | user, group, other 모두 포함 |
연산자 | 설명 |
---|---|
+ | 권한 추가 |
- | 권한 삭제 |
= | 권한 일치 |
권 한 | 기 능 |
---|---|
r | 읽기 |
w | 쓰기 |
x | 실행 |
심볼릭 방식 예시)
- 모든 사용자에게서 권한 제거
# chmod a-rwx test.txt # ll ---------- 1 root root 0 Aug 28 22:18 test.txt
- 소유자에게 읽기, 쓰기, 실행 권한 부여
# chmod u+rwx test.txt # ll -rwx------ 1 root root 0 Aug 28 22:18 test.txt
- 소유 그룹에게 읽기와 실행 권한을 부여
# chmod g+rx test.txt # ll -rwxr-x--- 1 root root 0 Aug 28 22:18 test.txt
- other 사용자에게 읽기 권한을 부여
# chmod o+r test.txt # ll -rwxr-xr-- 1 root root 0 Aug 28 22:18 test.txt
이처럼 심볼릭 방식은 지정한 범위의 권한만 변경하며, 지정하지 않은 권한은 그대로 유지됩니다. 세밀한 제어가 필요한 경우에 적합합니다.
2. 8진수 방식
8진수 방식은 각 권한(r=4, w=2, x=1)에 대응되는 숫자를 더해서 권한을 부여하는 방식입니다. 세 자리 숫자로 user/group/other 순서대로 권한을 표현합니다.
User | Group | Other | ||||||
---|---|---|---|---|---|---|---|---|
Read | Write | execute | Read | Write | execute | Read | Write | execute |
4 | 2 | 1 | 4 | 2 | 1 | 4 | 2 | 1 |
8진수 방식 예시)
- 유저에게 읽기(4), 쓰기(2), 실행(1) 권한, 그룹에게 읽기(4)와 실행(1) 권한을 부여하고 기타 사용자에게 읽기(4) 권한만 제공하려고 한다면 아래와 같이 계산할 수 있습니다.
read | write | excute | SUM | |
---|---|---|---|---|
user | 4 | 2 | 1 | 6 |
group | 4 | 1 | 5 | |
other | 4 | 4 |
예를 들어, user에 7(읽기+쓰기+실행), group에 5(읽기+실행), other에 4(읽기) 권한을 부여하려면 아래와 같이 명령어를 사용합니다.
# chmod 754 test.txt # ll -rwxr-xr-- 1 root root 0 Aug 28 22:18 test.txt
- 유저에게만 모든 권한을 부여하고, group과 other에는 아무 권한도 주지 않으려면 다음과 같이 설정합니다.
# chmod 700 test.txt # ll -rwx------ 1 root root 0 Aug 28 22:18 test.txt
리눅스에서는 파일이나 디렉터리의 상세 정보를 확인할 수 있는 stat
명령어도 제공합니다. 이를 이용하면 8진수 형식의 권한 정보를 포함하여 보다 정밀한 정보를 확인할 수 있습니다.
# stat test.txt File: test.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: fd00h/64768d Inode: 538612781 Links: 1 Access: (0700/-rwx------) Uid: ( 0/ root) Gid: ( 0/ root) ...
여기서 Access
항목을 보면, 0700이라는 8진수 권한과 함께, -rwx------ 형태의 심볼릭 권한도 함께 표시되어 있어 양쪽 방식을 동시에 확인할 수 있습니다.
파일 및 디렉터리 소유자 및 그룹 변경 (chown)
chown
명령어를 사용하면 파일의 소유자와 그룹을 동시에 변경할 수 있습니다.
test.txt
파일의 소유자를test
사용자로 변경
# chown :test test.txt # ll -rwx------ 1 test test 0 Aug 28 22:18 test.txt
test.txt
파일의 소유 그룹을test
그룹으로 변경
그룹을 지정할 때는 콜론(:)을 앞에 붙여 구분합니다.
# chown admin:admin test.txt # ll -rwx------ 1 admin admin 0 Aug 28 22:18 test.txt
- 소유자와 그룹을 모두
admin
으로 변경
# chown -R admin:admin /test
chown
명령을 이용하면 소유자와 그룹을 한 번에 변경할 수 있습니다. 단순히 그룹만 변경하려면 chgrp
명령어를 사용할 수도 있지만, chown
하나로 모두 처리할 수 있기 때문에 일반적으로는 chown
을 사용하는 것이 더 효율적입니다.
특정 디렉터리 아래의 모든 파일과 하위 디렉터리까지 소유자와 그룹을 일괄 변경하려는 경우에는 -R
옵션을 사용합니다.
/test
디렉터리 아래 모든 파일과 디렉터리를admin
사용자와admin
그룹으로 변경
# chown -R admin:admin /test
마치며
이번 글에서는 파일 및 디렉터리의 권한 설정 방법(chmod)과 소유자 및 그룹 변경 방법(chown)을 정리해 보았습니다. 특히 chown
명령은 -R
옵션을 통해 하위 경로까지 소유권 변경이 가능한 점을 확인했습니다.
반면 chmod
명령어도 -R
옵션을 지원하지만, 디렉터리와 파일의 권한 구조가 다르기 때문에 주의해서 사용해야 합니다. 파일마다 요구되는 권한이 다르므로 일괄 변경 시에는 기존 권한을 기록해 두거나 테스트 환경에서 먼저 적용해보는 것이 좋습니다.
댓글
댓글 쓰기