Я хотів би мати можливість віддалено створювати нових користувачів у 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
useradd
синтаксис.
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, яку палмер дав, щоб створити обліковий запис, а потім створити домашній каталог нового користувача за допомогою:
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) репліки / файлові файли Open Directory, і вони із задоволенням створюють домашні каталоги.
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; Крім того, він призначений для запуску сценарію під час компілювання зображення на основі пакета ОС 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)"
Сценарій дозволяє вказати, до яких груп повинен належати користувач. Мені здається, що це може відрізнятися залежно від версії ОС X, яку ви працюєте. Я отримую інші результати, коли запускаюсь id
як адміністратор на OS X 10.6, ніж у мене, коли я працюю як адміністратор на OS X 10.5.
dscl -list
обмежено 256 результатами, тому якщо у вас більше 256 користувачів, ця методика не зможе гарантувати унікальний UID.
Я почав невелику обгортку про dscl
те, що приймає useradd
параметри - це не є повним (і я не думаю, що це може бути, оскільки деякі речі неможливі в OS X), але я використовував це для створення користувачів.
Рамка існує для всіх параметрів, тому, якщо ви хочете скористатися дивовижними соціальними особливостями GitHub, це зробити нескладно.
single_user
режиму (скидання безпеки), тоді вам потрібно буде перезавантажити утримуванняCommand-S
, отримати доступ для запису на диск відповідно до інформації на екрані , а потімrm /var/db/.AppleSetupDone
дозволить створити новий обліковий запис адміністратора. Сподіваюся, що це комусь допоможе