Servidor de archivos AD Samba, PAM, establece cuota cuando el usuario se conecta por primera vez

Servidor de archivos AD Samba, PAM, establece cuota cuando el usuario se conecta por primera vez

Estoy intentando establecer una cuota en algunos directorios cuando el usuario se conecta por primera vez a Samba Box (que se ejecuta en Rocky Linux 8). Entonces, antes de poder usar el recurso compartido de samba, el usuario debe conectarse a la máquina (consola o ssh, no importa). Mientras hace eso, hay un script ejecutado por pam_exec.so que crea un montón de carpetas, establece permisos y crea archivos. Intenté utilizar el comando "setquota" en ese archivo sin éxito. He configurado correctamente las banderas en el archivo fstab ya que el comando independiente "setquota" funciona correctamente cuando se inicia desde la sesión raíz.

Entonces probé el módulo pam_setquota.so, ya que de todos modos haría lo mismo. No, el mismo resultado. Supongo que a ambos realmente no les gusta que el usuario tenga el formato de usuario de ActiveDirectory. El formato de usuario es DOMINIO\Usuario (y generalmente debe ser DOMINIO\\Usuario). Samba asigna el usuario a uid a partir de 10000. Intenté cambiar el formato del usuario (diferentes versiones de \\) pero nada funciona, excepto si ejecuto el comando desde el shell raíz, informa resultados correctos.

fragmento del script de ejecución 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

línea pam_setquota session optional pam_setquota.so fs=/data overwrite=1 startuid=10000 enduid=0 bsoftlimit=0 bhardlimit=10485760 isoftlimit=0 ihardlimit=0

si corro setquota -u DOMAIN\\User 0 10485760 0 0 /datay repquota /data me muestra resultado de cuota de reps

y como es el primer usuario conectado, toma UID #10000

¿Que me estoy perdiendo aqui? Muchas gracias.

Respuesta1

Resulta que setquota no significa nada en ese momento, por lo que debes usar la ruta completa para llamarlo (/usr/sbin/setquota).

Además, como era de esperar, no le gusta el nombre de samba. Que se puede arreglar usando

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

información relacionada