Yeni bir sistem kullanıcısı, başka bir kullanıcının tam kopyası (aynı gruplara, izinlere, ayrıcalıklara ve ayarlara sahip), ancak farklı kullanıcı adı, şifre ve giriş diziniyle nasıl oluşturabilirim?
Yeni bir sistem kullanıcısı, başka bir kullanıcının tam kopyası (aynı gruplara, izinlere, ayrıcalıklara ve ayarlara sahip), ancak farklı kullanıcı adı, şifre ve giriş diziniyle nasıl oluşturabilirim?
Yanıtlar:
Bu script bunu yapacak:
#!/bin/bash
SRC=$1
DEST=$2
SRC_GROUPS=$(id -Gn ${SRC} | sed "s/${SRC} //g" | sed "s/ ${SRC}//g" | sed "s/ /,/g")
SRC_SHELL=$(awk -F : -v name=${SRC} '(name == $1) { print $7 }' /etc/passwd)
useradd --groups ${SRC_GROUPS} --shell ${SRC_SHELL} --create-home ${DEST}
passwd ${DEST}
Kaynak kullanıcı gruplarını (oturum açma işlemleriyle aynı olan grubu içermez) ve kabuğunu alır, ardından aynı kabuk ve ikincil gruplarla yeni bir kullanıcı oluşturur.
Usage: clone-user src_user_name new_user_name
Hata kontrolü yok, sadece hızlı ve kirli bir klon betiği.
john
gruplardan biridir johnny
. İşte olanlar: SRC=john ; echo "$SRC group1 johnny group3" | sed "s/ ${SRC}//g" | sed "s/ /,/g"
Çıktı:john,group1ny,group3
SRC_GROUPS=$(id -Gn ${SRC} | sed "s/ /,/g" | sed -r 's/\<'${SRC}'\>\b,?//g')
şekilde değiştirmenizi öneririm Bu, kısmi bir dize eşleşmesinin aksine tam kullanıcı grubu adını düzgün bir şekilde kaldıracaktır. Ör. Bir kullanıcının kimliği 'pi' ise ve kullanıcının 'pi, gpio, spi vb.' İçeren grupları varsa, diğer kısmi dize eşleşmelerini değil, yalnızca 'pi'yi kaldırır.
passwd newuser
parolayı değiştirmek için çalıştırın .Sistem bilgisinin her iki kullanıcının da aynı (aynı UID) olduğunu unutmayın, böylece biri diğerinin ana dizinine girebilir ve istediği zaman değiştirebilir.
useradd
. Şimdi düşündüğüme göre, bunu başka bir şekilde yapabilir, yeni bir kullanıcı oluşturabilir useradd
ve daha sonra ilkini klonlamak için UID ve GID'yi değiştirebilirsiniz.
Linux Mint 18 Mate için
Mike Anderson'ın senaryosuna dayanarak, yeni kullanıcı, eski kullanıcı, yeni şifre hakkında sorular soran ve daha sonra eski kullanıcının ana dizinini kopyalayan ve yeni ana dizindeki eski kullanıcının adının tüm örneklerini yeni kullanıcının adı.
Komut dosyamda useradd satırı ile ilgili temel fark, parolaların Linux Mint 18'de başarısız olması ve bunun yerine chpasswd kullanılması. Şifre çalışmak için yeni bir satır oluşturmak vardı: echo $ newuser: $ newpassword | chpasswd.
Başka bir fark, --create-home'u çalıştıramadım, bu yüzden mkdir'i yeni bir satırda kullandım.
Eski bir kullanıcının ana dizininiz olup olmadığına dikkat edin.
İhtiyacınız olanı alın ve gerisini bırakın. Kopyaladığınız kodlardan siz sorumlusunuz - yedekleyin!
#!/bin/bash
# clone a user
# usage:
# if you named this as below then
# change to the directory and run this command
# sudo bash clone-user.sh
echo "============="
echo "this script will create a new user"
echo "based on an existing user's data"
echo
echo "You will be shown a list of users who can currently log on"
echo "Remember which user you would like to clone."
echo "You will be asked for the new user's name, their password"
echo "and the old user to clone".
echo "============="
echo
echo -n "New user's name: "
read newuser
echo -n "New user's password: "
read newpassword
echo
echo "Current users you can clone:"
echo "----"
awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd
echo
echo -n "Old user to clone: "
read olduser
echo
echo "You have selected: "
echo "----"
echo "new user: $newuser"
echo "new user password: $newpassword"
echo "old user: $olduser"
echo
olduser_GROUPS=$(id -Gn ${olduser} | sed "s/${olduser} //g" | sed "s/ ${olduser}//g" | sed "s/ /,/g")
olduser_SHELL=$(awk -F : -v name=${olduser} '(name == $1) { print $7 }' /etc/passwd)
echo "old user groups: "
echo "----"
echo $olduser_GROUPS
echo "olduser shell: "
echo $olduser_SHELL
read -rsp $'Press any key to continue or ctrl-c to exit...\n' -n1 key
useradd --groups $olduser_GROUPS --shell $olduser_SHELL $newuser
echo $newuser:$newpassword | chpasswd
read -rsp $'ready to make home direcoty -- ctrl-c to exit...\n' -n1 key
mkdir /home/$newuser
chown -R $newuser:$newuser /home/$newuser
echo
echo "Script should be done now."
echo
echo "Do you see your new users name below?"
echo
awk -F'[/:]' '{if ($3 >= 1000 && $3 != 65534) print $1}' /etc/passwd
echo
echo "We are now going to copy the old user's home folder to the new user"
echo "then change ownership to the new user"
echo
read -rsp $'Ready to copy home folder --- or ctrl-c to exit...\n' -n1 key
rsync -aPv /home/$olduser/. /home/$newuser/
chown -R --from=$olduser $newuser:$newuser /home/$newuser
echo
echo "Now we are going to change the names of files and folders to the new user"
echo
grep -rlI $olduser /home/$newuser/ . | sudo xargs sed -i 's/$olduser/$newuser/g'
echo
echo "Done now."
echo
read -rsp $'Press any key to exit...\n' -n1 key
echo
echo
Dünyadaki bu senaryoda bana yardımcı olan herkese teşekkürler. John Oregon
olduser_GROUPS=$(id -Gn ${olduser} | sed "s/ /,/g" | sed -r 's/\<'${olduser}'\>\b,?//g')
şekilde değiştirmenizi öneririm Bu, kısmi bir dize eşleşmesinin aksine tam kullanıcı grubu adını düzgün bir şekilde kaldıracaktır. Ör. Bir kullanıcının kimliği 'pi' ise ve kullanıcının 'pi, gpio, spi vb.' İçeren grupları varsa, diğer kısmi dize eşleşmelerini değil, yalnızca 'pi'yi kaldırır.
Bildiğiniz gibi, Unix kullanıcıları UID olarak adlandırılmıyor, Örnek için: 1001 olarak bilinen mohsen veya 1001 olarak bilinen mohsen grubu.
Bir komut dosyası yazmanız ve aşağıdaki adımları adım adım yapmanız gerekir:
/etc/suduers
ve durumu.scp
hedefinize.NOT: Komut dosyası kullanmayın ve yukarıdaki notları adım adım kullanın. Yukarıdakilere bile ekleyebilirsiniz.
Bu komutu deneyin
useradd -N -g gid -G gid2,gid3 -m