User copy, felhasználó másolás

Linux tipp
Linux tipp

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.