如何从脚本添加具有随机或无效密码的 linux 用户

use*_*096 5 security linux unix permissions user-management

我想从脚本中将用户添加到 linux 系统,但我不想发明或关心密码。这应该自动完成。

目标是生成 ssh-keys,这个用户只需要远程登录。或者,该用户将通过 sudo 用户使用sudo su - thatuser

我想省去每次创建这样的用户时发明和输入一些安全密码的麻烦,并且还从脚本中执行此操作。

没有人应该能够以该用户的身份使用密码登录,所以我的想法是他获得了一个很好的随机密码,但没有人知道。

我可以编写一个脚本来生成一些随机的东西,但是可能有内置的东西?或者只是停用密码(这样密码登录是不可能的,但是使用密钥 ssh 登录并且sudo su - thatuser工作正常。

编辑:已经有一些答案,很好,但我仍然不确定如何去做。剧本会是什么样子?

它应该表现得像 adduser 并创建所有标准(如 std.home dir、骨骼复制、具有相同名称的组)

Edit2:最后,在你的帮助下,我找到了一个有效的解决方案,我想分享它。这是一个我称之为“adduser-nopasswd”的脚本,我将它放入/usr/local/sbin(这是一个好地方吗?),它只能由root 执行。它需要一个参数,同时是新组和用户的名称:

#!/bin/sh -e
# the -e makes the script exit immediateley if one command fails
NAME=$1
groupadd $NAME
useradd --create-home -d /home/$NAME --shell /bin/bash -g $NAME $NAME
Run Code Online (Sandbox Code Playgroud)

对此功能有何评论?

Mik*_*uno 15

如果您没有指定密码,useradd它将不会被设置(因此用户将无法通过密码登录)。请注意,useraddadduser是两个不同的命令。

下面应该使用自己的组创建新用户,创建它的主目录(在默认位置,因为我们没有指定任何位置)并复制骨架文件。

useradd --create-home <user>
Run Code Online (Sandbox Code Playgroud)

然后你只需要创建一个目录.ssh在它的主目录,chmod0700(SSH会想是为了安全),并把用户的公钥.ssh/authorized_keys(私有/公共密钥对应该由用户他/她自己生成,在他/她自己的电脑)。

如果要禁用现有帐户的密码,可以使用以下方法。

usermod --lock <user>
Run Code Online (Sandbox Code Playgroud)