目标:
维护一个以前的同事系统,我想locking所有的密码login,以便只允许SSH密钥login。
相关信息:
CentOS 6.5系统不提供任何基于networking的authenticationfunction(Kerberos,ldap,gssapi等,/ /etc/nsswitch.conf
只知道“文件”)。
/etc/passwd
显示我期望的所有非系统用户。
问题:
/etc/shadow
只显示了其中的一半。 用passwd -l username
密码锁住他们的密码。 现在我想看到其他用户的条目,并且他们的密码也被locking了。
试用:
为“失踪”用户之一做了passwd -l username
,系统给我passwd: Success
。 但是我仍然看不到这个用户的影子。 有任何想法吗?
如果操作系统不知道密码哈希,失效等数据,那么确定的testing是:
getent shadow thatuser
如果操作系统可以通过任何方式获得这些数据(ldap或者其他),那么就有一个非空的输出行:
getent shadow thatuser thatuser:x:::::::
如果我使用文本编辑器从/etc/shadow
删除一行,则不会有输出。
无论是否存在阴影线,您build议的密码locking效果都很好。 不存在的阴影线意味着用户无法使用密码login。
以前的pipe理员可能通过手动编辑/etc/passwd
创build了一些用户。 它看起来很丑,但这不是一个错误; 操作系统被devise来处理。 重新填充阴影的一个快速方法是循环所有passwd条目这些命令:
chage -m 0 thatuser
这将创build缺less的/etc/shadow
行,只需login:x::0:::::
。 副作用是所有现有的/etc/shadow
行都会将“连续更改密码之间的最less天数”重置为零 。 但这不是一个经常使用的设置,你可能知道如果你需要它(公司政策等)。
我认为你应该能够禁止所有的密码login,并且只允许在系统上通过在全局sshconfiguration(通常在/ etc / ssh / sshd_config)中设置下面的configuration参数来进行基于密钥的身份validation:
PubkeyAuthentication yes PasswordAuthentication no
configuration文件发生任何更改后,您将需要重新加载sshd服务。