我想通过脚本将用户添加到 linux 系统,但我不想发明或关心密码。这应该自动完成。
目标是生成 ssh-keys,这个用户只需要远程登录。或者,该用户将通过 sudo 用户使用sudo su - thatuser
。
我想在每次创建这样的用户时省去发明和输入一些安全密码的麻烦,并且也可以从脚本中执行此操作。
没有人应该能够以该用户的身份使用密码登录,所以我的想法是他得到了一个很好的随机密码,但没有人知道。
我可以编写一个脚本来生成随机的东西,但也许有一些内置的东西?或者只是停用密码(这样密码登录是不可能的,但是使用密钥进行 ssh 登录并且sudo su - thatuser
工作正常。
编辑:已经有一些答案,很好,但我仍然不知道该怎么做。脚本会是什么样子?
它的行为应该像 adduser 并创建所有标准(如 std.home 目录、复制的骨架、具有相同名称的组)
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
对此功能有何评论?
如果您没有指定密码,
useradd
它将不会被设置(因此用户将无法通过密码登录)。请注意,useradd
andadduser
是两个不同的命令。下面应该使用自己的组创建新用户,创建它的主目录(在默认位置,因为我们没有指定任何位置)并复制骨架文件。
然后,您只需
.ssh
在其主目录中chmod
创建目录0700
(SSH 将需要此以确保安全),并将用户公钥放入.ssh/authorized_keys
(私钥/公钥对应由用户他/她自己生成,在他/她自己的电脑)。如果要禁用现有帐户的密码,可以使用以下方法。
实用程序 /usr/sbin/useradd 总是为我创建用户而不需要密码。我编写了许多脚本,它采用另一个系统的 /etc/passwd 并为我创建了用户。
或者,如果您查看 mercurial-server 的文档,您将了解如何设置许多 SSH 密钥(客户端)以在服务器端仅以一个用户身份运行程序。
好的,让我们添加我们的用户:
如果您只想要生成随机密码的内置命令,您可以试试这个:
dd if=/dev/urandom bs=16 count=1 2>/dev/null | uuencode - | 头-n 2 | grep -v 开始 | 切-b 2-10
这将读取 16 个字节的随机数据,对它们进行 uuencode 以将它们转换为可打印字符,通过 uuencode 额外输出,然后仅从编码中获取随机字符。这是一个示例输出:
$ dd if=/dev/urandom bs=16 count=1 2>/dev/null | uuencode - | 头-n 2 | grep -v 开始 | 切-b 2-10
RJ<B6QYRO
在 /etc/shadow 的密码字段中放一个 * (如果您没有设置密码,这应该会发生)。这将阻止用户登录。
我使用passook在我维护的登录服务器上生成密码。虽然我发现在您的情况下不需要登录,但 passook 会生成足够令人难忘的密码。