Obsah

Správa uživatelských účtů


1. Vytvoření skupiny

Vytvořte skupinu „osadmins“:

# groupadd osadmins


Nastavte členům skupiny plná práva k administraci systému:

# echo "%osadmins ALL=(ALL) ALL" > /etc/sudoers.d/osadmins

2. Vytvoření uživatele

Vytvořte uživatele „admin1“ a přiřaďte ho do existující skupiny „osadmins“:

# useradd -G osadmins admin1


Přidejte uživateli vlastní jméno „Jan Novak“:

# usermod -c "Jan Novak" admin1


Nastavte uživateli heslo:

# passwd admin1


Zajistěte, aby si uživatel změnil heslo při prvním přihlášení:

# chage -d 0 admin1

3. Vytvoření více uživatelů současně

Vytvořte uživatele „admin01–05“ a přiřaďte jim uvedená hesla:

# echo "admin01 kYT97kk16r41cKU
admin02 pWm69Sj98J92Zvm
admin03 pWL74qU72S59sEV
admin04 rNp29Zp81P22XZi
admin05 fiq64WC24a89CvW" | while read usr pswd; do useradd $usr; echo $pswd | passwd --stdin $usr; done


Nastavte uživatelům maximální platnost hesla 90 dní:

# for usr in admin0{1..5}; do chage -M 90 $usr; echo $usr; chage -l $usr | grep Maximum; done

4. Zablokování a odblokování uživatele

Zablokujte/odblokujte či ověřte stav účtu uživatele „admin1“:

# passwd -l admin1
# passwd -u admin1
# passwd -S admin1

nebo

# usermod -L admin1
# usermod -U admin1
# passwd -S admin1

nebo

# chsh -s /bin/false admin1
# chsh -s /bin/bash admin1
# awk -F ":" '/admin1/ {print $7}' /etc/passwd

nebo

# chage -E 0 admin1
# chage -E -1 admin1
# chage -l admin1


Zobrazte či vynuluje počet chybných přihlášení uživatele „admin1“:

# pam_tally2 -u admin1
# pam_tally2 --reset -u admin1

nebo

# faillock --user admin1
# faillock --user admin1 --reset

nebo

# faillog -u admin1
# faillog -u admin1 -r

5. Smazání uživatele

Smažte uživatele „admin1“ včetně domovského adresáře a mailové schránky:

# userdel -r admin1

6. Zabezpečení uživatelských účtů

Zobrazte duplikátní UID:

# duid=$(awk -F ":" '{print $3}' /etc/passwd | sort | uniq -d); [[ -z "$duid" ]] && echo "NONE" || egrep "$duid:[0-9]" /etc/passwd


Zobrazte duplikátní GID:

# dgid=$(awk -F ":" '{print $3}' /etc/group | sort | uniq -d); [[ -z "$dgid" ]] && echo "NONE" || egrep "$dgid" /etc/group


Zobrazte výchozí hodnotu „PASS_MIN_LEN“:

# echo $(sed '/^[^#]*PASS_MIN_LEN/!d' /etc/login.defs | awk '{print $2}' 2> /dev/null); [[ $? -ne 1 ]] && echo "" $(sed '/^[^#]/!d' /etc/pam.d/common-password /etc/security/pam_pwcheck.conf 2> /dev/null | egrep -o "minlen=." | awk -F "=" '{print $2}')


Zobrazte výchozí hodnotu „PASS_MIN_DAYS“:

# echo $(sed '/^[^#]*PASS_MIN_DAYS/!d' /etc/login.defs)


Zobrazte výchozí hodnotu „PASS_MAX_DAYS“:

# echo $(sed '/^[^#]*PASS_MAX_DAYS/!d' /etc/login.defs)


Zobrazte současné hodnoty „PASS_MIN_DAYS“ a „PASS_MAX_DAYS“ pro uživatele s přiřazeným heslem:

# pa=$(awk -F ":" '{if (length($2) > 2) print $1}' /etc/shadow); for usr in "$pa"; do egrep "^$usr" /etc/shadow | awk -F ":" '{printf "%-15s %-15s %-15s\n", $1, $4, $5}'; done


Zobrazte hodnotu „password history“:

