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
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
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
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
Smažte uživatele „admin1“ včetně domovského adresáře a mailové schránky:
# userdel -r admin1
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"