웹사이트 검색

사용자 및 그룹에 대한 ACL(액세스 제어 목록) 및 디스크 할당량을 설정하는 방법


액세스 제어 목록(ACL이라고도 함)은 일반 ugo/rwx 권한으로 지정된 것보다 파일 및 디렉터리에 대한 더 세분화된 액세스 권한을 정의할 수 있는 Linux 커널의 기능입니다.

예를 들어, 표준 ugo/rwx 권한은 개별 사용자나 그룹마다 다른 권한을 설정하는 것을 허용하지 않습니다. ACL을 사용하면 이 기사에서 볼 수 있듯이 비교적 쉽게 수행할 수 있습니다.

ACL과의 파일 시스템 호환성 확인

파일 시스템이 현재 ACL을 지원하는지 확인하려면 acl 옵션을 사용하여 ACL이 마운트되었는지 확인해야 합니다. 이를 위해 아래와 같이 ext2/3/4 파일 시스템에 tune2fs를 사용합니다. /dev/sda1을 확인하려는 장치 또는 파일 시스템으로 바꾸십시오.

tune2fs -l /dev/sda1 | grep "Default mount options:"

참고: XFS를 사용하면 액세스 제어 목록이 즉시 지원됩니다.

다음 ext4 파일 시스템에서 /dev/xvda2에 대해 ACL이 활성화된 것을 볼 수 있습니다.

tune2fs -l /dev/xvda2 | grep "Default mount options:"

위 명령이 파일 시스템이 ACL을 지원하여 마운트되었음을 나타내지 않으면 /etc/fstabnoacl 옵션이 있기 때문일 가능성이 높습니다.

이 경우 해당 파일을 제거하고 파일 시스템을 마운트 해제한 다음 다시 마운트하거나 /etc/fstab에 변경 사항을 저장한 후 시스템을 재부팅하세요.

Linux에서 ACL 소개

ACL 작동 방식을 설명하기 위해 developers라는 그룹을 사용하고 walterwhitesaulgoodman 사용자를 추가하겠습니다(예, 저는 Breaking Bad 팬입니다! ) 그것에.:

groupadd developers
useradd walterwhite
useradd saulgoodman
usermod -a -G developers walterwhite
usermod -a -G developers saulgoodman

계속하기 전에 두 사용자가 모두 개발자 그룹에 추가되었는지 확인하겠습니다.

id walterwhite
id saulgoodman

이제 /mnttest라는 디렉터리를 만들고 그 안에 acl.txt라는 파일(/mnt/test/acl)을 만듭니다. .txt).

그런 다음 그룹 소유자를 개발자로 설정하고 기본 ugo/rwx 권한을 770으로 반복적으로 변경합니다(따라서 읽기, 쓰기 및 실행 권한 부여). 파일의 소유자와 그룹 소유자 모두에게 부여된 권한):

mkdir /mnt/test
touch /mnt/test/acl.txt
chgrp -R developers /mnt/test
chmod -R 770 /mnt/test

예상대로 walterwhite 또는 saulgoodman으로 /mnt/test/acl.txt에 쓸 수 있습니다.

su - walterwhite
echo "My name is Walter White" > /mnt/test/acl.txt
exit
su - saulgoodman
echo "My name is Saul Goodman" >> /mnt/test/acl.txt
exit

여태까지는 그런대로 잘됐다. 그러나 개발자 그룹에 속하지 않은 다른 사용자에게 /mnt/test/acl.txt에 대한 쓰기 액세스 권한을 부여해야 할 때 곧 문제가 발생하게 됩니다.

표준 ugo/rwx 권한을 사용하려면 새 사용자를 개발자 그룹에 추가해야 하지만 이렇게 하면 해당 사용자에게 그룹이 소유한 모든 개체에 대해 동일한 권한이 부여됩니다. 이것이 바로 ACL이 유용한 곳입니다.

Linux에서 ACL 설정

ACL에는 두 가지 유형이 있습니다. 액세스 ACL(파일이나 디렉터리에 적용됨)과 기본(선택적) ACL(디렉터리에만 적용 가능) .

