我使用以下命令将用户添加到我的服务器useradd -m -p PASS_HASH -s /usr/sbin/nologin USERNAME
然后我尝试访问他们的 samba 主页共享,但它从未显示,直到我使用该用户登录:
root:~$sudo login failtest
Password:######
Added user failtest.
有没有无需登录即可添加用户的方法?
编辑:问题是使用 useradd 命令添加用户,但 ubuntu 似乎在用户首次登录时运行初始化脚本。然后,此脚本将该用户添加到 tdbsam 用户数据库。查找初始化脚本或它用于将用户添加到 tdbsam 数据库的方法,而无需任何用户输入(因为 smbpasswd -a USER 会提示用户输入密码)。
所以我需要的是一种将用户+密码添加到 tdbsam 数据库而无需提示用户输入密码的方法(例如:samaba-add-user.sh USERNAME PASSWORD)。
答案1
我相信您可以使用“adduser”而不是“useradd”来解决这个问题。adduser 脚本应该会创建您要查找的其余内容。
答案2
我的直觉是 PAM 相关的问题。用户登录之前,其主目录是否存在,或者您是否依赖 pam_mkhomedir 来创建目录并拉入 skel?如果您使用 pam_mkhomedir,它是否在您的 samba PAM 配置中正确配置?
如果您不介意的话,您可以发布您的整个 PAM 配置吗?
答案3
这是因为 samba 在用户登录后与 passwd 同步。如果您希望用户能够在执行任何 shell 登录之前登录 samba,请smbpasswd -a failtest
在创建用户后运行。这会将正确的条目添加到 dbsam。
您也可以使用该pdbedit
实用程序手动执行此操作。