创建无密码用户的最佳方法

Joh*_*nal 6 linux useradd login password nobody

创建没有密码的用户的好方法是什么?没有密码,我的意思是一个帐户,它只能由使用 su/sudo 命令的 root 帐户使用(如 Apache 或 Nginx 使用的“nobody”用户)。

我已经读过在 /etc/shadow 文件的密码字段中放置 * 可以工作,但我想知道是否有办法使用 useradd 命令来做到这一点。

我想过这样做:

useradd my_new_user -s /sbin/nologin -p '*'
Run Code Online (Sandbox Code Playgroud)

但我不确定 useradd 命令可以这样使用。我还没有找到任何关于它的参考。

s.c*_*.tt 5

这按照您描述的方式工作(当然,您可以指定您想要的任何外壳来代替/bin/bash):

root# useradd temp_test1 -s /bin/bash -p '*'
root# su temp_test1
temp_test1#
Run Code Online (Sandbox Code Playgroud)

执行上述useradd命令后,我的/etc/shadow文件中有以下条目:

temp_test1:*:15842:0:99999:7:::
Run Code Online (Sandbox Code Playgroud)

使用John Smith Optional的答案时,以下内容将起作用:

root# useradd temp_test2 -s /sbin/nologin
root# su -s /bin/bash temp_test2
temp_test2#
Run Code Online (Sandbox Code Playgroud)

编辑: 我想指出不同之处在于su/sbin/nologin除非您在发出su命令时指定一个可用的 shell ,否则您不能进入一个将 shell 指定为的帐户:

root# useradd temp_test3 -s /sbin/nologin
root# su temp_test3
This account is currently not available.
root#
Run Code Online (Sandbox Code Playgroud)

(在 CentOS 6.4 中测试——应该适用于各种发行版)。


Dav*_*ude 2

useradd my_new_user -s /sbin/nologin
Run Code Online (Sandbox Code Playgroud)

如果未指定密码,则不会创建/禁用帐户。