기본 ACL이 설정된 디렉터리 내의 파일에 자체 ACL이 없는 경우 해당 파일은 상위 디렉터리의 기본 ACL을 상속합니다.

사용자 gacanepa에게 /mnt/test/acl.txt에 대한 읽기 및 쓰기 액세스 권한을 부여해 보겠습니다. 그 전에 다음을 사용하여 해당 디렉터리의 현재 ACL 설정을 살펴보겠습니다.

getfacl /mnt/test/acl.txt

그런 다음 파일의 ACL을 변경하고 u: 뒤에 사용자 이름과 :rw를 사용하여 읽기/쓰기 권한을 나타냅니다.

setfacl -m u:gacanepa:rw /mnt/test/acl.txt

그리고 파일에 대해 getfacl을 다시 실행하여 비교하세요. 다음 이미지는 '이전''이후'를 보여줍니다.

getfacl /mnt/test/acl.txt

다음으로 /mnt/test 디렉토리에 대한 실행 권한을 다른 사람에게 부여해야 합니다.


chmod +x /mnt/test

일반 사용자가 디렉터리의 내용에 액세스하려면 해당 디렉터리에 대한 실행 권한이 필요하다는 점을 명심하세요.

이제 gacanepa 사용자가 파일에 쓸 수 있습니다. 해당 사용자 계정으로 전환하고 다음 명령을 실행하여 확인합니다.

echo "My name is Gabriel Cánepa" >> /mnt/test/acl.txt

기본 ACL을 디렉터리(다른 방식으로 덮어쓰지 않는 한 해당 콘텐츠가 상속됨)로 설정하려면 규칙 앞에 d:를 추가하고 파일 이름 대신 디렉터리를 지정합니다.

setfacl -m d:o:r /mnt/test
getfacl /mnt/test/

위의 ACL을 사용하면 소유자 그룹에 속하지 않은 사용자가 /mnt/test 디렉터리의 향후 콘텐츠에 대한 읽기 액세스 권한을 가질 수 있습니다. 변경 전과 후의 getfacl /mnt/test 출력의 차이점에 유의하세요.

특정 ACL을 제거하려면 위 명령의 -m-x로 바꾸세요. 예를 들어,

setfacl -x d:o /mnt/test

또는 -b 옵션을 사용하여 한 단계로 모든 ACL을 제거할 수도 있습니다.

setfacl -b /mnt/test

ACL 사용에 대한 자세한 내용과 예는 openSUSE 보안 가이드의 10장, 섹션 2를 참조하세요(PDF 형식으로 무료 다운로드도 가능함). ).

사용자 및 파일 시스템에 대한 Linux 디스크 할당량 설정

저장 공간은 주의 깊게 사용하고 모니터링해야 하는 또 다른 리소스입니다. 이를 위해 개별 사용자 또는 그룹에 대해 파일 시스템 기반으로 할당량을 설정할 수 있습니다.

따라서 특정 사용자 또는 특정 그룹에 허용되는 디스크 사용량에 제한이 있으며, 부주의한(또는 악의적인) 사용자로 인해 디스크 용량이 가득 차지 않도록 안심할 수 있습니다.

파일 시스템에서 할당량을 활성화하기 위해 가장 먼저 해야 할 일은 /etc/fstab에서 usrquota 또는 grpquota(각각 사용자 및 그룹 할당량) 옵션을 사용하여 파일 시스템을 마운트하는 것입니다.

예를 들어, /dev/vg00/vol_backups에서 사용자 기반 할당량을 활성화하고 /dev/vg00/vol_projects에서 그룹 기반 할당량을 활성화해 보겠습니다.

UUID는 각 파일 시스템을 식별하는 데 사용됩니다.

UUID=f6d1eba2-9aed-40ea-99ac-75f4be05c05a /home/projects ext4 defaults,grpquota 0 0
UUID=e1929239-5087-44b1-9396-53e09db6eb9e /home/backups ext4 defaults,usrquota 0 0

두 파일 시스템을 모두 마운트 해제하고 다시 마운트합니다.

umount /home/projects
umount /home/backups
mount -o remount /home/projects
mount -o remount /home/backups 

