Скрыть пользователей с экрана входа в Mac OS X Snow Leopard

Каким-то образом мне удалось установить passwd для моего пользователя _postgres в моей ОС вместо того, чтобы установить его для роли postgres, которую я имею в качестве суперпользователя / root. В любом случае, с тех пор я боролся с тем, чтобы этот пользователь появлялся в разделе учетной записи и на экране входа в систему, чего я действительно хотел бы избежать. Я прочитал несколько документов об этом и установил пароль * должно быть все что нужно чтобы это исправить. Но после нескольких попыток сделать это с и без dscl безрезультатно, я дошел до того, что не знаю, что делать дальше.

Я не думал, что это будет даже трудно сделать, но, очевидно, я что-то упускаю, так как ты это делаешь?

3 ответа

Решение

Самый простой способ скрыть пользователей системы (если их идентификатор пользователя < 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 и задает для свойства пароля теневой хеш * (который отображается как ******** в dscl, как и для всех паролей). После этого, попытка установить пароль на "*" с помощью dscl просто продолжает устанавливать пароль на литерал *вместо отключения пароля. Решение состоит в том, чтобы удалить нежелательное свойство, а затем отключить пароль:

sudo dscl . delete /Users/test AuthenticationAuthority
sudo 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 сначала нужно старое значение, но это то, что написано на man-странице, и оно работает довольно хорошо.

Другие вопросы по тегам