Вопрос: Как создать учетные записи пользователей из терминала в Mac OS X 10.5?


Я хотел бы иметь возможность создавать новые пользователи в Mac OS X 10.5 удаленно после ssh'ing в машину. Как мне это сделать?


84
2018-06-05 18:07


Источник


У меня еще нет репутации, чтобы ответить, но если вы ищете, как это сделать, single_user (сброс безопасности), тогда вам нужно перезагрузиться, удерживая нажатой кнопку Command-S, получить доступ на запись к диску на каждом экране, а затем rm /var/db/.AppleSetupDone который позволит вам создать новую учетную запись администратора. Надеюсь, это поможет кому-то - New Alexandria


Ответы:


Используйте команду dscl. В этом примере пользователь «luser» будет выглядеть так:

dscl . -create /Users/luser
dscl . -create /Users/luser UserShell /bin/bash
dscl . -create /Users/luser RealName "Lucius Q. User"
dscl . -create /Users/luser UniqueID "1010"
dscl . -create /Users/luser PrimaryGroupID 80
dscl . -create /Users/luser NFSHomeDirectory /Users/luser

Затем вы можете использовать passwd для изменения пароля пользователя или использовать:

dscl . -passwd /Users/luser password

Вам нужно будет создать / Users / luser для домашнего каталога пользователя и изменить право собственности, чтобы пользователь мог получить к нему доступ, и убедитесь, что UniqueID действительно уникален.

Эта строка добавит пользователя в группу администратора:

dscl . -append /Groups/admin GroupMembership luser

80
2018-06-05 18:15



Как я могу убедиться, что UID уникален? - JR Lawhorne
Нет автоматического пути; если вы создаете скрипт, вы можете просто запустить команду «id ####» и убедиться, что она возвращает «Нет такого пользователя» или какой-то такой хак. - palmer
Не забудьте использовать sudo, если у вас нет разрешений. - Raffi Khatchadourian
Кстати, поскольку это более подробный, чем это должно быть, Я портировал эти команды в useradd синтаксис. - Xiong Chiamiov
Обратите внимание, что PrimaryGroupID 80 является admin, так luser можешь использовать sudo даже если вы не добавите его в группу администраторов. - ruslo


(Этот ответ следует считать добавлением, чтобы заполнить некоторые пробелы в процедуре палмера)

Чтобы выбрать неиспользуемый UniqueID для нового пользователя, вы можете использовать:

maxid=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
newid=$((maxid+1))

... затем используйте последовательность команд dscl palmer, предоставленную для создания учетной записи, а затем создайте домашний каталог нового пользователя:

cp -R /System/Library/User\ Template/English.lproj /Users/luser
chown -R luser:staff /Users/luser

(есть команда createhomedir, но это не сработало, когда я ее протестировал.)


20
2018-06-05 20:21



Я создал скрипт, который заполняет наш Open Directory Master новыми пользователями, а затем вызывает sudo createhomedir -s (IIRC) в Open Directory Replicas / Fileshares, и они с радостью создают домашние каталоги. - Clinton Blackmore
dscl -list ограничено 256 результатами, поэтому, если у вас более 256 пользователей, этот метод не сможет гарантировать уникальный UID. - smokris


Если у вас есть куча пользователей для создания, можно создать структурированный текстовый файл и передать его dsimport чтобы выполнить эту работу.

Apple, Администрирование командной строки Руководство содержит целую главу о пользователях и группах.


8
2018-06-05 19:19



Странный. Apple, похоже, покончила с v10.5 документа, на который вы ссылались первоначально, но сохранен v10.3 и менее Версия Snow Leopard - chb


Еще один способ выбрать уникальный идентификатор пользователя перед созданием учетной записи - просто просмотреть список и проверить, что тот, который вы хотите использовать, отсутствует:

 sudo dscl . list /Users uid
 sudo dscl . list groups gid

Удобно, если вам нужно использовать определенный идентификатор


7
2017-11-30 16:10



