如果用户存储在 MySQL 数据库中,如何使用 passwd 更改 UNIX 用户密码?

如果用户存储在 MySQL 数据库中,如何使用 passwd 更改 UNIX 用户密码?

我正在尝试设置libnss-mysqllibpam-mysql。到目前为止,一切正常。我可以使用id获取有关存储在我的数据库中的用户的信息。getent passwd也可以正常工作。但是,getent shadow不行。此外,我无法更改使用存储在数据库中的用户的密码passwd。有没有办法解决这些问题?

顺便说一句,我正在运行 Ubuntu 10.04 作为最小虚拟机。

更新

我唯一更改的配置文件是/etc/nss-mysql.conf/etc/nss-mysql-root.conf/etc/nsswitch.conf。我很确定前两个是正确的。因为它们只是配置如何访问数据库。我只在后一个配置文件的以下三行中添加了“mysql”一词:

passwd: compat mysql
groups: compat mysql
shadow: compat mysql

我没有动过任何其他配置文件。如果你们其中有人需要查看任何其他文件,请告诉我,因为现在我不知道哪个其他配置文件可能令人感兴趣。

答案1

通常情况下,getent shadow除非您是 root 身份,否则不会返回任何内容。

您需要更改 /etc/pam.d 中的 PAM 配置以使用 mysql PAM 模块。

此后,您将能够使用常规passwd命令更改密码。

相关内容