如何创建没有密码的用户?


22

在os X中,有可能没有密码的用户。如果使用dscl密码检查它们,则显示为*。这用于系统用户,例如mysqlpgsql等数据库用户。这样做的好处是这些用户不会出现在登录屏幕上,并且如果没有它们,您将无法登录sudo

在删除了这样的用户并尝试了一些操作之后,我想重新创建它,但是不能。我可以设法为用户提供一个空密码,并且可以将密码设置为*。但是,当用户出现在我的登录屏幕上时,没有一种效果与上述相同。

您如何创建这样的用户?


在Linux上,您将--disabled-password标志传递给adduser。也许OS X的命令行库中有类似的东西?
BR

你的意思是; 用户可以没有密码登录还是因为没有设置密码而根本无法登录?
克里斯·黄·利弗

1
我注意到您没有接受答案。要避免出现在各种xdm列表中的一个要求是用户ID极低。在许多系统useradd上,用户ID开始在1000处添加,登录管理器不会显示低于此值的用户ID,但会显示高于此值的用户。因此,尽管这不能解决这个问题,但它可能是解决问题的方法。请注意,1000是任意的,在您的发行版中可能更低或更高。要解决此问题,只需将用户条目修改/etc/passwd为具有较低的uid。现在让我去问类似的问题。
xenoterracide 2011年

@xenoterracide:重新创建用户时,我给了它旧的ID,这是我删除的pgsql用户,其ID比mysql的ID高一个,因此我确定它在这种情况下没有任何影响。 ,但仍然感谢您提供的信息。
googletorp 2011年

Answers:


6

您可以使用passwd --delete <username>创建用户后运行adduser。之后,您无需输入密码即可登录。


4
我认为这与这里要求的完全相反。
Shadur

起初,我以为这是正确的(或最佳的)答案,直到我重新阅读了OP的问题为止,该问题提到的是“系统用户”,而不显示在“登录屏幕”上。此方法将显示在登录屏幕上,您可以使用此方法“ sudo”。
HidekiAI 2015年

3

例如,位于/ etc / passwd中且主目录为/ dev / null且外壳为/ sbin / nologin的用户可以用来执行命令,但实际上无法登录。

从我的/ etc / passwd

tcpdump:x:104:441:added by portage for tcpdump:/dev/null:/sbin/nologin

我半记得这也将使它从XDM登录屏幕中消失,但是我不再使用XDM,所以这是一个猜测:-)


这是正确的答案,因为OP通过将shell设置为“ / sbin / nologin”来询问您不能“ sudo”或无法在“登录屏幕”上显示的帐户。需要注意的一件事是因为OP要求“系统用户”,还应提及“ useradd --system”应用于创建低编号的UID(如portage / ebuild一样)
HidekiAI 2015年

3

您可以使用usermod,使用!而不是禁用密码*

usermod -L <username>

在usermod的手册页中:

-L, --lock Lock a user's password. This puts a '!' in front of the encrypted password, effectively disabling the password.

2

使用dscl会给

dscl . -passwd /Users/myuser ""

与上面的大多数答案不同,这实际上对我有用。
GroovyCakes

1

我不确定OSX,但是在FreeBSD上,您可以使用:

pw add user mymuser -g mygroup -s /nonexistent -h -

-传递给该-h选项的值告诉pw您将master.passwd中的password字段设置为*,从而创建一个非登录帐户。设置外壳程序不是绝对必要的,但可以避免从/etc/pw.conf中进行外壳程序检查。




-1

在Linux上,我使用:

sudo useradd -r -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

下一个选择必须是更多的跨平台(如果-r没有可用的选项):

sudo useradd -K UID_MIN=100 -K UID_MAX=499 -K GID_MIN=100 -K GID_MAX=499 -p \* -s /sbin/nologin -c "Comment My Daemon,,,"  -d "/var/uuu"  myuser

这里:

  • / etc / shadow中的密码将设置为*。没有-p \*它将会!

  • 外壳将是/sbin/nologin(您也可以使用/bin/false,但我认为/bin在某些系统上可能安装得太晚了)。因此用户无法登录

  • -d 设置用户的homedir

重要的提示

这里-r创建一个系统用户:

此标志用于创建系统帐户。即,具有UID低于/etc/login.defsUID_MIN定义的值且密码没有过期的用户。请注意,无论/etc/login.defs中的默认设置如何,useradd都不会为该用户创建主目录。如果要创建系统帐户的主目录,则必须指定选项。这是Red Hat添加的选项-m

-r系统上可能没有选件。因此,创建一个未显示在登录屏幕上的系统用户,我认为,您可以使用-Koption。类似于:-K UID_MIN=100 -K UID_MAX=499。您可以尝试以下选项:

-K UID_MAX=$(cat /etc/login.defs | grep ^UID_MIN | awk '{print $2}')

自动判断你UID_MAX,但我不会在OS X上测试你需要使用SYS_UID_MAXUID_MIN,如果它是在取消注释 /etc/login.defs中

这同样适用于GID_MAXGID_MIN该系统组ID。(请参阅/etc/login.defs中的GID_MIN注释,如果没有注释SYS_GID_MAX,则用作)GID_MAX

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.