没有密码创建的用户的行为就像他有密码一样

toa*_*ter 4 users password sudo

在我的一个脚本中,我根据另一台机器上的目录排列创建了一个用户。

问题是,这个用户是在没有密码的情况下创建的,他的行为就像他拥有的一样:他有 sudo 权限,但我根本不能 sudo 因为它要求输入一个不存在的密码。我知道我可以简单地将他作为 root 传递给他,但是设计的系统必须在没有本地 root 特权用户干预的情况下工作。

由于 passwd 要求我提供相同的不存在密码,因此我也无法将其作为相关用户进行 passwd 。

我想这是预期的行为,但是最终的默认密码是什么,我该怎么做才能规避呢?

编辑:这是脚本的作用:

1:它从我们的ssh网关机器rsyncs应该在/opt/sshgw/home(sshgw意味着ssh网关)中创建或更新的用户的主目录

2:它删除运行脚本的机器的每个用户的所有授权密钥

3:它从轮组中删除每个用户并执行 usermod -L(我不是脚本的作者,我真的不知道他为什么锁定帐户,但无论如何。)但请记住,此时仅存在用户被修改。

4:如果用户已经从 sshgw 中检索到并且它们不存在于本地机器上,则创建用户,然后,如果指定,则将它们添加到轮组。然后它将他们的公钥添加到他们正确的主目录中,最后执行 usermod -U。

用户在/etc/passwd 中的输入是正常的。

在调用 passwd 时,用户会以这种方式被询问他当前的密码(请注意,对于刚刚创建的没有密码的用户,该密码不存在):

[splatpope@monitor sshgw]$ passwd
Changing password for user splatpope.
Changing password for splatpope.
(current) UNIX password:
Run Code Online (Sandbox Code Playgroud)

我猜罪魁祸首是 usermod -U。

yoo*_*nix 7

默认情况下,用户创建为锁定帐户。应包含密码哈希的字段/etc/shadow将包含!!. 当帐户被锁定时,该帐户仅对 root 可用(root 可以 su 但不允许登录)。如果您“解锁”该帐户,该帐户只是删除了!!您将被允许更改密码。

[root@test ~]# su - test
[test@test ~]$ passwd
Changing password for user test.
Changing password for test.
(current) UNIX password:
[test@test ~]$ exit
logout
[root@test ~]# passwd -u test
Unlocking password for user test.
passwd: Warning: unlocked password would be empty.
passwd: Unsafe operation (use -f to force)
[root@test ~]# passwd -u test -f
Unlocking password for user test.
passwd: Success
[root@test ~]# su - test
[test@test ~]$ passwd
Changing password for user test.
New password:
Run Code Online (Sandbox Code Playgroud)