Как бы мне ни хотелось выяснить проблему, на данный момент слишком много времени было потрачено на удаление глупого ключа, когда у меня уже было решение (создание командной строки), которое работает. Я собираюсь удалить пользователя и запустить нужные мне команды. Было бы замечательно получить ответ, но я не думаю, что это произойдет.
У меня есть сеть рабов, подключенных к BuildBot , каждый с учетной записью пользователя buildbot. Я хотел бы, чтобы их учетные записи не имели паролей (читай: не пустой пароль). Я сделал это успешно на одном из блоков, как большое следствие удаленного создания пользователя и не установки пароля в процедуре.
Две другие машины OSX, которые я настроил через GUI, имеют пароли, и мне интересно, есть ли способ удалить пароль, не оставляя его пустым. Я просмотрел немного документации для dscl
а также passwd
, но у них нет вариантов, которые я ищу. Я мог бы установить их как некоторую случайную строку чисел. Будет ли это так же эффективно? Мое описание эквивалентно наличию пустого пароля и блокировке учетной записи ( как в этом обсуждении для Linux )? Если так, как я могу заблокировать учетную запись OSX?
Вторая часть моего вопроса касается способа, которым я изначально создал пользователей. Ниже приведены команды, и они, кажется, работают нормально, но мне интересно, если я пропустил некоторые важные настройки - хотя buildslave запускал и выполнял задания.
sudo dscl . -create /Users/buildbot
sudo dscl . -create /Users/buildbot UserShell /bin/bash
sudo dscl . -create /Users/buildbot RealName "BuildBot"
sudo dscl . -create /Users/buildbot UniqueID <ID>
sudo dscl . -create /Users/buildbot PrimaryGroupID 61
sudo dscl . -create /Users/buildbot NFSHomeDirectory /Users/buildbot
sudo mkdir /Users/buildbot
sudo chown buildbot /Users/buildbot
РЕДАКТИРОВАТЬ : На машинах, у которых уже есть учетные записи с паролями, созданными с помощью системных настроек, команды, предложенные Дэном Блэком, фактически не удаляют ключ пароля,
sudo dscl . -delete /Users/buildbot Password
sudo dscl . -read /Users/buildbot Password
Выход ко второй команде:
Password: *******
Продолжая, как будто пароль был удален, я запускаю
sudo dscl . -create /Users/buildbot Password '*'
su buildbot
И предыдущий пароль получает доступ к учетной записи. Это на OSX 10.5.8 и 10.6.8.
sudo dscl . -change /Users/buildbot Password 'OLDPASS' '*'
su buildbot
Это также не меняет пароль, и OLDPASS может переключать пользователей при запросе пароля.
Вот полный вывод пары ключ-значение для пользователя, у которого возникли проблемы с --created через sys-предпочтения. Чтобы прояснить несоответствие, эта машина использует пользователя 'developer', а не 'buildbot', но все предыдущие команды были выполнены одинаково только с очевидной заменой.
Amoy:~ lyn$ sudo dscl . -read /Users/developer
dsAttrTypeNative:_writers_hint: developer
dsAttrTypeNative:_writers_jpegphoto: developer
dsAttrTypeNative:_writers_LinkedIdentity: developer
dsAttrTypeNative:_writers_passwd: developer
dsAttrTypeNative:_writers_picture: developer
dsAttrTypeNative:_writers_realname: developer
dsAttrTypeNative:_writers_UserCertificate: developer
AppleMetaNodeLocation: /Local/Default
AuthenticationAuthority: ;ShadowHash; ;Kerberosv5;;developer@LKDC:SHA1.08FF6FDC52096FD6C53DEDEE75A2F9315F964B22;LKDC:SHA1.08FF6FDC52096FD6C53DEDEE75A2F9315F964B22;
AuthenticationHint:
developer for auto testing
GeneratedUID: BF95A834-A7F1-4DDD-8DFB-6B80B8120CA7
NFSHomeDirectory: /Users/developer
Password: ********
Picture:
/Library/User Pictures/Fun/Flippers.tif
PrimaryGroupID: 20
RealName: Developer
RecordName: developer
RecordType: dsRecTypeStandard:Users
UniqueID: 512
UserShell: /bin/bash
passwd -l
для местоположения не блокировки. Я отредактировал вопрос соответственно. Нужны ли дополнительные разъяснения? Я думал, что я был довольно точным.Ответы:
Я думаю, что проблема с ответом @Daniel Beck заключается в том, что пароль хранится не в атрибуте Password пользовательской записи, а в виде теневого хеш-файла в / var / db / shadow / hash / USERGUID и атрибуте AuthenticationAuthority. все еще указывает на это. Кажется, это работает для меня:
В идеале вам также следует удалить учетную запись Kerberos (клиенты OS X запускают свою собственную «локальную» область Kerberos, и она иногда оказывается под ногами). Но это немного сложнее, и я думаю, что это зависит от того, какую версию OS X вы используете.
Кстати, если вышеупомянутое не полностью решает проблему, попробуйте это:
источник
Вам нужно установить пароль на один
*
символ (звездочка, звезда) с помощьюdscl
,Обязательно экранируйте или цитируйте (как показано) это, чтобы оно не интерпретировалось вашей оболочкой.
Это (при прочтении) не будет отображаться как
********
как любой другой пароль, но как*
, что просто означает «нет пароля».источник
*
вpasswd
файлы, которые содержат только хэши паролей, чтобы указать, что у пользователя нет пароля.-change
вместо-create
?-delete /Users/buildbot Password
перед выполнением этой строки? Моей исходной отправной точкой был код в вашем вопросе, в котором не упоминалось создание пароля.dscl
с аргументами в моем предыдущем комментарии сначала удалите старый пароль, а затем установите новый пароль'*'
,-change
может сработать, я сам не проверял. Что вы подразумеваете под без установки этого ключа вообще ? Какой выходdscl . -read /Users/buildbot Password
?