我试图在linux机器上添加新用途。 我用过这个命令。
adduser "user_name" -u "UID" -G "GROUP_NAME"
在/ etc / shadow中看到的条目是
"user_name":$1$IfBL9BXC$ealgUJum3HJsDRqOUY74O1:0:0:99999::::
但是当我尝试使用相同的用户名登录时,我的密码被接受,但立即要求我更改密码,如下所示。
You are required to change your password immediately (root enforced)
我该怎么办?
答案 0 :(得分:5)
对于任何在处理此事时遇到此问题的人。 DigitalOcean机器以这种方式设置,并且不想手动修复它,因为它们无论如何都自动部署并且只使用publickey认证,这是一个Ansible任务来解决这个问题:
# http://docs.ansible.com/ansible/lineinfile_module.html
# Get rid of DO's root password and 'you must change next time you login' stuff
- name: Setup root account properly
lineinfile:
backup: yes
dest: /etc/shadow
regexp: "^root:.*$"
state: present
line: "root:*:16231:0:99999:7:::"
答案 1 :(得分:1)
对于我来说,我想在创建Droplet实例时在指定的用户数据中非交互地安装MySQL 8.0,它显示错误You are required to change your password immediately (root enforced)
。
我的解决方案基于unilynx的答案,但不需要Ansible(因为在Ansible运行主机中的任务之前先运行用户数据)
sed -i 's/^root:.*$/root:*:16231:0:99999:7:::/' /etc/shadow
这样,root帐户被禁用了登录,但是我没有收到上面提到的错误。
答案 2 :(得分:0)
最好的办法是按要求更改密码。
/etc/shadow
文件中的第三个字段表示自上次更改密码以来的天数(自1970年1月1日起)。空值表示密码从未更改,值0
强制用户更改密码。
作为替代方案,您可以修改/etc/shadow
文件并从第三个字段中删除0
。但这样做需要您自担风险。