Так или иначе мне удалось установить passwd для моего _postgres пользователя на моей ОС вместо того, чтобы установить его на роли пост-ГРЭС, которую я имею как свой суперпользователь / корень. Так или иначе начиная с этого, я боролся с тем пользователем, обнаруживающимся в разделе учетной записи и экране входа в систему, которого я действительно хотел бы избежать. Я прочитал некоторые документы об этом и установку пароля к *
должно быть все, что необходимо для фиксации этого. Но после нескольких попыток, делающих это с и без dscl напрасно, я получен к точке, где я не знаю, что больше делать.
Я не думал, что это будет даже трудно делать это, но ясно я пропускаю что-то, так как дела это?
Самый легкий метод для сокрытия пользователей системы (если их идентификатор пользователя <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
На всякий случай Вы не нашли эффективное решение (или в случае, если кто-то еще находит этот вопрос от 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
хочет старое значение сначала, но это - то, что говорит страница справочника, и это работает вполне хорошо.
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 "*"
Это скрывает пользователя.