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

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

不知何故,我设法在我的操作系统上为我的 _postgres 用户设置了密码,而不是将其设置为我作为超级用户/根用户所拥有的 postgres 角色。无论如何,从那以后,我一直在努力解决该用户出现在帐户部分和登录屏幕的问题,我真的想避免这种情况。我已经阅读了一些关于此问题的文档,将密码设置为*应该是解决此问题所需的全部操作。但是在使用和不使用 dscl 尝试了几次都无济于事之后,我已经到了不知道该怎么办的地步。

我不认为这样做会很难,但显然我忽略了一些东西,那么你该怎么做呢?

答案1

在登录窗口中隐藏系统用户(如果其用户 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

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 属性,并将密码属性设置为影子哈希*(与所有密码一样,在 dscl 中显示********)。此后,尝试使用 dscl 将密码设置为“*”只会继续将密码设置为文字*,而不是禁用密码。解决方案是删除不需要的属性,然后禁用密码:

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

这会隐藏用户。

答案3

万一你还没有找到可行的解决方案(或者其他人从 Google 上找到了这个问题),设置用户的 shell 以/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首先想要旧值,但手册页就是这么说的,而且效果很好。

相关内容