pam_setquota.so

pam_setquota.so

나는 Debian10 서버에 계정을 생성하는 모든 신규 사용자에 대해 기본 디스크 할당량을 설정하려고 합니다.

예를 들어, user1이 계정을 만들고 처음으로 시스템에 로그인할 때(ssh, su 또는 기타 수단을 통해) 그의 계정은 서버 관리자의 수동 개입 없이 100MB 디스크 할당량 하드 제한을 받습니다.

사용자에 대한 디스크 할당량을 설정할 수 있는 Perl 스크립트를 만들었지만 이는 루트에서 사용할 때만 작동합니다. 사용자가 자신의 할당량을 수정할 수 있으므로 이는 의미가 있습니다. 하지만 사용자 할당량이 자동으로 설정되도록 pam 모듈과 함께 사용할 수 있는 방법이 있습니까?

들어오는 모든 신규 사용자에 대해 자동 디스크 할당량을 설정하는 또 다른(아마도 더 나은) 방법이 있습니까?

답변1

pam_setquota.so

당신은 그것을 사용할 수 있습니다pam_setquota(8). 그것은 바로 이것을 위해 설계되었습니다.

이미 설치되어 있을 수도 있지만( 아래 /usr/lib/x86_64-linux-gnu/security/pam_setquota.so) 그렇지 않은 경우 먼저 설치하십시오.

apt install -y libpam-modules

/etc/pam.d/common-session새 사용자에 대해 100MB 할당량을 설정하려면 다음 줄을 포함하도록 구성을 편집해야 합니다.

session required    pam_setquota.so fs=/home bsoftlimit=102400 bhardlimit=102400

Debian 및 Ubuntu와 같은 파생 제품에는 이러한 구성을 편집하는 여러 패키지를 조정하기 위한 추가 추상화 계층이 있습니다.pam-auth-업데이트(8). 따라서 실제로 해야 할 일은 다음 파일을 추가하는 것입니다.

# /usr/share/pam-configs/setquota-home

Name: Set quotas for /home on first log in
Default: no
Priority: 120
Session-Type: Additional
Session-Interactive-Only: no
Session:
    required    pam_setquota.so fs=/home bsoftlimit=102400 bhardlimit=102400

그런 /etc/pam.d다음

pam-auth-update --enable setquota-home

아니면 내가 자주 하는 것처럼 스크립트를 작성한다면

DEBIAN_FRONTEND=noninteractive pam-auth-update --enable --force setquota-home

할당량을 설정할 파티션이 여러 개인 경우 pam-config각 파티션에 대해 별도의 할당량을 추가하고 활성화하여 각 파티션을 fs각기 다른 파티션의 탑재 지점으로 설정합니다.

매개변수

bsoftlimit쓰기가 즉시 차단되는 것이 아니라 일정 기간 후에 차단되는 임계값입니다. 더 크게 설정하면 사람들은 "한도"(일명)를 초과하지 않는 한 bhardlimit차단되기 전에 일시적으로 "할당량"(일명)을 초과할 수 있습니다 (기본적으로 최대 7일) .bsoftlimitbhardlimit

bsoftlimitbhardlimit1KiB 단위이므로 102400은 100MiB를 나타냅니다 . (실제로 MiB가 아닌 MB를 원하는 경우 97657을 설정하면 됩니다.) 맨페이지에는 둘 다 설정해야 한다고 되어 있는데, 하드 제한만 요청하셨기 때문에 동일한 값으로 설정했습니다.

isoftlimit/를 설정하여 ihardlimitinode 할당량(대략 허용되는 파일 수)을 제어 할 수도 있으며, 하나를 설정하면 다른 것도 설정해야 합니다.

특정 사용자에게 예외를 허용하려면 다음을 사용하세요.할당량 설정(8)할당량 높이기(또는 낮추기) - 여기서는 K(킬로바이트), M(테라바이트), G(기가바이트), T(테라바이트) 등의 단위를 사용할 수 있습니다. 예:

setquota hazimi 150M 2G 0 0 /home

이 작업을 실행 취소하려면 다음을 실행하세요.

setquota hazimi 0 0 0 0 /home

이는 할당량을 삭제하는 것으로 간주되어 다음에 로그인할 때 pam_setquota(8)재설정됩니다 .

overwrite임시 예외를 허용하지 않으려면 다음과 같이 설정하는 매개변수도 있습니다.

required    pam_setquota.so fs=/home overwrite=1 bsoftlimit=102400 bhardlimit=102400

그럼 모두의 할당량은강요된로그인당 최대 100MiB.

할당량 101

설정

이미 할당량이 설정되어 있다고 하셨지만, 이를 발견하고 치트 시트가 필요한 다른 사람을 위해 다음을 수행하십시오.

  1. apt install -y quota

  2. usrquota설치 옵션에 추가하세요 /etc/fstab.

    /dev/disk/by-uuid/89fc4b3e-3448-42d8-944d-588b6ec4284e /home ext4 defaults,usrquota 0 0
    

    grpquotaLinux에는 "그룹"( ) 및 "프로젝트"( ) 라는 두 가지 다른 할당량 유형이 있으며 prjquota이를 활성화할 수도 있지만 pam_setquota(8)로 관리되지 않으므로 이러한 할당량에 대해 알고 싶다면 다음을 수행하세요. 설명서를 읽고(그리고 prjquota읽기를 사용하십시오.채팅(1)).

  3. 새 옵션 활성화:

    mount -o remount /home
    

    (또는 그렇지 않으면 reboot)

  4. 새 옵션이 적용되는지 확인합니다.

    # mount | grep home
    /dev/mapper/home on /home type ext4 (rw,relatime,quota,usrquota,stripe=64)
    

    usrquota의미도 있음 을 참고하세요 quota.

  5. quotacheck초기 특수 파일을 생성 하는 데 사용됩니다 /home/aquota.user.

    quotacheck -u -m /home
    

    현재 사용량을 계산하기 위해 전체 파티션을 검색하므로 시간이 좀 걸립니다. 이는 fsck할당량과 비슷합니다.

  6. quotaon /home

    할당량이 활성화되면 커널은 /home/aquota.user전체 디스크를 다시 검색하지 않고도 모든 쓰기를 추적할 수 있으므로 전체 디스크를 다시 검색하지 않고도 효율적으로 업데이트됩니다.

용법

사용자에게 셸 액세스 권한이 있는 경우 다음 명령을 사용하여 현재 할당량을 볼 수 있습니다.할당량(1)

$ quota -s --show-mntpoint --hide-device
Disk quotas for user hazimi (uid 1004): 
     Filesystem   space   quota   limit   grace   files   quota   limit   grace
          /home    120G*   100G   1024G   6days    344k       0       0        

관리자는 다음을 통해 모든 할당량에 대한 개요를 확인할 수 있습니다.대표 할당량(8).

관련 정보