Linux에서 매우 유용한 기능은 파일 및 디렉토리에 대한 액세스를 제어하는 "액세스 제어 목록"입니다. Linux에서 파일 권한을 제어하기 위해 액세스 제어 목록이 작동하는 방식은 다음과 같습니다.
참고: 액세스 제어 목록이 어떻게 작동하는지 철저히 파악하기 위해 먼저 작동하는 Linux 시스템에서 일부 사용자와 그룹을 설정합니다. 다음 연습은 Kali 운영 체제를 실행하는 가상 머신에서 수행됩니다. 루트 사용자는 시스템에 새 사용자를 추가하고 그룹에 할당할 수 있는 권한이 있습니다.
사용자 및 그룹 만들기
먼저 루트로 로그인하여 사용자를 생성하고 아래 표와 같이 각 그룹에 넣습니다. 개념을 더 잘 이해할 수 있도록 사용자에게 간단한 이름을 지정했습니다.
사용자 | 그룹 |
---|---|
존1 존2 존3 | 존스 |
제인1 제인2 | 제인 |
adduser
를 사용하겠습니다. 시스템에 새 사용자를 추가하는 명령입니다.
id
명령은 새로 생성된 사용자의 세부 정보를 표시합니다. 사용자 ID(uid), 그룹 ID(gid) 및 그룹 이름(groups)이 표시됩니다. 사용자는 생성 시 사용자 이름과 동일한 이름을 가진 그룹에 자동으로 추가됩니다. 해당 사용자는 그룹의 유일한 구성원이 됩니다.
마찬가지로 사용자 "john2" 및 "john3"도 생성됩니다.
adduser john2 adduser john3
3명의 사용자가 생성되면 id
를 사용합니다. 각 사용자 및 그룹 ID를 보려면 명령을 사용하십시오.
세 명의 사용자가 각자의 그룹인 1000, 1001, 1002에 속해 있음을 알 수 있습니다. 앞서 표시된 표에 따르면 세 명의 사용자가 같은 그룹에 있기를 원합니다. johns
. 이러한 그룹은 현재 시스템에 존재하지 않으므로 groupadd
를 사용하여 생성합니다. 명령:
groupadd -g <new_group_ID> <group_name>
새 그룹 ID는 5000으로 지정됩니다. -g
스위치가 무시되면 시스템이 자동으로 그룹 ID를 선택합니다. 새 그룹의 이름은 "johns"입니다. 이제 "john1", "john2" 및 "john3"의 세 사용자를 이 그룹의 구성원으로 추가해야 합니다. 우리는 usermod
를 사용할 것입니다. 이 작업에 대한 명령입니다.
usermod -g <group_name> <user_name>
usermod
사용자 "user_name"을 "group_name" 그룹에 추가합니다. 다음 그림은 그룹 변경 전 "john1"의 uid와 gid를 먼저 보여줍니다. usermod
이후 명령이 성공적으로 실행되면 "john1"이 gid 5000인 "johns" 그룹에 추가됩니다.
사용자 "john2" 및 "john3"에 대해서도 동일한 프로세스가 수행됩니다.
usermod -g johns john2 usermod -g johns john3
마지막으로 "johns" 그룹의 세 사용자에 대한 세부 정보는 id
를 사용하여 볼 수 있습니다. 명령.
3명의 사용자를 성공적으로 생성하여 동일한 그룹에 추가했습니다.
마찬가지로 사용자 'jane1' 및 'jane2'가 생성되어 gid가 6000인 'janes' 그룹에 추가됩니다. 세부정보는 id
를 사용하여 볼 수 있습니다. 아래와 같이 명령합니다.
액세스 제어 목록이 필요한 이유는 무엇입니까?
사용자 "john1"이 로그인했다고 가정해 보겠습니다.
홈 디렉토리에 새 파일 생성,
콘텐츠를 추가합니다.
ls
사용 명령을 사용하여 파일의 메타데이터를 봅니다.
출력의 처음 몇 문자, - rw - r - - r - -
권한 문자열에 대한 계정입니다. 해부해 봅시다.
– | rw – | r – – | r – – |
---|---|---|---|
파일 형식 | john1이 파일에 대해 가지고 있는 권한 | johns 그룹의 구성원이 파일에 대해 갖는 권한 | johns 그룹에 속하지 않은 다른 사람에게 부여된 권한 |
이 문서는 파일 권한에 대한 좋은 입문서입니다.
파일 소유자인 "john1"이 "john2" 및 "jane1"에만 쓰기 권한을 추가로 부여하고 "john3" 및 "jane2"에 대한 읽기 권한은 유지하려면 어떻게 합니까?
rw – | r – – |
---|---|
john1 john2 제인1 | 존3 제인2 |
한 가지 옵션은 "john1", "john2" 및 "jane1"에 대한 읽기, 쓰기 권한이 있는 새 그룹과 "john3" 및 "jane2"에 대한 읽기 권한만 있는 다른 그룹을 만드는 것입니다. john1이 그룹 구성원에 대한 권한을 추가로 수정하려는 경우 더 많은 그룹을 만들어야 합니다. 여러 그룹을 만들고 관리하는 것은 시스템 관리자에게 부담이 됩니다.
대신, 모든 사용자가 해당 파일에서 수행할 수 있는 작업을 명확하게 설명하는 "액세스 제어 목록"을 파일에 대해 생성할 수 있습니다.
파일에 대한 ACL(액세스 제어 목록)을 만드는 방법은 무엇입니까?
생성 시 모든 파일에는 ACL이 할당됩니다. 그것을 효율적으로 사용하는 것은 단순히 그것을 수정하는 문제입니다. 파일 소유자와 루트 사용자만 파일의 ACL을 수정할 수 있습니다.
getfacl
을 사용할 수 있습니다. 기존 ACL을 보는 명령:
getfacl <file_name>
#
로 시작하는 줄 주석 라인입니다. 실제 정보는 이전에 얻은 권한 문자열과 유사한 출력의 마지막 세 줄에 있습니다. "user" 줄은 파일 소유자 "john1"에게 할당된 권한을 나타냅니다. "그룹" 줄은 "johns" 그룹의 다른 구성원에게 할당된 권한을 나타냅니다. 짐작하셨겠지만 "기타" 줄은 그룹 외부의 다른 사람을 나타냅니다.
setfacl
을 사용합시다. 파일의 기존 ACL을 수정하는 명령입니다.
setfacl -m entity:name:permissions <file_name>
엔티티 | 이름 | 권한 |
---|---|---|
여기에 있는 값은 ACL 항목이 누구를 위한 것인지를 나타냅니다. 사용자(u) 또는 그룹(g) 또는 기타(o) | ACL 항목과 관련된 사용자 또는 그룹의 이름 | 읽기, 쓰기, 실행 권한은 r,w,x 문자로 표시됩니다. |
"john2"는 먼저 파일에 대한 읽기, 쓰기 액세스 권한을 부여받습니다.
뒤에 "jane1"이 옵니다.
"secretfile"에 대한 업데이트된 ACL을 살펴보겠습니다.
읽기 및 쓰기 권한이 "john2" 및 "jane1"에 할당된 것을 볼 수 있습니다.
ACL의 진위 여부 확인
"john2"가 파일을 읽고 쓸 수 있음을 알 수 있습니다.
"john2"가 입력한 새로운 정보가 파일에 추가되었습니다.
마찬가지로 "jane1"은 읽기 액세스 및 쓰기 액세스와 같은 동일한 권한을 갖습니다.
하지만 같은 그룹의 "john3"은 파일에 쓸 수 없습니다.
다른 카테고리에 속하는 "jane2"도 파일에 쓸 수 없습니다.
결론
동일한 프로세스를 디렉토리로도 확장할 수 있습니다. 액세스 제어 목록을 사용하면 시스템 관리자가 파일 및 디렉토리 액세스를 능숙하게 처리할 수 있습니다.