当用户第一次连接到 samba 盒(在 Rocky Linux 8 上运行)时,我尝试在某些目录上设置配额。因此,在能够使用 samba 共享之前,用户必须连接到计算机(控制台或 ssh,没关系)。在执行此操作时,pam_exec.so 运行一个脚本,该脚本创建一堆文件夹、设置权限并创建文件。我尝试在该文件中使用“setquota”命令,但没有成功。我已在 fstab 文件中正确设置标志,因为独立命令“setquota”在从根会话启动时可以正常工作。
所以我然后尝试了 pam_setquota.so 模块,因为无论如何它都会做同样的事情。不,同样的结果。我想两者都真的不喜欢用户是 ActiveDirectory 用户格式。用户格式是 DOMAIN\User (通常需要是 DOMAIN\\User)Samba 将用户映射到从 10000 开始的 uid。我尝试更改用户的格式(不同风格的 \\)但没有任何效果,除了如果我从 root shell 运行该命令,它会报告正确的结果。
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
我在这里缺少什么?非常感谢。