创建没有密码的用户的好方法是什么?没有密码,我的意思是一个只能由使用 su/sudo 命令的 root 帐户使用的帐户(例如 Apache 或 Nginx 使用的“nobody”用户)。
我读到过在 /etc/shadow 文件的密码字段中放置 * 是可行的,但我想知道是否有办法使用 useradd 命令来做到这一点。
我想到这样做:
useradd my_new_user -s /sbin/nologin -p '*'
但我不确定 useradd 命令是否可以这样使用。我还没有找到有关它的任何参考资料。
答案1
这按照您描述的方式工作(当然您可以指定您想要的任何 shell 来代替/bin/bash
):
root# useradd temp_test1 -s /bin/bash -p '*'
root# su temp_test1
temp_test1#
执行上述命令后,我的文件useradd
中出现以下条目:/etc/shadow
temp_test1:*:15842:0:99999:7:::
使用时约翰·史密斯(可选)的答案,下面的方法可以工作:
root# useradd temp_test2 -s /sbin/nologin
root# su -s /bin/bash temp_test2
temp_test2#
编辑: 我想指出的是,区别在于,除非您在发出命令时指定可用的 shell su
,否则您无法进入指定了 shell 的帐户:/sbin/nologin
su
root# useradd temp_test3 -s /sbin/nologin
root# su temp_test3
This account is currently not available.
root#
(在 CentOS 6.4 中测试 - 应该可以在各种发行版中运行)。
答案2
useradd my_new_user -s /sbin/nologin
如果未指定密码,则不会创建密码/禁用帐户。