AD Samba-Dateiserver, PAM, Kontingent festlegen, wenn sich der Benutzer zum ersten Mal verbindet

AD Samba-Dateiserver, PAM, Kontingent festlegen, wenn sich der Benutzer zum ersten Mal verbindet

Ich versuche, Kontingente für einige Verzeichnisse festzulegen, wenn sich der Benutzer zum ersten Mal mit der Samba-Box verbindet (die unter Rocky Linux 8 läuft). Bevor der Benutzer also die Samba-Freigabe verwenden kann, muss er sich mit der Maschine verbinden (Konsole oder SSH, egal). Dabei wird ein Skript von pam_exec.so ausgeführt, das eine Reihe von Ordnern erstellt, Berechtigungen festlegt und Dateien erstellt. Ich habe versucht, den Befehl „setquota“ in dieser Datei zu verwenden, aber ohne Erfolg. Ich habe die Flags in der fstab-Datei richtig gesetzt, da der eigenständige Befehl „setquota“ korrekt funktioniert, wenn er von der Root-Sitzung aus gestartet wird.

Also habe ich dann das Modul pam_setquota.so ausprobiert, da es sowieso dasselbe tun würde. Nein, dasselbe Ergebnis. Ich schätze, beiden gefällt es wirklich nicht, dass der Benutzer ein ActiveDirectory-Benutzerformat ist. Das Benutzerformat ist DOMAIN\User (und es muss normalerweise DOMAIN\\User sein). Samba ordnet den Benutzer ab 10000 einer UID zu. Ich habe versucht, das Format des Benutzers zu ändern (verschiedene Varianten von \\), aber nichts funktioniert, außer wenn ich den Befehl von der Root-Shell aus ausführe, meldet er korrekte Ergebnisse.

Ausschnitt aus dem pam_exec-Ausführungsskript

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-Zeile session optional pam_setquota.so fs=/data overwrite=1 startuid=10000 enduid=0 bsoftlimit=0 bhardlimit=10485760 isoftlimit=0 ihardlimit=0

wenn ich renne setquota -u DOMAIN\\User 0 10485760 0 0 /dataund repquota /data es mir zeigt Repquotenergebnis

und da es der erste verbundene Benutzer ist, nimmt er die UID #10000 an.

Was übersehe ich hier? Vielen Dank.

Antwort1

Es stellt sich heraus, dass „setquota“ in diesem Stadium nichts bedeutet, Sie müssen also den vollständigen Pfad verwenden, um es aufzurufen (/usr/sbin/setquota).

Außerdem mag es, wie erwartet, den Samba-Namen nicht. Das kann behoben werden, indem man

quota_user =`id -u ${PAM_USER}`
/usr/sbin/setquota -u ${quota_user} 0 10485760 0 0 /data

verwandte Informationen