User copy, azaz felhasználó másolása Linux alatt nem mindennapi feladat. Sokan nem is gondolnak ilyenre, mert nem érzik fontosnak.
User copy, azaz felhasználó másolás
Mi is ez? Ha egy felhasználót egyazegyben, teljesen mértékben lemásolunk egy másik felhasználói név alá. Minden adatát, beállítását átmásolunk egy új felhasználónak.
Mi az értelme?
A legegyszerűbb oka lehet, ha egy biztonsági másolatot, tartalék usert akarunk létrehozni. Így ha valamit elrontunk nagyon a saját felhasználói nevünk alatt, akkor van egy olyan felhasználó, melyet használni tudunk. Érdemes nagyobb konfigurálási művelet előtt egy ilyen tartalékot létrehozni, és nem lesz túl nagy probléma, ha nem lesz jó az új beállítás.
Ilyenkor valóban kis munkával – hiszen a felhasználói beállítások nagy része másolásra került – folyathatjuk a munkát az új néven.
Miért ne mentsük a beállításokat, és állítsuk vissza azt?
Ha neked ez a megoldás tetszik, akkor tedd azt. Én azért szeretem az user copy, azaz felhasználó másolás megoldást, mert nem kell visszaállítani a beállításokat. Átlépek a felhasználói fiókba és máris a megszokott környezeteben vagyok.
Az user copy szkript:
#!/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 # SUDO!!!!!!!!!!!! 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
A használata
Nagyon egyszerű, hiszen csak emelt joggal indítod, ahogy a fejlécben is írják, majd a megfelelő kérdésekre (mi legyen az új felhasználó neve, jelszava stb.) és a jelszó megadása után már nincs is egyéb teendőd. Lefutás után átlépsz az új felhasználói fiókba, majd a maradék pár beállítást megteszed.
Mivel lehet probléma?
Egyes linkek nem fognak működni, de ezek nagy részét javítani lehet. Csatolási pontokat is ellenőrizd le, mert egy home/laci/Dokumentumok alá bemountolt lemez nem fog megjelenni a home/ujuser/Dokumentumok alatt!
Amit az user copy előtt tegyél meg
A saját könyvtáradat takarítsd ki pld. a bleachbit-tel. A sok feleleges szemét, amit a bleachbit leszed ne kerüljön másolásra!
A szkriptet MagyArch alatt 2021 júniusában teszteltem.