#!/bin/bash # Semestralni prace z predmetu 36UNX = Operacni system UNIX # Michal Trs # Zadani c.8 # userdel # Error codes # 0 - success # 1 - can't update password file # 2 - bad command syntax # 6 - specified user doesn't exist # 8 - user currently logged in # 10 - can't update group file # 12 - can't remove home directory # nastaveni promenych del=0; #ROOT="/cygdrive/c/skola/6.semestr/36unx/semestralka"; # nacist parametr while getopts r volba do case $volba in r) del=1;; \?) exit 2;; esac done shift `expr $OPTIND - 1` # ulozit username + kontrola zda existuje username=$1; if ! grep ^$username: "$ROOT/etc/passwd" 1>/dev/null; then echo "specified user doesn't exist"; exit 6; fi # kontrola zda neni user zalogovan.... if who | grep "^${username}" >/dev/null; then echo "user currently logged in"; exit 8; fi # pokud je zadan parametr -r smazat home if [ $del -ne 0 ]; then if ! rm -r `grep ^$username: "$ROOT/etc/passwd" | cut -d: -f6` 2>/dev/null; then echo "can't remove home directory"; exit 12; fi fi # najit a odebrat ze souboru /etc/passwd a /etc/shadow uzivatele if cp "$ROOT/etc/passwd" "$ROOT/etc/passwd-" 2>/dev/null; then sed /^"$username:"/d "$ROOT/etc/passwd-" > "$ROOT/etc/passwd"; else echo "can't update password file"; exit 1; fi if cp "$ROOT/etc/shadow" "$ROOT/etc/shadow-" 2>/dev/null; then sed /^"$username:"/d "$ROOT/etc/shadow-" > "$ROOT/etc/shadow"; fi if cp "$ROOT/etc/group" "$ROOT/etc/group-" 2>/dev/null; then sed -e "s/:${username}$/:/" \ -e "s/:${username},/:/" \ -e "s/,${username}$//" \ -e "s/,${username},/,/g" "$ROOT/etc/group-" > "$ROOT/etc/group"; else echo "can't update group file"; exit 10; fi