AD Samba ファイル サーバー、PAM、ユーザーが初めて接続したときにクォータを設定する

AD Samba ファイル サーバー、PAM、ユーザーが初めて接続したときにクォータを設定する

ユーザーが初めて 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

関連情報