Chciałbym mieć możliwość tworzenia nowych użytkowników w Mac OS X 10.5 zdalnie po ssh'ing na maszynie. Jak mam to zrobic?
Chciałbym mieć możliwość tworzenia nowych użytkowników w Mac OS X 10.5 zdalnie po ssh'ing na maszynie. Jak mam to zrobic?
Odpowiedzi:
Użyj polecenia dscl. Ten przykład utworzyłby użytkownika „luser”, w ten sposób:
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
Następnie możesz użyć passwd, aby zmienić hasło użytkownika lub użyć:
dscl . -passwd /Users/luser password
Będziesz musiał utworzyć / Users / luser dla katalogu domowego użytkownika i zmienić własność, aby użytkownik mógł uzyskać do niego dostęp, i upewnij się, że UniqueID jest w rzeczywistości unikalny.
Ten wiersz doda użytkownika do grupy administratora:
dscl . -append /Groups/admin GroupMembership luser
useradd
składni.
PrimaryGroupID 80
jest admin
, więc luser
można używać sudo
, nawet jeśli nie dodać go do grupy Administratorzy męska.
(Ta odpowiedź powinna być traktowana jako uzupełnienie do wypełnienia niektórych pól w procedurze Palmera)
Aby wybrać nieużywany UniqueID dla nowego użytkownika, możesz użyć:
maxid=$(dscl . -list /Users UniqueID | awk 'BEGIN { max = 500; } { if ($2 > max) max = $2; } END { print max + 1; }')
newid=$((maxid+1))
... następnie użyj sekwencji poleceń dscl podanych przez Palmera, aby utworzyć konto, a następnie utwórz katalog domowy nowego użytkownika za pomocą:
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
(istnieje polecenie createhomedir, ale nie działało, gdy go przetestowałem).
sudo createhomedir -s
(IIRC) w Replikach / folderach plików Open Directory i chętnie tworzą katalogi domowe.
dscl -list
jest ograniczony do 256 wyników, więc jeśli masz więcej niż 256 użytkowników, ta technika nie zagwarantuje unikalnego UID.
Jeśli masz grupę użytkowników do utworzenia, możesz utworzyć uporządkowany plik tekstowy i przekazać go dsimport
do wykonania zadania.
Przewodnik administratora wiersza polecenia Apple zawiera cały rozdział dotyczący użytkowników i grup.
Innym sposobem na wybranie unikalnego identyfikatora użytkownika przed utworzeniem konta jest przejrzenie listy i sprawdzenie, czy nie ma tam tego, którego chcesz użyć:
sudo dscl . list /Users uid
sudo dscl . list groups gid
Przydatne, jeśli musisz użyć określonego identyfikatora
dscl -list
jest ograniczony do 256 wyników, więc jeśli masz więcej niż 256 użytkowników, ta technika nie zagwarantuje unikalnego UID.
grep
z id
myślą o tym , którego miałeś użyć dla nowego użytkownika
Wykorzystałem różne odpowiedzi tutaj, aby wymyślić, co uważam za fajny skrypt do tworzenia kont użytkowników. Trzeba przyznać, że nie jest to przeznaczone do uruchamiania polecenia na raz z ssh; Moreso został zaprojektowany jako skrypt uruchamiany podczas kompilacji obrazu systemu OS X opartego na pakiecie (utworzonego przez Casper Imaging lub 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)"
Skrypt umożliwia określenie grup, do których użytkownik powinien należeć. Wydaje mi się, że może się to różnić w zależności od używanej wersji systemu OS X. Otrzymuję inne wyniki, gdy uruchamiam się id
jako administrator w OS X 10.6, niż kiedy działam jako administrator w OS X 10.5.
dscl -list
jest ograniczony do 256 wyników, więc jeśli masz więcej niż 256 użytkowników, ta technika nie zagwarantuje unikalnego UID.
Zacząłem małe opakowanie na temat dscl
tych useradd
parametrów - nie jest kompletne (nie sądzę, że może być, ponieważ niektóre rzeczy nie są możliwe w OS X), ale użyłem go do tworzenia użytkowników.
Struktura jest dostępna dla wszystkich parametrów, więc jeśli chcesz skorzystać z niesamowitych funkcji społecznościowych GitHub, łatwo to zrobić.
single_user
trybu (resetowanie zabezpieczeń), musisz ponownie uruchomić, przytrzymującCommand-S
, uzyskać dostęp do zapisu na dysku zgodnie ze szczegółami na ekranie , a następnierm /var/db/.AppleSetupDone
umożliwi utworzenie nowego konta administratora. Mam nadzieję, że to komuś pomoże