pam_setquota.so

pam_setquota.so

私は、Debian10サーバーにアカウントを作成するすべての新規ユーザーに対してデフォルトのディスククォータを設定しようとしています。

たとえば、user1がアカウントを作成して初めてシステムにログインするとき(ssh、su、またはその他の手段を介して)、そのアカウントはサーバー管理者の手動介入なしに100 MBのディスククォータのハード制限を受けます。

ユーザーのディスククォータを設定できるPerlスクリプトを作成しましたが、これはrootで使用している場合にのみ機能します。ユーザーが自分のクォータを変更できるため、これは意味があります。しかし、ユーザークォータが自動的に設定されるように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新しいユーザーに100 MBのクォータを設定するには、次の行を含むように構成を編集する必要があります。

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には、「グループ」()と「プロジェクト」()という2つの異なるクォータタイプがあり、これを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)

おすすめ記事