我有一个有多个用户的Linux系统。我不知道他们的密码,也不想知道他们。
我必须通过 SSH 批量复制他们的一些目录以及他们的帐户和密码。
我的想法是备份/etc/shadow
,然后为每个用户(我知道的密码,如“tmppass”)用新密码修改它,进行备份,然后/etc/shadow
用旧文件替换它。
那行得通吗?如果是这样,我如何生成密码? (密码类似于 $1$xxxxxx/xxxxx)。
答案1
只需备份文件/etc/shadow
,然后使用以下命令更改用户密码passwd
:
备份影子文件:
sudo cp /etc/shadow /etc/shadow.bak
更改您要访问的用户的密码(例如
testuser
):sudo passwd testuser
完成后,从备份中恢复 /etc/shadow 文件:
sudo mv /etc/shadow.bak /etc/shadow
请注意,所有密码都应重置为备份时的密码。
适用于 Fedora 19
注意不是您所要求的,但通过以下方式访问这些用户会更容易:
sudo -u testuser bash
这只需要使用 sudo 进行身份验证,而不需要以该用户身份进行身份验证。
答案2
虽然这是可能的,但这很少是正确的做事方式。我强烈怀疑,往好里说,你是在让你的生活变得过于复杂;在最坏的情况下,当你可以做安全的事情而不需要额外的费用时,你会做一些不安全的事情。
SSH 允许客户端使用密钥而不是密码进行身份验证。这对于自动化使用特别有用:创建密钥对,将私钥存储在没有密码的文件中,然后使用它连接到远程主机(您已预先将公钥添加到授权列表中)。请小心使用无密码的私钥文件,因为拥有它可以允许登录帐户;您可以对可以使用密钥执行的命令以及接受密钥的 IP 地址进行限制,以减少泄露的密钥文件的影响。
我想不出在您描述的场景中不使用密钥的充分理由。