Есть ли возможное решение для отключения пользователя из интерфейса командной строки, например. через SSH? Для этого должна быть команда dscl. Или есть атрибут dsAttrTypeStandard, который я могу установить соответствующим образом?
Есть указатели?
pwpolicy
не работает для локальных учетных записей на клиенте OS X. НО Ты можешь используйте команду dscl для непосредственного редактирования этих параметров аутентификации. Этот метод гарантированно работает для учетных записей OS X на уровне пользователя (гостевые, административные и другие обычные учетные записи, которые вы увидите в списке в окне входа в систему). При таком подходе не имеет значения, управляется ли учетная запись с помощью учетной записи OS-X Server / LDAP. Этот метод также работает для всех системных учетных записей OSX (в противном случае вы бы отключили их оболочки входа).
Вот как:
# Read the AuthenticationAuthority key
dscl . -read /Users/username AuthenticationAuthority
AuthenticationAuthority: ;Kerberosv5;; \
username@LKDC:SHA1.41BE28E3B64EB62A42D0673968B9591DE18210F5; \
LKDC:SHA1.07264456235E49D45C4B99FC9549FC366CE32343; ; \
ShadowHash;HASHLIST:<SALTED-SHA1>
Если еще не отключено, добавьте DisabledUser
к значению этого ключа. С точкой с запятой для разделителя полей. Превышение / пусто ; ;
поля игнорируются.
dscl . -append /Users/username AuthenticationAuthority ";DisabledUser;"
Чтобы проверить статус учетной записи включен / отключен:
dscl . -read /Users/username AuthenticationAuthority | grep DisabledUser
Для учетных записей системы OSX: эти учетные записи не имеют AuthenticationAuthority
ключ для начала. Поэтому проверка их включенного / выключенного статуса определяется тем, UserShell
атрибут имеет допустимую оболочку входа в систему. Так что проверьте оболочку, когда AuthenticationAuthority
не существует.
Чтобы снова включить учетную запись пользователя, мы просто удаляем DisabledUser
подстрока из записи AuthenticationAuthority. Мы используем затем используем dscl . -create
cmd и напишите обратно все это.
dscl . -read /Users/username AuthenticationAuthority | \
sed 's/AuthenticationAuthority: //;s/DisabledUser//g;s/[; ]*$//' | \
xargs dscl . -create /Users/username AuthenticationAuthority
Получите учетные данные AuthenticationAuthority для всех пользователей:
dscl . -list /Users AuthenticationAuthority
Системные учетные записи: просто помните, что системная учетная запись также должна иметь действительную оболочку входа.
Это работает в 10.5 и 10.6 для учетных записей LDAP / OD:
pwpolicy -a diradmin -u ajohnson -setpolicy "isDisabled=1"
Или для локальных учетных записей:
sudo dscl . -create /Users/ajohnson UserShell /usr/bin/false
Замените ajohnson коротким именем пользователя, которого вы хотите отключить.
Для повторного включения просто установите isDisabled = 0 вместо 1. Или в случае локальных учетных записей для любой оболочки в /etc/shells
pwpolicy
пример взят со страницы 62 Документация по управлению пользователями (Snow Leopard) или страница 106 Леопард администрирования командной строки руководство.
У нас есть несколько клиентов OSX, которые проходят аутентификацию с сервера Linux LDAP. Что сработало для меня, так это установка атрибута loginShell пользователя на / usr / bin / false. Похоже, это предотвращает как SSH, так и графический вход.