![如何使用 sudo 设置违反密码约束的密码而不更改约束](https://linux22.com/image/77282/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20sudo%20%E8%AE%BE%E7%BD%AE%E8%BF%9D%E5%8F%8D%E5%AF%86%E7%A0%81%E7%BA%A6%E6%9D%9F%E7%9A%84%E5%AF%86%E7%A0%81%E8%80%8C%E4%B8%8D%E6%9B%B4%E6%94%B9%E7%BA%A6%E6%9D%9F.png)
我在其他人共享的计算机上具有 root 访问权限。我认为密码限制是荒谬的,它们在如何强制使用和排序非单词字符方面过于过度,并且由于不断需要使用特殊字符来分解密码,因此使密码输入速度变慢(即使我输入 I'对于特殊字符,我总是慢一点,这似乎打断了我的流程)。我可以创建一个长而安全的密码,不受任何限制。我想使用 root 访问权限来规避密码规则,以创建一个我喜欢且可以快速输入的密码。
但是,我不想自己更改密码限制。或者更准确地说我做想要改变它们,我认为它们是愚蠢的,并且实际上并没有增加书面的安全性,但我不应该改变它们,因为这是由更高权威机构监管的。
有没有一种方法可以利用我的 root 访问权限来设置违反这些限制的密码,而不会更改系统上任何其他人的约束?
答案1
您可以尝试printf "%s\n" 'username:encryptedpassword' | sudo chpasswd -e
- 这也许能够绕过 PAM 强制执行的密码检查。
密码必须预先加密,例如mkpasswd
muru 的示例。例如:
p=$(mkpasswd -m sha-512 'mysupersekretpassword')
printf "%s:%s\n" 'username' "$p" | sudo chpasswd -e
我printf
在这里使用而不是echo
因为echo
会解释和更改某些字符序列的输出可能出现在加密密码中,例如\t
、\n
、\nnn
(3 位八进制)等。
请记住mkpasswd
从您的.bash_history
.或者使用命令export HISTCONTROL=ignorespace
并p=$(...)
在命令前添加空格,这样它就不会存储在历史记录中。如果您不使用 bash,请使用适合您的 shell 的方法。
答案2
您可以以管理员身份手动更改密码。只需登录并执行以下操作:
输入:
# passwd whitecat
输出应该是:
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
答案3
可能还有其他更安全的方法,但一种方法是编辑/etc/shadow
.获取您想要的密码的加密形式:
$ mkpasswd -m sha-512
Password:
$6$zGvnR7mWtj59LfpO$t/VMNTbqyp9ykVMWUhsXghVvJ15iGDiFwvhNYaJIbBy8iM9E/vHSTmbBa0iotCLBA.MGBM949tyoxrjX81Qkg1
foo
如果您想知道的话,这是 的加密形式。
编辑/etc/shadow
:
sudo vipw -s
找到您的用户,将当前密码替换为生成的密码,保存并退出。如果你搞砸了,那将是地狱,所以让sudo
会话在另一个终端中运行。