从Mac OS X Snow Leopard登录屏幕隐藏用户


25

不知何故,我设法在操作系统上为_postgres用户设置了passwd,而不是在作为超级用户/ root拥有的postgres角色上设置了passwd。无论如何,从那以后,我一直在努力让该用户出现在“帐户”部分和登录屏幕中,我确实希望避免这种情况。我已经阅读了一些有关此问题的文档,并将密码设置*为即可解决此问题。但是,经过多次尝试使用dscl和不使用dscl都无济于事之后,我到了无法再做什么的地步。

我认为这样做并不难,但是显然我缺少了什么,那么您该怎么做?


为您的_postgres用户设置密码并不是一个特别糟糕的主意。
Hasaan Chop

1
实际上,postgres文档提出了相反的建议,即只有系统用户才能访问postgres,并且记住/安全风险少了一个密码。
googletorp,2009年

您是否尝试过删除并重新创建用户?
Chealion

是的,我实际上已经尝试过几次。您需要以某种方式将passwd设置为Disabled,因为没有passwd是不够的。这是我无法克服的痛苦点。
googletorp

Answers:


31

在登录窗口中隐藏系统用户(如果用户ID <500)的最简单方法是运行以下命令:

sudo defaults write /Library/Preferences/com.apple.loginwindow Hide500Users -bool TRUE

或者,您可以通过运行手动仅隐藏用户名

sudo defaults write /Library/Preferences/com.apple.loginwindow HiddenUsersList -array-add '_postgres'

要在登录窗口中隐藏“其他...”项,如果需要:

sudo defaults write /Library/Preferences/com.apple.loginwindow SHOWOTHERUSERS_MANAGED -bool FALSE

2
这是一个有点棘手的解决方案,实际上并没有“解决”问题,只是隐藏了症状。对于mysql之类的东西,我有很多不同的系统用户,但由于密码被标记为“ *”,所以它们不会出现。这就是我要为postgres用户完成的工作。如果我确实想隐藏其他用户,但能够使用其他用户登录,那么您的解决方案将很糟糕。我真的很想扎根并实际解决此问题,而不是隐藏问题。
googletorp,2009年

1
这是一个很好的答案,并且恰好回答了我的问题。但是您可能是对的,这与您提出的问题不完全相同。
Bill Michell

3
Hide500Users标志似乎不再适用于狮子。仅其余两个命令可用于Lion
Antony

请注意,如果打开了FileVault2,这不会在初始启动屏幕上隐藏用户。
James McMahon 2015年

12
dscl . create /Users/test
dscl . create /Users/test UniqueID 420
dscl . create /Users/test PrimaryGroupID 420
dscl . create /Users/test UserShell /bin/bash
dscl . create /Users/test NFSHomeDirectory /tmp
dscl . create /Users/test RealName Test
dscl . create /Users/test Password test

这将创建一个在sysprefs / Accounts中可见的用户。

dscl . create /Users/test Password "*"

这隐藏了用户。确保引用“ *”,否则将不起作用。

编辑:我不小心设法通过将用户密码设置为“ *”来重新创建googletorp无法隐藏用户的情况,我发现了解决方法。这次,我使用dsimport创建了一个用户,如下所示:

dsimport /dev/fd/0 /Local/Default I --template StandardUser << EOF
test:*:520:520:Test user:/Users/test:/bin/bash
EOF

但是在该命令中,使用*表示一个字面意义的单字符密码*,因此dsimport为用户创建了AuthenticationAuthority属性,并将password属性设置为的阴影哈希*(如********dscl所示,对于所有密码)。之后,尝试使用dscl将密码设置为“ *”只是保持将密码设置为literal *,而不是禁用密码。解决方案是删除不需要的属性,然后禁用密码:

sudo dscl . delete /Users/test AuthenticationAuthority
sudo dscl . create /Users/test Password "*"

这隐藏了用户。


除了引号,您是否尝试过转义星星? dscl . -create /Users/test Password \*
Eric3

只要dscl在“密码”之后看到文字“ *”,一切都会进行。
LaC 2011年

7

万一您找不到可行的解决方案(或者其他人从Google找到此问题),请设置用户的外壳程序以/usr/bin/false 防止其登录并将其隐藏在登录屏幕系统偏好设置中。为此,请使用以下命令行:

sudo dscl . -change /Users/[username] UserShell /bin/bash /usr/bin/false

并还原更改:

sudo dscl . -change /Users/[username] UserShell /usr/bin/false /bin/bash

[username]您要隐藏的用户名在哪里(_postgres我假设是您的情况)。我不知道为什么首先dscl要使用旧值,但这就是联机帮助页所说的,并且效果很好。


1
这个解决方案非常糟糕,因为它禁用了该用户的外壳程序,而这正是我要使用的外壳程序。如果我想重新启动数据库等
googletorp

@googletorp:您仍然可以sudo -s -u _postgres通过管理员帐户来获取shell _postgres;即使他UserShell设置为,这也将起作用/usr/bin/false。此外,是否像您尝试的那样将其密码设置为“ no password”,也会禁用该帐户?
zneak 2010年
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.