Bagaimana saya bisa membuat pengguna sistem baru, salinan persis dari yang lain (memiliki grup, izin, hak istimewa, dan pengaturan yang sama), tetapi dengan nama pengguna, kata sandi, dan direktori home yang berbeda?
Bagaimana saya bisa membuat pengguna sistem baru, salinan persis dari yang lain (memiliki grup, izin, hak istimewa, dan pengaturan yang sama), tetapi dengan nama pengguna, kata sandi, dan direktori home yang berbeda?
Jawaban:
Script ini akan melakukannya:
#!/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}
Ia mendapat grup pengguna sumber (tidak termasuk grup yang sama dengan login mereka) dan shell, kemudian membuat pengguna baru dengan shell yang sama dan grup sekunder.
Usage: clone-user src_user_name new_user_name
Tidak ada pengecekan error, itu hanya skrip klon yang cepat dan kotor.
john
, salah satu grup adalah johnny
. Inilah yang terjadi: SRC=john ; echo "$SRC group1 johnny group3" | sed "s/ ${SRC}//g" | sed "s/ /,/g"
Keluaran:john,group1ny,group3
SRC_GROUPS=$(id -Gn ${SRC} | sed "s/ /,/g" | sed -r 's/\<'${SRC}'\>\b,?//g')
Itu akan menghapus nama grup pengguna dengan tepat sebagai lawan pencocokan string parsial. Ex. Jika Id pengguna adalah 'pi' dan pengguna memiliki grup termasuk 'pi, gpio, spi, dll' itu hanya akan menghapus 'pi' dan bukan pencocokan string parsial lainnya.
passwd newuser
untuk memodifikasi kata sandi.Sadarilah bahwa sistem bijaksana kedua pengguna adalah sama (UID yang sama), sehingga seseorang akan dapat masuk ke direktori home yang lain dan memodifikasi sesuka hati.
useradd
. Sekarang saya berpikir tentang hal itu, Anda dapat melakukannya sebaliknya, membuat pengguna baru dengan useradd
dan kemudian memodifikasi UID dan GID untuk mengkloning yang pertama.
Untuk Linux Mint 18 Mate
Berdasarkan skrip Mike Anderson, saya membuat satu yang menanyakan pertanyaan tentang pengguna baru, pengguna lama, kata sandi baru, dan kemudian menyalin direktori home pengguna lama dan menggantikan semua contoh nama pengguna lama di direktori home baru dengan yang baru nama pengguna.
Perbedaan utama dalam skrip saya mengenai baris useradd adalah passwd gagal di Linux Mint 18, digantikan oleh chpasswd. Agar kata sandi berfungsi, saya membuat baris baru: echo $ newuser: $ newpassword | chpasswd.
Perbedaan lainnya adalah saya tidak bisa mendapatkan --create-home untuk bekerja jadi saya hanya menggunakan mkdir di baris baru.
Hati-hati jika Anda memiliki direktori home pengguna lama yang besar.
Ambil apa yang kamu butuhkan dan tinggalkan sisanya. Anda bertanggung jawab atas kode apa pun yang Anda salin - buat cadangan!
#!/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
Terima kasih kepada semua orang di dunia yang membantu saya dengan skrip ini. John di Oregon
olduser_GROUPS=$(id -Gn ${olduser} | sed "s/ /,/g" | sed -r 's/\<'${olduser}'\>\b,?//g')
Itu akan menghapus nama grup pengguna dengan tepat sebagai lawan pencocokan string parsial. Ex. Jika Id pengguna adalah 'pi' dan pengguna memiliki grup termasuk 'pi, gpio, spi, dll' itu hanya akan menghapus 'pi' dan bukan pencocokan string parsial lainnya.
Seperti yang Anda ketahui, pengguna Unix sebagai UID bukan nama, Sebagai contoh: mohsen dikenal sebagai 1001 atau grup mohsen yang dikenal sebagai 1001.
Anda harus menulis skrip dan melakukan langkah demi langkah langkah-langkah berikut:
/etc/suduers
dan nyatakan pengguna Anda.scp
pada target Anda.CATATAN: Jangan gunakan skrip dan gunakan catatan di atas langkah demi langkah. Bahkan Anda bisa menyisipkan ke atas.
Coba perintah ini
useradd -N -g gid -G gid2,gid3 -m