![/etc/passwd 更新不起作用](https://linux22.com/image/103394/%2Fetc%2Fpasswd%20%E6%9B%B4%E6%96%B0%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
在我使用的一台机器中,我看到了一种奇怪的行为。我已经手动更改了 /etc/passwd 中一个用户的 shell,但是当我尝试使用该用户登录时,它仍然使用旧的 shell。 getent 还显示旧的。但 /etc/passwd 文件上的 grep 确认我正确保存了该文件。
(在 Linux 上)是否有任何类型的 /etc/passwd 缓存?
如何避免呢?
答案1
你有一个名为 running 的进程吗nscd
?这就是名称服务缓存守护进程。
如果它正在运行,您可能需要运行sudo nscd -i passwd
来告诉它应该忘记任何缓存的/etc/passwd
文件数据。它还有其他缓存:它们各自的关键字是group
、hosts
和services
。netgroup
它更常与基于 LDAP/AD/NIS 的身份验证方案一起使用,但如果您正在运行某些进行大量用户/组/服务/主机文件查找的进程,则可能会提高系统性能。或者,如果您安装了一些实际上并未使用的服务(可能只使用其中的一小部分),则某些服务可能已nscd
作为依赖项引入。