Portál AbcLinuxu, 10. května 2025 05:44
adduser
tohle dela za tebe...
#!/bin/bash
while true; do
echo -n "Enter login name: "
read LOGNAME
LEN=`echo "$LOGNAME" | wc -c`
if [ "$LEN" -gt 8 ] ; then
echo Name too long
continue
fi
if echo "$LOGNAME" | grep [^a-z]; then
echo Only small letters allowed
continue
fi
break
done
_UID=`tail -1 /etc/passwd |awk -F : '{print $3 + 1}'`
echo -n "Enter UID: "
read _UIDOK
if [ "$_UIDOK" = "" ] ; then
_UIDOK=$_UID
elif [ "`grep $_UIDOK /etc/passwd | awk -F : '{print $3}'`" = "" ] ; then
_UIDOK=$_UID
else
echo "ERROR: UID in use"
exit 1
fi
_GID=`grep users /etc/group |awk -F : '{print $3}'`
echo -n "Enter GID: "
read _GIDOK
if [ "$_GIDOK" = "" ]; then
_GIDOK=$_GID
elif [ "`grep $_GIDOK /etc/group`" = "" ] ; then
echo "ERROR: Group $_GIDOK does not exist"
exit 1
fi
echo -n "Enter home directory: [/home/$LOGNAME] "
read _HOME
if [ "$_HOME" = "" ]; then
_HOME="/home/$LOGNAME"
fi
echo -n "Enter login shell: [/bin/bash] "
read _SHELL
if [ "$_SHELL" = "" ]; then
_SHELL=/bin/bash
fi
if [ ! \( -x $_SHELL \) ] ; then
echo Shell does not exist or is not executable
exit 1
fi
echo -n "Enter real name: "
read _REALNAME
echo
echo This is the information you entered:
echo
echo User ID is: $_UIDOK
echo Group ID is: $_GIDOK
echo Home is: $_HOME
echo Login shell is: $_SHELL
echo Real name is: $_REALNAME
echo
echo /etc/passwd entry will be:
echo $LOGNAME:???:$_UIDOK:$_GIDOK:$_REALNAME:$_HOME:$_SHELL
echo
echo -n "Is this correct? (y/n) "
read _verify
if [ "$_verify" = n ]; then
echo Exiting ...
exit 1
else
echo "Adding user $LOGNAME to system"
# useradd -u $_UIDOK -g $_GIDOK -d $_HOME -s $_SHELL -c "$_REALNAME" $LOGNAME
# cp -r /etc/skel $_HOME
# chown -R $_UIDOK:$_GIDOK $_HOME
# passwd $LOGNAME
fi
userid.sh:
#!/bin/bash
if [ $# != 1 ] ; then
echo Usage: `basename $0` username
exit 1
fi
_UID=`grep -F -w $1 /etc/passwd | awk -F : '{print $3}'`
if [ "$_UID" = "" ] ; then
echo Error: User $1 not found
else
echo User $1 has UID=$_UID
fi
#!/bin/bash # pridani noveho uzivatele (mensi uzivatelska nadstavba nad prikaz "useradd") echo echo " Pridani noveho uzivatele do systemu (pouze Enter -> predcasne ukonceni)" echo # jmeno while [ "$xJmeno" == "" ]; do echo -n " Zadej jmeno pro noveho uzivatele : "; read xJmeno # nic nezadano -> ukonceni skriptu [ "$xJmeno" == "" ] && { echo " ! Predcasne koncim skript ..."; exit; } # kontrola, zda zadany uzivatel jiz existuje (hleda prvni retezec od zacatku radku do prvni dvojtecky) if grep "^$xJmeno:" /etc/passwd > /dev/null; then echo " Uzivatel \"$xJmeno\" jiz existuje, zadej jine jmeno!" xJmeno="" fi done # Nasledujici akci - zjisteni a urceni posledniho pouziteho UID zvyseneho o 1 # dela sam prikaz useradd, zde to ale udelame rucne # Predpokladame, ze na poslednim radku je posledni platny uzivatel : # z posledniho radku /etc/passwd nacteme UID (3 polozka mezi : ) a zvysime ji o 1 xUID="$[$(sed -n "$ s#^[^:]*:[^:]*:\([0-9]\+\):.*#\1#p" /etc/passwd) + 1]" # GID while [ "$xGID" == "" ]; do # najde doporucene GID pro skupinu users x="$(sed -n "/^users:/ s#^[^:]*:[^:]*:\([0-9]\+\):.*#(doporucuji: \1 pro skupinu users) #p" /etc/group)" echo -n " Zadej GID $x: "; read xGID # nic nezadano -> ukonceni skriptu [ "$xGID" == "" ] && { echo " ! Predcasne koncim skript ..."; exit; } # kontrola, zda skupina existuje (hleda 3 retezec od zacatku radku, polozky jsou oddelene : ) if ! grep "^[^:]*:[^:]*:$xGID:" /etc/group > /dev/null; then echo " Skupina s GID=$xGID neexistuje, musis zadat nejakou platnou:" sed -n "s#^\([^:]*\):[^:]*:\([0-9]\+\):.*#GID=\2 \t \1#p" /etc/group # vypise seznam skupin xGID="" fi done # login shell while [ "$xShell" == "" ]; do echo -n " Zadej login shell (1=/bin/bash) : "; read xShell # nic nezadano -> ukonceni skriptu [ "$xShell" == "" ] && { echo " ! Predcasne koncim skript ..."; exit; } # preddefinovany shell [ "$xShell" == "1" ] && xShell="/bin/bash" # kontrola na existenci a spustitelnost souboru (shellu) [ -x "$xShell" ] || { echo " Zadany shell \"$xShell\" neni platny (neexistuje, nebo neni spustitelny) !"; xShell=""; } done echo echo " Shrnuti:" echo " Jmeno : $xJmeno" echo " UID : $xUID" echo " GID : $xGID" echo " Login shell : $xShell" echo echo -n " Pridat tohoto noveho uzivatele do systemu ? Ano=a : "; read x echo if [ "$x" == "a" ]; then # pridani uzivatele; pokud se zdari, jeste nastavit heslo if useradd -u $xUID -g $xGID -G $xGID -m -s $xShell $xJmeno; then # prikaz useradd zalozi noveho uzivatele, nastavi mu UID, GID (a prida ho do teto skupiny), nastavi # mu shell, vytvori HOME adresar, nakopipruje do nej vychozi soubory a nastavi vlastnika, # takze nasledujici prikazy jsou jiz zbytecne (viz. man useradd): # cp -r /etc/skel "/home/$xJmeno" # nakopirovani zakladnich souboru do dom.adresare # chown -R $xUID:$xGID "/home/$xJmeno" # nastavi vlastnika echo " Uzivatel \"$xJmeno\" pridan do systemu: useradd -u $xUID -g $xGID -G $xGID -m -s $xShell $xJmeno" echo " Nyni je nutne mu jeste nastavit heslo:" passwd $xJmeno fi else echo " Koncim ... Uzivatel \"$xJmeno\" nepridan do systemu !" fiMějte se fajn, Ltb
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.