Vraag Hoe maak ik gebruikersaccounts van de Terminal in Mac OS X 10.5 aan?


Ik zou graag nieuwe gebruikers in Mac OS X 10.5 op afstand willen maken nadat ik in de machine heb geshacked. Hoe doe ik dit?


84
2018-06-05 18:07


oorsprong


Ik heb nog niet de reputatie om te antwoorden, maar als je op zoek bent naar hoe dit te doen single_user modus (een beveiligingsreset), dan moet u opnieuw opstarten Command-S, krijg schrijftoegang tot de schijf per schermdetails en vervolgens rm /var/db/.AppleSetupDone waarmee u een nieuw beheerdersaccount kunt maken. Ik hoop dat dit iemand helpt - New Alexandria


antwoorden:


Gebruik de opdracht dscl. Dit voorbeeld zou de gebruiker "luser" creëren, zoals:

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

U kunt dan passwd gebruiken om het wachtwoord van de gebruiker te wijzigen, of gebruik:

dscl . -passwd /Users/luser password

U moet / Users / luser maken voor de basismap van de gebruiker en van eigenaar veranderen, zodat de gebruiker er toegang toe heeft en er zeker van is dat de UniqueID in feite uniek is.

Deze regel voegt de gebruiker toe aan de beheerdersgroep:

dscl . -append /Groups/admin GroupMembership luser

80
2018-06-05 18:15



Hoe zorg ik ervoor dat de UID uniek is? - JR Lawhorne
Er is geen automatische manier; als je dit script gebruikt, kun je het gewoon de opdracht "id ####" laten uitvoeren en ervoor zorgen dat het "No such user" of een dergelijke hack retourneert. - palmer
Vergeet niet om sudo te gebruiken als u geen rechten hebt. - Raffi Khatchadourian
Trouwens, want dit is veel meer woordenschat dan het zou moeten zijn, Ik porteerde deze opdrachten in de useradd syntaxis. - Xiong Chiamiov
Let daar op PrimaryGroupID 80 is admin, dus luser kan gebruiken sudo zelfs als u hem niet toevoegt aan de groep van beheerders. - ruslo


(Dit antwoord moet worden beschouwd als een addendum om enkele blanco's in de palmer-procedure in te vullen)

Als u een ongebruikte UniqueID voor uw nieuwe gebruiker wilt kiezen, kunt u het volgende gebruiken:

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

... gebruik vervolgens de reeks dscl-opdrachten die palmer heeft gegeven om het account te maken en maak vervolgens de basismap van de nieuwe gebruiker aan met:

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

(er is een createhomedir-opdracht, maar het werkte niet toen ik het testte.)


20
2018-06-05 20:21



Ik heb een script gemaakt dat onze Open Directory-master bevolkt met nieuwe gebruikers en vervolgens oproepen sudo createhomedir -s (IIRC) in de Open Directory-replica's / bestandsshares, en ze maken graag de persoonlijke mappen. - Clinton Blackmore
dscl -list is beperkt tot 256 resultaten, dus als je meer dan 256 gebruikers hebt, kan deze techniek geen unieke UID garanderen. - smokris


Als u een aantal gebruikers wilt maken, is het mogelijk om een ​​gestructureerd tekstbestand te maken en door te geven dsimport om het werk te doen.

Appels Commandoregelbeheer Guide heeft een heel hoofdstuk over gebruikers en groepen.


8
2018-06-05 19:19



Vreemd. Apple lijkt v10.5 te hebben afgeschaft van het document waarnaar je in eerste instantie verwees, maar gehouden v10.3 en een minder uitgebreid Snow Leopard-versie - chb


Een andere manier om een ​​uniek gebruikers-ID te kiezen en te kiezen voordat u een account maakt, is gewoon door de lijst bladeren en controleren dat degene die u wilt gebruiken er niet is:

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

Handig als u een bepaald ID moet gebruiken


7
2017-11-30 16:10



dscl -list is beperkt tot 256 resultaten, dus als je meer dan 256 gebruikers hebt, kan deze techniek geen unieke UID garanderen. - smokris
yup dat is het kortste pad om die gebruiker hier op dit moment toe te voegen, gewoon grep het met de id die je in gedachten had om te gebruiken voor de nieuwe gebruiker - yair


Ik heb de verschillende antwoorden hier gebruikt om te komen tot wat ik denk dat een aardig script is om gebruikersaccounts te maken. Toegegeven, dit is niet ontworpen voor het uitvoeren van een opdracht per keer vanuit ssh; het is moreso ontworpen om een ​​script-run te zijn bij het compileren van een pakketgebaseerde afbeelding van OS X (zoals gemaakt door Casper Imaging of 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)"

In het script kun je aangeven tot welke groepen een gebruiker behoort te behoren. Het lijkt mij dat dit kan verschillen afhankelijk van de versie van OS X die u gebruikt. Ik krijg verschillende resultaten als ik loop id als een beheerder op OS X 10.6 dan dat ik doe als ik als beheerder op OS X 10.5.


7
2018-01-14 23:02



In een ander antwoord waarschuwt Elliott dat de opdracht createhomedir -c tegen het einde accounts zal maken voor alle gebruikers in de directory waaraan u bent gebonden. (De '-c' optie, in de man-pagina, 'maakt alleen thuismappen voor lokale homepaden.') Er is nog een andere optie, '-u-gebruikersnaam', die mogelijk beter werkt. - Clinton Blackmore
hallo ik gebruik het bovenstaande script. Dus het voegt mijn nieuwe gebruiker toe, maar wanneer de gebruiker verbinding maakt met zijn agenda, zegt hij dat hij niet over de rechten beschikt! Kunt u mij helpen ?
@jimmy: Ik zou aanraden een nieuwe vraag te stellen over serverfault en een link naar dit antwoord te maken in plaats van alleen maar een vraag te stellen in de opmerkingen, die zelden zullen worden gezien. Ik zou verwachten dat de toestemmingen gelijk hebben. Het gebruik van 'chown' en 'chmod' kan helpen als je een bestand kunt identificeren dat niet de juiste rechten heeft ... maar ik weet niet welke het zou zijn. - Clinton Blackmore
dscl -list is beperkt tot 256 resultaten, dus als je meer dan 256 gebruikers hebt, kan deze techniek geen unieke UID garanderen. - smokris


Ik begon een klein omhulsel wat betreft dscl dat duurt useradd's parameters - het is niet compleet (en dat kan ook niet, omdat sommige dingen niet mogelijk zijn in OS X), maar ik heb het gebruikt om een ​​aantal gebruikers aan te maken.

Het framework is er voor alle parameters, dus als je wilt profiteren van de geweldige sociale functies van GitHub, is het eenvoudig om te doen.


4
2017-10-17 06:15