[리눅스] ACL과 POSIX 권한: 개념과 우선순위

반응형

 

POSIX (기본 권한)

리눅스와 유닉스 기반 시스템에서 기본적으로 사용되는 파일 및 디렉토리 권한 시스템이다.

소유자(owner), 그룹(group), 다른 사용자(other) 세 가지 권한 그룹으로 구성된다.

위의 각 권한 그룹은 읽기(read), 쓰기(write), 실행(execute)의 세 가지 권한을 가질 수 있다.

권한은 숫자로 표현되며, 각 권한에 숫자가 할당됩니다. (읽기=4, 쓰기=2, 실행=1)

 

 

ACL(Access Control List) (확장 권한)

POSIX 권한을 보완하기 위해 도입된 개념으로, 더 세밀한 엑세스 제어를 제공한다.

파일이나 디렉토리에 추가적인 사용자나 그룹별 권한을 지정할 수 있다.

각 사용자나 그룹에 대해 특정 권한을 지정할 수 있으며, POSIX 권한보다 더 유연한 권한 관리를 제공한다.

 

 

POSIX와 ACL의 우선순위

POSIX 권한은 기본적으로 설정되는 권한이며, ACL은 확장 권한으로서 POSIX보다 우선순위가 더 높다.

즉, POSIX 권한이 파일 실행을 허용하지 않더라도, ACL을 통해 실행 권한을 추가하면 실행할 수 있다.

 

 

예시를 통해 각 권한의 관계와 우선순위를 알아보자

* 예시에서 사용될 정보

테스트용 디렉토리 : /test_directory (755 POSIX 권한)
테스트용 파일 : /test_directory/test_file.sh (644 POSIX 권한)
테스트용 일반계정 : castle

 

 

1. 테스트 디렉토리 및 파일 생성 및 POSIX 권한 설정

POSIX 권한 : 다른 사용자(other) 권한 그룹에는 읽기(read) 실행(execute) 권한 부여

* 참고로 디렉토리 생성 시 기본 POSIX 권한은 최상위 디렉토리의 POSIX 권한을 상속받는다.

* 테스트용 디렉토리(755) 생성
[servera]# mkdir /test_directory
[servera]# chmod 755 test_directory
[servera]# ls -al | grep -i test_directory
drwxr-xr-x.  2 root    root     26 Apr  5 16:00 test_directory
[servera]# getfacl test_directory
# file: test_directory
# owner: root
# group: root
user::rwx
group::r-x
other::r-x


* 테스트용 파일(644) 생성
[servera]# echo -e "echo hello, world!" test_directory/test_file.sh
[servera]# ls -al test_directory/test_file.sh
-rw-r--r--. 1 root root 19 Apr  5 16:00 test_directory/test_file.sh
[servera]# getfacl test_directory/test_file.sh
# file: test_directory/test_file.sh
# owner: root
# group: root
user::rw-
group::r--
other::r--

 

 

2. 권한 테스트(1차)

현재 POSIX 권한만 적용되어 있고, ACL은 따로 설정하지 않은 상태

test_directory 디렉토리에 읽기, 실행만 허용하고 있기 때문에 castle 계정으로는 해당 디렉터리 안에서 새로운 파일을 만들 수 없고, 기존 파일을 수정할 수 없지만 읽거나 실행은 할 수 있다.

[servera]# su - castle
[servera]$ cd /test_directory
[servera]$ ls -l
total 4
-rw-r--r--. 1 root root 21 Apr  7 14:48 test_file.sh


[servera]$ cat test_file.sh  // 읽기(read) 성공 - POSIX 기본 권한
echo hello, world!
[servera]$ sh test_file.sh  // 실행(execute) 성공 - POSIX 기본 권한
hello, world!
[servera]$ echo -e "\nThis is Test" >> test_file.sh  // 쓰기(write) 실패
-bash: test_file.sh: Permission denied

 

 

 

3. ACL 설정

생성한 test_directory 디렉토리와 test_file.sh 파일에 ACL 설정을 통한 추가적인 쓰기(write) 권한을 castle 계정에 부여하자.

* 디렉토리 ACL 설정
[servera]# getfacl test_directory
# file: test_directory
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

[servera]# setfacl -m u:castle:rwx test_directory  // 기존 POSIX 권한이던 r,x는 그대로 유지하고, w 추가
[servera]# getfacl test_directory
# file: test_directory
# owner: root
# group: root
user::rwx
user:castle:rwx
group::r-x
mask::rwx
other::r-x

[servera]# ls -l | grep -i test
drwxrwxr-x+ 2 root root 26 Apr  7 15:22 test_directory  // '+' 표시는 ACL 설정이 있다는 뜻


* 파일 ACL 설정
[servera]# cd /test_directory
[servera]# getfacl test_file.sh
# file: test_file.sh
# owner: root
# group: root
user::rw-
group::r--
other::r--

[servera]# setfacl -m u:castle:rwx test_file.sh  // 기존 POSIX 권한이던 r,x는 그대로 유지하고, w 추가
[servera]# getfacl test_file.sh
# file: test_file.sh
# owner: root
# group: root
user::rw-
user:castle:rwx
group::r--
mask::rwx
other::r--

[servera]# cd test_directory/
[servera]# ls -l
total 4
-rw-rwxr--+ 1 root root 21 Apr  7 14:48 test_file.sh  // '+' 표시는 ACL 설정이 있다는 뜻

 

 

4. 권한 테스트(2차)

1차 테스트 때 test_directory에 대한 POSIX 권한은 읽기, 쓰기만 허용하기에 castle 계정에서는 쓰기가 안되었지만, 3번 과정에서 ACL을 통해 test_directory 디렉토리와 test_file.sh 파일에 대해 castle 계정에 기존 읽기, 쓰기는 유지하고, 쓰기 권한을 추가했다.

 

과연 실행이 될까?

[servera]# su - castle
[servera]$ cd /test_directory
[servera]$ cat test_file.sh  // 읽기(read) 성공 - POSIX 기본 권한
echo "Hello, world!"
[servera]$ sh test_file.sh  // 실행(execute) 성공 - POSIX 기본 권한
Hello, world!
[servera]$ echo -e '\necho "This is Test"' >> test_file.sh  // 수정(write) 성공 - ACL 추가 권한
[servera]$ sh test_file.sh
Hello, world!
This is Test

* POSIX 기본 권한인 755 디렉토리 및 644 파일에는 다른 사용자에게 수정 권한이 없지만, ACL을 통해 castle 계정에 권한을 추가했더니 수정이 된다.!!!

 

 

결론

POSIX 권한은 읽기 및 실행만 허용했지만, ACL을 통해 쓰기 권한을 부여함으로써 castle 계정은 파일을 수정할 수 있었다.

이는 ACL이 POSIX 권한을 보완하거나 덮어쓰기 위해 사용될 수 있음을 보여준다.

반응형

댓글

Designed by JB FACTORY