5

Как бы мне ни хотелось выяснить проблему, на данный момент слишком много времени было потрачено на удаление глупого ключа, когда у меня уже было решение (создание командной строки), которое работает. Я собираюсь удалить пользователя и запустить нужные мне команды. Было бы замечательно получить ответ, но я не думаю, что это произойдет.

У меня есть сеть ведомых, подключенных к 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

2 ответа2

2

Я думаю, что проблема, с которой вы столкнулись с ответом @Daniel Beck, заключается в том, что пароль хранится не в атрибуте Password пользовательской записи, а в виде теневого хеш-файла в /var /db /shadow /hash /USERGUID и атрибуте AuthenticationAuthority. все еще указывает на это. Кажется, это работает для меня:

sudo dscl . -delete /Users/buildbot AuthenticationAuthority
buildbotGUID=$(dscl . -read /Users/buildbot GeneratedUID | awk '{print $2}')
sudo rm "/var/db/shadow/hash/$buildbotGUID" "/var/db/shadow/hash/$buildbotGUID.state"

В идеале также следует удалить учетную запись Kerberos (клиенты OS X запускают свою собственную "локальную" область Kerberos, и она иногда оказывается под ногами). Но это немного сложнее, и я думаю, что это зависит от того, какую версию OS X вы используете.

Кстати, если вышеупомянутое не полностью решает проблему, попробуйте это:

sudo dscl . -create /Users/buildbot AuthenticationAuthority ";DisabledUser;"
2

Вам нужно установить пароль на один символ * (звездочка, звездочка) с помощью dscl .

sudo dscl . -create /Users/buildbot Password '*'

Обязательно экранируйте или цитируйте (как показано) это, чтобы оно не интерпретировалось вашей оболочкой.

Это (при прочтении) будет отображаться не как ******** как любой другой пароль, а как * , что означает "без пароля".

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .