Я хотел бы иметь возможность создавать новых пользователей в Mac OS X 10.5 удаленно после ssh'ing в машину. Как мне это сделать?
Я хотел бы иметь возможность создавать новых пользователей в Mac OS X 10.5 удаленно после ssh'ing в машину. Как мне это сделать?
Ответы:
Используйте команду 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
PrimaryGroupID 80
это admin
, так luser
можно использовать sudo
даже если вы не добавите его в группу администраторов игрового.
(Этот ответ следует рассматривать как дополнение к некоторым пробелам в процедуре Палмера)
Чтобы выбрать неиспользуемый UniqueID для вашего нового пользователя, вы можете использовать:
maxid=$(dscl . -list /Users UniqueID | awk 'BEGIN { max = 500; } { if ($2 > max) max = $2; } END { print max + 1; }')
newid=$((maxid+1))
... затем используйте последовательность команд dscl, которые дал palmer для создания учетной записи, а затем создайте домашний каталог нового пользователя с помощью:
cp -R /System/Library/User\ Template/English.lproj /Users/luser
chown -R luser:staff /Users/luser
if [[ "$(sw_vers -productVersion)" != 10.[0-5].* ]]; then
# Set ACL on Drop Box in 10.6 and later
chmod +a "user:luser allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit" /Users/luser/Public/Drop\ Box
fi
(есть команда createhomedir, но она не работала, когда я ее тестировал.)
sudo createhomedir -s
(IIRC) реплик / файловые ресурсы открытого каталога, и они с радостью создают домашние каталоги.
dscl -list
ограничено 256 результатами, поэтому если у вас более 256 пользователей, этот метод не сможет гарантировать уникальный UID.
Если вам нужно создать группу пользователей, можно создать структурированный текстовый файл и передать его dsimport
для выполнения работы.
Руководство по администрированию командной строки Apple содержит целую главу о пользователях и группах.
Еще один способ выбрать уникальный идентификатор пользователя перед созданием учетной записи - просто просмотреть список и убедиться, что того, кого вы хотите использовать, там нет:
sudo dscl . list /Users uid
sudo dscl . list groups gid
Удобно, если вам нужно использовать определенный идентификатор
dscl -list
ограничено 256 результатами, поэтому если у вас более 256 пользователей, этот метод не сможет гарантировать уникальный UID.
grep
с учетом id
того, что вы хотели использовать для нового пользователя
Я использовал разные ответы здесь, чтобы придумать хороший сценарий для создания учетных записей пользователей. Следует признать, что он не предназначен для одновременного запуска команды из ssh; Более того, он предназначен для выполнения сценариев при компиляции образа OS X на основе пакетов (созданного Casper Imaging или 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.
dscl -list
ограничено 256 результатами, поэтому если у вас более 256 пользователей, этот метод не сможет гарантировать уникальный UID.
Я начал немного обертки о dscl
том , что принимает useradd
параметры «s - это не полная (и я не думаю , что это может быть, так как некоторые вещи невозможно на OS X), но я использовал его , чтобы сделать некоторые созданий пользователя.
Фреймворк есть для всех параметров, поэтому, если вы хотите воспользоваться удивительными социальными функциями GitHub, это легко сделать.
single_user
режима (сброс настроек безопасности), вам нужно перезагрузить компьютер, удерживая егоCommand-S
, получить доступ для записи на диск в соответствии с подробностями на экране. , а затем,rm /var/db/.AppleSetupDone
который позволит вам создать новую учетную запись администратора. Надеюсь, что это поможет кому-то