# echo $(sed '/^[^#]/!d' /etc/pam.d/system-auth /etc/pam.d/common-password /etc/security/pam_pwcheck.conf 2> /dev/null | egrep -o "remember=.")


Zobrazte hodnotu „loginretries“:

# echo $(lr=$(sed '/^[^#]/!d' /etc/pam.d/system-auth /etc/pam.d/common-auth /etc/pam.d/common-account 2> /dev/null | egrep -o "deny=."); [[ -n "$lr" ]] && echo "$lr" || sed '/^[^#]*LOGIN_RETRIES/!d' /etc/login.defs 2> /dev/null | awk '{print $2}')


Zobrazte uživatele s prázdnými hesly:

# for pwd in $(awk -F ":" '{ print $2 }' /etc/shadow); do if [[ "${#pwd}" -lt 1 ]]; then grep "$pwd" /etc/shadow; fi; done; [[ "${#pwd}" -gt 0 ]] && echo "No empty password assigned."


Zobrazte uživatele s neomezenou platností hesla:

# ne=$(awk -F ":" '{if (length($2) > 2 && ($5 == "" || $5 >= 99999)) print $1}' /etc/shadow); [[ -z "$ne" ]] && echo "NONE" || echo "$ne" | tr " " "\n"


Zobrazte uživatele se zamčenými účty:

# la=$(for user in $(awk -F ":" '{if ($7 ~ /.+(sh|bash|ksh|zsh)$/ && ($3 == 0 || $3 >= 500)) print $1}' /etc/passwd); do passwd -S $user | grep "LK"; done); [[ -z "$la" ]] && echo "NONE" || echo "$la"


Zobrazte metodu šifrování hesel:

# echo $(sed '/^[^#]*\(sha[25]\|md5\)/!d' /etc/pam.d/system-auth /etc/pam.d/common-password 2> /dev/null | egrep -o "sha[1256]{3}|md5") || sed '/^[^#]*ENCRYPT_METHOD/!d' /etc/login.def


Zobrazte uživatele, jejichž hesla jsou uložena v /etc/passwd:

# pp=$(awk -F ":" '{if (length($2) > 2) print $1}' /etc/passwd); [[ -z "$pp" ]] && echo "NONE" || echo "$pp" | tr " " "\n"


Zobrazte výchozí hodnotu „umask“:

# echo $(redhat=$(sed '/^[^#]*umask/!d;q' /etc/bashrc 2> /dev/null | awk '{print $2}'); suse=$(sed '/^[^#]*umask/!d' /etc/profile.local 2> /dev/null | awk '{print $2}'); ubuntu=$(sed '/^[^#]*UMASK/!d' /etc/login.defs 2> /dev/null | awk '{print $2}'); if [[ -n "$redhat" ]]; then echo "$redhat"; elif [[ -n "$suse" ]]; then echo "$suse"; else echo "$ubuntu"; fi)


Zobrazte výchozí „umask“ pro domovské adresáře:

# echo $(sed '/^[^#]*UMASK/!d' /etc/login.defs 2> /dev/null | awk '{print $2}')


Zobrazte domovské adresáře s oprávněními odlišnými od hodnoty „700“:

# homedir=$(awk -F ":" '{if ($7 ~ /.+(sh|bash|ksh|zsh)$/ && ($3 == 0 || $3 >= 500)) print $6}' /etc/passwd | xargs ls -ld 2> /dev/null | egrep -v "^drwx------"); [[ -z "$homedir" ]] && echo "NONE" || echo "$homedir"


Zobrazte domácí adresáře s nestandardním vlastnictvím:

# io=$(for a in $(awk -F ":" '{if ($7 ~ /.+(sh|bash|ksh|zsh)$/ && ($3 == 0 || $3 >= 500)) print $6}' /etc/passwd); do b=$(stat -c %U $a 2> /dev/null); c=$(stat -c %G $a 2> /dev/null); d=$(echo $a | awk -F "/" '{print $NF}'); if [[ "$b" != "$d" || "$c" != $(id -ng "$b") ]]; then ls -ld "$a"; fi; done); [[ -z "$io" ]] && echo "NONE" || echo "$io"