Komut satırından yeni bir kullanıcı oluşturmak için hangi adımlar gereklidir?


27

Hangi komutlar (veya komut dosyası) Mountain Lion'da yalnızca terminal veya ssh üzerinden komut satırından çalıştırılan tamamen işlevsel bir kullanıcı hesabı oluşturabilir.

Var olan bir cevap çifti işe yarayacak gibi görünüyor , ama Mountain Lion'da tamamen işlevsel bir kullanıcı hesabı oluşturmak için kısa bir senaryo veya araç olup olmadığını merak ettim?

Yanıtlar:


33

İşte NetInstall işleminin bir parçası olarak bunu işlemek için yazdığım bir kabuk betiği (görüntüleme işlemi sırasında otomatik olarak bir yerel yönetici hesabı oluşturmak).

#!/bin/sh
. /etc/rc.common
dscl . create /Users/administrator
dscl . create /Users/administrator RealName "Administrator Account"
dscl . create /Users/administrator hint "Password Hint"
dscl . create /Users/administrator picture "/Path/To/Picture.png"
dscl . passwd /Users/administrator thisistheaccountpassword
dscl . create /Users/administrator UniqueID 501
dscl . create /Users/administrator PrimaryGroupID 80
dscl . create /Users/administrator UserShell /bin/bash
dscl . create /Users/administrator NFSHomeDirectory /Users/administrator
cp -R /System/Library/User\ Template/English.lproj /Users/administrator
chown -R administrator:staff /Users/administrator