그런 다음 mount 출력에 usrquota 및 grpquota 옵션이 있는지 확인합니다(아래 강조 표시 참조).

mount | grep vg00

마지막으로 다음 명령을 실행하여 할당량을 초기화하고 활성화합니다.

quotacheck -avugc
quotaon -vu /home/backups
quotaon -vg /home/projects

즉, 이제 앞서 언급한 사용자 이름과 그룹에 할당량을 할당해 보겠습니다. 나중에 quotaoff를 사용하여 할당량을 비활성화할 수 있습니다.

Linux 디스크 할당량 설정

먼저 gacanepa 사용자에 대해 /home/backups에 ACL을 설정하여 해당 디렉토리에 대한 읽기, 쓰기 및 실행 권한을 부여해 보겠습니다.

setfacl -m u:gacanepa:rwx /home/backups/

그럼으로,

edquota -u gacanepa

소프트 limit=900 및 하드 limit=1000 블록(1024바이트/블록 * 1000블록=1024000바이트=1MB)을 만듭니다. ) 디스크 공간 사용량.

또한 이 사용자가 만들 수 있는 파일 수에 대한 소프트 및 하드 제한으로 2025를 설정할 수도 있습니다.

위 명령은 이전에 언급한 제한을 설정할 수 있는 임시 파일이 포함된 텍스트 편집기($EDITOR)를 시작합니다.

이러한 설정으로 인해 gacanepa 사용자가 기본 제한에 대한 900블록 또는 20inode 제한에 도달하면 경고가 표시됩니다. 7일간의 유예기간.

그때까지 할당량 초과 상황이 제거되지 않으면(예: 파일 제거) 소프트 제한이 하드 제한이 되며 이 사용자는 더 많은 저장 공간을 사용하거나 더 많은 공간을 생성할 수 없게 됩니다. 파일.

테스트하려면 gacanepa 사용자에게 /home/backups 내에 test1이라는 빈 2MB 파일을 생성해 보도록 하겠습니다.

dd if=/dev/zero of=/home/backups/test1 bs=2M count=1
ls -lh /home/backups/test1

보시다시피 디스크 할당량이 초과되어 쓰기 작업 파일이 실패합니다. 처음 1000KB만 디스크에 기록되므로 이 경우 결과는 파일이 손상될 가능성이 높습니다.

마찬가지로 해당 그룹의 구성원에게 /home/projects에 대한 rwx 액세스 권한을 부여하기 위해 개발자 그룹에 대한 ACL을 생성할 수 있습니다.

setfacl -m g:developers:rwx /home/projects/

다음을 사용하여 할당량 한도를 설정합니다.

edquota -g developers

앞서 gacanepa 사용자에게 했던 것과 같습니다.

유예 기간은 실행을 통해 초, 분, 시간, 일, 주 또는 월 단위로 지정할 수 있습니다.

edquota -t

블록 유예 기간 및 Inode 유예 기간 아래의 값을 업데이트합니다.

블록 또는 inode 사용(사용자 또는 그룹 기반으로 설정)과 달리 유예 기간은 시스템 전체에 설정됩니다.

할당량을 보고하려면 빠른 목록에 대해 quota -u [user] 또는 quota -g [group]을 사용하거나 repquota -v [/path/to /filesystem]을 이용하면 더 자세하고(장황하고) 형식이 좋은 보고서를 볼 수 있습니다.

물론 [user], [group][/path/to/filesystem]을 특정 사용자로 바꾸고 싶을 것입니다. 확인하려는 그룹 이름과 파일 시스템을 선택하세요.

요약

이 도움말에서는 액세스 제어 목록과 사용자 및 그룹에 대한 디스크 할당량을 설정하는 방법을 설명했습니다. 두 가지를 모두 사용하면 권한과 디스크 사용량을 보다 효과적으로 관리할 수 있습니다.

할당량에 대해 더 자세히 알아보려면 The Linux Documentation Project의 Quota Mini-HowTo를 참조하세요.

말할 필요도 없이 우리가 질문에 답해 줄 것이라고 믿을 수도 있습니다. 아래 의견 양식을 사용하여 제출하시면 기꺼이 살펴보겠습니다.