3 # ___ _ __ ___ _ __ __ _ __| | __| |_ _ ___ ___ _ __
4 # / _ \| '_ \ / _ \ '_ \ / _` |/ _` |/ _` | | | / __|/ _ \ '__|
5 # | (_) | |_) | __/ | | | (_| | (_| | (_| | |_| \__ \ __/ |
6 # \___/| .__/ \___|_| |_|\__,_|\__,_|\__,_|\__,_|___/\___|_|
12 # "Works only if You suck really, really hard"
17 # Konrad "chori" Szymaszek
18 # mail: konradek26@gmail.com
21 # Skrypt Openadduser sluzy do dodawania nowych uzytkownikow do systemu.
22 # Polecany szczegolnie administratorom serwerow shell.
24 # Skrypt jest w fazie rozwojowej, ale dziala poprawnie i nie uszkadza systemu.
25 # Serdeczne bog zaplac dla : Komornik, mith, robmal, klupek, Staszek, jceel, Partition.
27 [ ! "`id -u`" = "0" ] && echo "Nie masz odpowiednich uprawnien by uruchomic ten skrypt." && exit;
28 pwgen_sc
=$
( which pwgen
> /dev
/null
2>&1 )
29 [ ! -e $pwgen_sc ] && echo "Nie odnaleziono narzedzia pwgen w systemie. Konczenie pracy programu openadduser" && exit;
32 { cp /etc
/shadow
/etc
/shadow-openadduser
; cp /etc
/passwd
/etc
/passwd-openadduser
; cp /etc
/group
/etc
/group-openadduser
; }
34 { echo "Pomyslne! :-)"; }
36 { echo "Nie odnaleziono."; echo "Konczenie pracy programu opeadduser"; echo; exit; }
42 echo "Tworzenie kopii zapasowych plikow shadow | passwd | group...";
43 echo "Kopie zapasowe znajduja sie w katalogu /etc i maja dodana do nazwy koncowke "-openadduser"";
46 echo "-----------------";
47 echo -e '\E[37;44m'"\033[1m Openadduser \033[0m"
48 echo "-----------------";
51 echo -ne "\033[1m[ Login ]: \033[0m"; read user
52 [ -z $user ] && user
=$
(pwgen
-1 -n 8)
53 echo "$user" |
grep "[^[:alnum:]$]" > /dev
/null
2>&1 && echo "Wprowadzono bledna nazwe uzytkownika. Konczenie pracy programu openadduser" && exit;
55 echo -ne "\033[1m[ Komentarz ]: \033[0m"; read pre_comment
56 [ -z "$pre_comment" ] && pre_comment
="Openadduser";
57 comment
=$
( echo $pre_comment |
sed s
/\
/.
/g
)
59 echo -ne "\033[1m[ UID ( kolejny wolny ) ]: \033[0m"; read uid
60 echo "$uid" |
grep '[^[:digit:]$]' > /dev
/null
2>&1 && echo "Wprowadzono bledny uid. Konczenie pracy programu openadduser" && exit;
61 [ -z $uid ] && export liczba
="1" && export temp
=`tempfile` && awk -F: '{ print $3 }' /etc
/passwd |
grep -v '65534' |
sort -g > $temp && last_uid
=$
( sort -k3 -t: -n /etc
/passwd |
awk -F: '{if ($3 >= 1000 && $3 < 8000) print $3; }' |
tail -n1 )
62 [ $last_uid -lt 1000 ] && export uid
=$lastuid
63 [ $last_uid -ge 1000 ] && let uid
=last_uid
+liczba
65 echo -ne "\033[1m[ Grupa ( users ) ]: \033[0m"; read group
66 [ -z $group ] && export group
="users"
67 echo "$group" |
grep '[^[:alnum:]$]' > /dev
/null
2>&1 && echo "Wprowadzono bledna nazwe grupy. Konczenie pracy programu openadduser" && exit;
68 echo -ne "\033[1m[ Shell ( /bin/bash ) ]: \033[0m"; read shell
;
70 while [ ! -e $shell ]; do echo "Wprowadzona powloka nie istnieje." && echo -ne "\033[1m[ Shell ( /bin/bash ) ]: \033[0m" && read shell
; done;
71 [ -z $shell ] && export shell
="/bin/bash"
73 echo -ne "\033[1m[ Home ( /home/$user ) ]: \033[0m"; read home
;
74 [ -z $home ] && export home
="/home/$user"
76 echo -ne "\033[1m[ Dlugosc hasla ( 8 ) ]: \033[0m"; read ile
;
77 [ -z $ile ] && export ile
="8"
78 echo "$ile" |
grep '[^[:digit:]$]' > /dev
/null
2>&1 && echo "Wprowadzono bledna wartosc. Konczenie pracy programu openadduser" && exit;
82 echo "-----------------";
83 echo -e '\E[37;41m'"\033[1m Podsumowanie \033[0m"
84 echo "-----------------";
85 echo -ne "\033[1m[ Login ]....: \033[0m"; echo "$user";
86 echo -ne "\033[1m[ Komentarz ]: \033[0m"; echo "$comment";
87 echo -ne "\033[1m[ UID ]......: \033[0m"; echo "$uid";
88 echo -ne "\033[1m[ Grupa ]....: \033[0m"; echo "$group";
89 echo -ne "\033[1m[ Shell ]....: \033[0m"; echo "$shell";
90 echo -ne "\033[1m[ Home ].....: \033[0m"; echo "$home";
91 echo -ne "\033[1m[ Haslo ]....: \033[0m"; echo "$ile znakow";
92 echo "--------------------------------------"; echo;
93 echo "Nacisnij enter aby kontynuowac, CTRL+C zeby anulowac dodawanie...";
99 echo "Tworzenie uzytkownika $user";
100 useradd
$user -m -d $home -s $shell -u $uid -c $comment
102 cat /etc
/group |
grep -v $user:x
: > /tmp
/group
; mv /tmp
/group
/etc
/group
;
103 [ `grep $group /etc/group` ] && echo "Grupa $group istnieje, tworzenie pominiete" && gpasswd
-a $user $group ||
echo "Grupa $group nie istnieje, zostaje stworzona" && groupadd
$group && gpasswd
-a $user $group
106 echo -e "\033[1m0. Generowanie $ile znakowego hasla dla uzytkownika $user\033[0m";
110 p
=$
(pwgen
-1 -n $ile)
111 echo "$user:$p" >> $file
115 echo -e "\033[1m1. Sprawdzanie istnienia katalogu domowego\033[0m";
116 [ -e $home ] && ok || not_ok
119 echo -e "\033[1m2. Sprawdzanie istnienia wpisu w /etc/passwd\033[0m";
120 [ `grep $user /etc/passwd` ] && ok || not_ok
123 echo -e "\033[1m3. Sprawdzanie istnienia wpisu w /etc/shadow\033[0m";
124 [ `grep $user /etc/shadow` ] && ok || not_ok
127 echo -e "\033[1m4. Sprawdzanie istnienia wpisu w /etc/group\033[0m";
128 [ `grep $group /etc/group` ] && ok || not_ok
131 echo "Haslo uzytkownika $user ustalone podczas pracy programu to: $p";
132 echo "Dodawanie uzytkownika zakonczone powodzeniem.";
133 echo "Konczenie pracy programu opeadduser"; echo;
134 rm /etc
/*-openadduser;