![Linux 到 Samba 自动密码同步](https://linux22.com/image/692662/Linux%20%E5%88%B0%20Samba%20%E8%87%AA%E5%8A%A8%E5%AF%86%E7%A0%81%E5%90%8C%E6%AD%A5.png)
在网上什么也没找到:我正在寻找一种自动同步 linux 和 samba(而不是 Samba 和 Linux)密码的方法。我编写了一个 cgi web 表单,使用加密密码直接在影子文件中更改此密码(出于安全原因,我不想允许将密码以明文形式存储在日志文件中)。不使用 LDAP。如果用户第一次使用 ssh 登录,一切都会很好,但我有一些用户只使用 windows,所以我不能要求秘书这样做。
基本上,我所做的是:vi /etc/pam.d/common-password
password required pam_smbpass.so nullok use_authtok use_first_pass
- 我也尝试过changepassword-0.9,但是有一个错误一直未被它的程序员解决。
- 特警对我来说不是一个解决办法。
我还找到了以下网站,但仍在努力寻找......
-http://uranus.chrysocome.net/linux/smbfs/pam_smbpass.html
这里是我的 perl cgi 脚本的一些代码:
# Crypt the password here so that it cannot be read in any logflie
my $cryptedShadowString = `echo "$new_passwd1"|openssl passwd -1 -stdin`;
chomp($cryptedShadowString);
(...)
open($result, '-|') || exec $SUDO, $EXECUTINGSCRIPT, $login, $old_passwd, $cryptedShadowString, $cryptedShadowString;
这会将加密的密码发送到另一个 perl 脚本,该脚本会将其直接写入影子文件。(所有内容都受密码保护,因此我不在乎来自世界各地的黑客)。
我在执行脚本中尝试了类似的事情,但不幸的是,这不是解决方案:
# Do a first login to chat the new password to the samba password file:
sleep 2; # sleep a bit, for the next command:
system(" ( echo '') | exec '/bin/su' $login");
有人能帮助我吗?谢谢。
答案1
这实际上就是域的用途。使用 AD 域、samba 作为 DC 或仅使用 LDAP 作为密码后端。目前您正在重新发明轮子,而这个轮子呈三角形。
此外,您试图寻求帮助来完善您认为可能常见的任务的解决方案,但并未提及该任务是什么。我敢打赌,除非您正在进行一些高级研究,否则这是标准做法(但很抱歉,您的帖子显然没有给人留下这样的印象)。