ユーザーが初めて samba ボックス (Rocky Linux 8 で実行) に接続するときに、いくつかのディレクトリにクォータを設定しようとしています。したがって、samba 共有を使用する前に、ユーザーはマシンに接続する必要があります (コンソールまたは ssh は関係ありません)。その際に、pam_exec.so によって実行されるスクリプトがあり、一連のフォルダーを作成し、権限を設定し、ファイルを作成します。そのファイルで "setquota" コマンドを使用しようとしましたが、成功しませんでした。スタンドアロン コマンド "setquota" は、ルート セッションから起動すると正常に機能するため、fstab ファイルでフラグを正しく設定しました。
そこで、pam_setquota.so モジュールを試してみました。いずれにせよ、同じ結果になるはずです。どちらも、ユーザーが ActiveDirectory ユーザー形式であることが気に入らないようです。ユーザー形式は DOMAIN\User です (通常は DOMAIN\\User である必要があります)。Samba は、ユーザーを 10000 から始まる uid にマップします。ユーザーの形式 (\\ のさまざまな種類) を変更しようとしましたが、何も機能しません。ただし、ルート シェルからコマンドを実行すると、正しい結果が報告されます。
pam_exec 実行スクリプトからの抜粋
if [[ "${PAM_USER}" == *\\* ]];then
folder="/data/${PAM_USER}"
if [ ! -d "$folder" ]; then
mkdir "$folder"
chmod 555 "$folder"
.
.
.
quota_user="${PAM_USER}//\\/\\\\}"
setquota -u ${quota_user} 0 10485760 0 0 /data
.
.
.
fi
if
pam_setquota 行
session optional pam_setquota.so fs=/data overwrite=1 startuid=10000 enduid=0 bsoftlimit=0 bhardlimit=10485760 isoftlimit=0 ihardlimit=0
私が走ってsetquota -u DOMAIN\\User 0 10485760 0 0 /data
それrepquota /data
が私に表示されたら
最初の接続ユーザーなので、UID #10000を取得します。
ここで何が欠けているのでしょうか? どうもありがとうございます。
答え1
その段階では setquota は何も意味しないことが判明したので、それを呼び出すには完全なパス (/usr/sbin/setquota) を使用する必要があります。
また、予想通り、sambaという名前は気に入らないようです。これは次のように修正できます。
quota_user =`id -u ${PAM_USER}`
/usr/sbin/setquota -u ${quota_user} 0 10485760 0 0 /data