dscl -list ограничено 256 результатами, поэтому, если у вас более 256 пользователей, этот метод не сможет гарантировать уникальный UID. - smokris
yup - это самый короткий путь для добавления этого пользователя прямо сейчас, просто grep это с id вы имели в виду использовать для нового пользователя - yair


Я использовал различные ответы здесь, чтобы придумать то, что, по моему мнению, хороший сценарий для создания учетных записей пользователей. По общему признанию, это не предназначено для запуска команды за один раз из ssh; это moreso, разработанный для запуска скрипта при компиляции пакетного образа OS X (созданного Кассовое изображение или InstaDMG).

#!/bin/bash
# This script creates a user account under Mac OS X
# (tested with 10.5 and 10.6; likely works with 10.4 but not earlier)
# Written by Clinton Blackmore, based on work at
# http://serverfault.com/questions/20702

# === Typically, this is all you need to edit ===

USERNAME=joeadmin
FULLNAME="Joe Admin"
PASSWORD="hard_to_hack"

# A list of (secondary) groups the user should belong to
# This makes the difference between admin and non-admin users.
# Leave only one uncommented
#SECONDARY_GROUPS=""  # for a non-admin user
SECONDARY_GROUPS="admin _lpadmin _appserveradm _appserverusr" # for an admin user

# ====

if [[ $UID -ne 0 ]]; then echo "Please run $0 as root." && exit 1; fi

# Find out the next available user ID
MAXID=$(dscl . -list /Users UniqueID | awk '{print $2}' | sort -ug | tail -1)
USERID=$((MAXID+1))

# Create the user account
dscl . -create /Users/$USERNAME
dscl . -create /Users/$USERNAME UserShell /bin/bash
dscl . -create /Users/$USERNAME RealName "$FULLNAME"
dscl . -create /Users/$USERNAME UniqueID "$USERID"
dscl . -create /Users/$USERNAME PrimaryGroupID 20
dscl . -create /Users/$USERNAME NFSHomeDirectory /Users/$USERNAME

dscl . -passwd /Users/$USERNAME $PASSWORD


# Add use to any specified groups
for GROUP in $SECONDARY_GROUPS ; do
    dseditgroup -o edit -t user -a $USERNAME $GROUP
done

# Create the home directory
createhomedir -c > /dev/null

echo "Created user #$USERID: $USERNAME ($FULLNAME)"

Сценарий позволяет указать, к каким группам должен принадлежать пользователь. Мне кажется, что это может различаться в зависимости от версии OS X, в которой вы работаете. Я получаю разные результаты при запуске id как администратор на OS X 10.6, чем при запуске в качестве администратора на OS X 10.5.


7
2018-01-14 23:02



В другом ответе Elliott предупреждает, что команда «createhomedir -c», в конце концов, создаст учетные записи для всех пользователей в каталоге, к которому вы привязаны. (Параметр «-c» на странице руководства «создает домашние каталоги только для локальных домашних путей».) Существует еще один вариант «-u username», который может работать лучше. - Clinton Blackmore
привет, я использую сценарий выше. Поэтому он добавляет моего нового пользователя, но когда пользователь подключится к своему календарю, он говорит, что у него нет разрешений! Вы можете мне помочь ?
@jimmy: Я бы порекомендовал задать новый вопрос на serverfault и ссылку на этот ответ, вместо того, чтобы просто задавать вопрос в комментариях, что редко будет видно. Я ожидал бы, что разрешения будут правильными. Использование «chown» и «chmod» может помочь, если вы можете определить файл, который не имеет правильных разрешений ... но я не знаю, какой из них он будет. - Clinton Blackmore
dscl -list ограничено 256 результатами, поэтому, если у вас более 256 пользователей, этот метод не сможет гарантировать уникальный UID. - smokris


я начал небольшая обертка около dscl который принимает useradd's параметры - он не является полным (и я не думаю, что это может быть, поскольку некоторые вещи не возможны в OS X), но я использовал его для создания некоторых пользователей.

Рамка существует для всех параметров, поэтому, если вы хотите воспользоваться замечательными социальными функциями GitHub, это легко сделать.


4
2017-10-17 06:15