私は、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日)。bsoftlimit
bhardlimit
bsoftlimit
bhardlimit
1KiB単位なので、102400は100MiBを表します。 (実際にMiBではなくMBを希望する場合は97657を設定すればよいのです。) マンページには両方とも設定しなければならないとされていますが、ハード制限のみ要求されたので同じ値に設定しました。
isoftlimit
/を設定してihardlimit
inodeクォータ(おおよそ許容されるファイル数)を制御することもできます。一方を設定した場合は、他のものも設定する必要があります。
特定のユーザーに例外を許可するには、次を使用します。クォータ設定(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
設定
すでにクォータが設定されていると言っていますが、それを見つけてチートシートを必要とする他の人のために、次のことを行います。
apt install -y quota
usrquota
インストールオプションに追加してください/etc/fstab
。/dev/disk/by-uuid/89fc4b3e-3448-42d8-944d-588b6ec4284e /home ext4 defaults,usrquota 0 0
grpquota
Linuxには、「グループ」()と「プロジェクト」()という2つの異なるクォータタイプがあり、これをprjquota
有効にすることもできますが、pam_setquota(8)で管理されていないため、これらのクォータについて知りたい場合は、次の手順を実行します。マニュアルを読んで(そしてprjquota
読書を使用してください)。チャット(1))。新しいオプションを有効にする:
mount -o remount /home
(またはそうでなければ
reboot
)新しいオプションが適用されることを確認してください。
# mount | grep home /dev/mapper/home on /home type ext4 (rw,relatime,quota,usrquota,stripe=64)
この
usrquota
意味もあることに注意してくださいquota
。quotacheck
初期特殊ファイルを生成するために使用されます/home/aquota.user
。quotacheck -u -m /home
現在の使用量を計算するためにパーティション全体を検索するので、時間がかかります。これは
fsck
クォータに似ています。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)。