不知何故,我设法在操作系统上为_postgres用户设置了passwd,而不是在作为超级用户/ root拥有的postgres角色上设置了passwd。无论如何,从那以后,我一直在努力让该用户出现在“帐户”部分和登录屏幕中,我确实希望避免这种情况。我已经阅读了一些有关此问题的文档,并将密码设置*
为即可解决此问题。但是,经过多次尝试使用dscl和不使用dscl都无济于事之后,我到了无法再做什么的地步。
我认为这样做并不难,但是显然我缺少了什么,那么您该怎么做?
不知何故,我设法在操作系统上为_postgres用户设置了passwd,而不是在作为超级用户/ root拥有的postgres角色上设置了passwd。无论如何,从那以后,我一直在努力让该用户出现在“帐户”部分和登录屏幕中,我确实希望避免这种情况。我已经阅读了一些有关此问题的文档,并将密码设置*
为即可解决此问题。但是,经过多次尝试使用dscl和不使用dscl都无济于事之后,我到了无法再做什么的地步。
我认为这样做并不难,但是显然我缺少了什么,那么您该怎么做?
Answers:
在登录窗口中隐藏系统用户(如果用户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
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 \*
万一您找不到可行的解决方案(或者其他人从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
要使用旧值,但这就是联机帮助页所说的,并且效果很好。
sudo -s -u _postgres
通过管理员帐户来获取shell _postgres
;即使他UserShell
设置为,这也将起作用/usr/bin/false
。此外,是否像您尝试的那样将其密码设置为“ no password”,也会禁用该帐户?