Bahsetmek için bazı notlar:

  • Bu çalıştırılabilir bir ".sh" dosyası olarak kaydedildi.
  • NetInstall sırasında çalıştığından, root olarak çalışır ve düzgün çalışması için root olarak çalıştırılması gerekir. Ayrıca ilk iki satırı çıkarabilir, sonraki her satırın başına bir "sudo" ekleyebilir ve bunları Terminal'de ayrı komutlar olarak el ile çalıştırabilirsiniz.
  • UniqueID'yi 501'den tüm sistemlerde güvenli olduğunu bileceğiniz bir numaraya değiştirin (501, bir Mac'te oluşturulan ilk hesap tarafından alınır, sisteminizde kaç kullanıcının olduğuna bağlı olarak genellikle 550 gibi daha yüksek bir şey muhtemelen güvenli olur) .
  • 80 PrimaryGroupID, bir Yönetici kullanıcısı oluşturur. Standart kullanıcı oluşturmak için BirincilGrup Kimliği 20 olarak değiştirin.
  • Hiç sorun yaşamadan 50'den fazla Mac'i bu şekilde görüntüledim. Bu hesabı SSH ile komutları çalıştırmak, ARD aracılığıyla yamaları çıkarmak ve yerel masa başı yönetimi yapmak için kullanıyorum.

Umut verici görünüyor - yakında test edecek!
bmike

Değişkenleri betiğe geçirerek düzenli kullanıcılar oluşturmak için bu betiği uyarladığımda ve karşılaştığım sorun, son satır dışındaki her şeyin yolunda gitmesidir. Yani, dscl kullanıcıyı oluşturur ve ben dscl kullandığımda. liste / kullanıcılar, kullanıcı gayet iyi görünüyor, ancak chown kullanıcıyı tanımıyor ve giriş dizini izinlerini doğru şekilde değiştiremediğim için, kullanıcının giriş yapmasına izin vermiyor.

Keşke yapabilseydim. Kabuk yazımına gelince zayıf yanlarımdan biri değişkenlerin kullanımını hiç iyi öğrenmememdi, çünkü çoğunlukla işimde bu noktada hiçbir şey için kullanmam gerekmedi. Belki @bmike veya başkası tavsiye sunabilir.
bispymusic 15

@HackintoshCoat betiğinizi gönderebilir misiniz? Komutunuzda, aslında "/ Kullanıcılar" olduğunda küçük harf "/ users" yazdınız. Senaryonuzdaki sorunun bu olduğundan şüpheliyim; Ancak, taze gözlerin kontrol edilmesi sorunu oldukça çabuk bulabilir. Aslında birden fazla kullanıcıyı ayarlayan benzer bir komut dosyası kullandım, bu nedenle değişkenlerin kendisinin kullanımı sorun değil.
Kent

2
Son iki satırın ( cp -R ...; chown -R ...) yerine komutu kullanabilirsiniz createhomedir -u administrator. createhomedirbir de erkek sayfası var.
Alex Leach,

14

Bunu daha da otomatikleştirmek için, önceden ayarlanmış kullanıcıları olan bir mac üzerinde çalışıyorsanız, bir sonraki "kullanılabilir" kullanıcı kimliğini almak için aşağıdaki satır kullanılabilir.

LastID=`dscl . -list /Users UniqueID | awk '{print $2}' | sort -n | tail -1`

NextID=$((LastID + 1))

Ardından, bispymusic'in yukarıdaki cevabındaki ilgili satır değiştirilebilir:

 dscl . create /Users/administrator UniqueID $NextID

2

Yukarıdaki cevapta bazı güncellemeler var.

dscl / -append /Groups/admin GroupMembership newUserName

Bu komut, kullanıcının Yönetici erişimine sahip olmasını sağlamak için kullanılabilir. Bu komut sağlanmazsa, kullanıcı otomatik olarak standart kullanıcı olarak ayarlanacaktır.

dscl . create /Users/newUserName PrimaryGroupID 80

Bu, kullanıcının birincil grup kimliğini ayarlar. 80 yönetici , 20 personel demektir . Ve 20'ye ayar yapmak, kullanıcıyı standart yapmaz. İlk komut belirtilmediği sürece.


Netleştirmek için, bu komutlardan herhangi biri aynı şeyi gerçekleştirecek mi?
MaxGabriel

/ Komut / admin komutunu ekleyerek ilk komutu tercih ederim .
Vipin Johney 27:13

0

İşte komut satırını kullanarak Max OS X'te yeni kullanıcılar eklemek için yazdığım bir kabuk betiği. Linux gibi aynı şekilde çalışır. Kişisel ihtiyaçlarınız için bir tane düzenlemek için çekinmeyin. Sadece useradd.sh olarak adlandırın ve doğru izinleri ayarlayın ( chmod 0700 useradd.shbenim durumumda). Bispymusic, Alex Leach, Kent'e katkılarından dolayı teşekkür ederiz .

OS X Yüksek Sierra test edildi

#!/bin/sh

if [[ `id -u` != 0 ]]; then
    echo "Must be root to run script"
    exit
fi

read -p "Enter user name and press [ENTER]: " UserName

if [[ $UserName == `dscl . -list /Users UniqueID | awk '{print $1}' | grep -w $UserName` ]]; then
    echo "User already exists!"
    exit 0
fi

read -p "Enter real name and press [ENTER]: " RealName
read -p "Enter PrimaryGroupID (80 - admin, 20 - user) and press [ENTER]: " PrimaryGroupID
LastID=`dscl . -list /Users UniqueID | awk '{print $2}' | sort -n | tail -1`
NextID=$((LastID + 1))

. /etc/rc.common
dscl . create /Users/$UserName
dscl . create /Users/$UserName RealName $RealName

read -p "Enter password hint and press [ENTER]: " PasswordHint
dscl . create /Users/$UserName hint $PasswordHint
PasswordHint=0

echo " "
read -s -p "Enter Account Password and press [ENTER]: " AccountPassword
echo " "
read -s -p "Enter Account Password again and press [ENTER]: " AccountPasswordRepeat
if [[ $AccountPassword == $AccountPasswordRepeat ]]; then
  dscl . passwd /Users/$UserName $AccountPassword
  AccountPassword=0
else
  echo "Passwords do not match!"
  exit 1
fi
echo " "
dscl . create /Users/$UserName UniqueID $NextID
dscl . create /Users/$UserName PrimaryGroupID $PrimaryGroupID
dscl . create /Users/$UserName UserShell /bin/bash
dscl . create /Users/$UserName NFSHomeDirectory /Users/$UserName
createhomedir -u $UserName -c

echo " "
echo "New user `dscl . -list /Users UniqueID | awk '{print $1}' | grep -w $UserName` has been created with unique ID `dscl . -list /Users UniqueID | grep -w $UserName | awk '{print $2}'`"

Eğer aynı tane alabilirsiniz benim özünden


Olabilir NextID=$((`dscl . -list /Users UniqueID | awk '{print $2}' | sort -n | tail -1` + 1))ama şu anda olduğu gibi daha iyi ve daha net görünüyor.
Igor Voltaic
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.