slitaz-dev-tools rev 269
Delete all corrupted account at once, search for user and fixes
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Mon Feb 20 17:50:15 2017 +0100 (2017-02-20) |
parents | 03310414b391 |
children | 93e083231066 |
files | tazu/tazu |
line diff
1.1 --- a/tazu/tazu Mon Feb 20 15:52:09 2017 +0100 1.2 +++ b/tazu/tazu Mon Feb 20 17:50:15 2017 +0100 1.3 @@ -12,9 +12,13 @@ 1.4 check_root 1.5 user="$1" 1.6 1.7 -people="/var/lib/slitaz/people" 1.8 -authfile="/var/lib/slitaz/auth/people" 1.9 -admin="/var/lib/slitaz/auth/admin" 1.10 +people="/home/pankso/tazu/db/people" 1.11 +authfile="/home/pankso/tazu/db/auth/people" 1.12 +admin="/home/pankso/tazu/db/auth/admin" 1.13 + 1.14 +#people="/var/lib/slitaz/people" 1.15 +#authfile="/var/lib/slitaz/auth/people" 1.16 +#admin="/var/lib/slitaz/auth/admin" 1.17 1.18 # Sanity check 1.19 for file in ${authfile} ${admin}; do 1.20 @@ -38,16 +42,17 @@ 1.21 stats SliTaz users DB stats 1.22 list List all users accounts 1.23 last List last active users 1.24 - check Check accounts integrity 1.25 + check Check for corrupted accounts 1.26 1.27 Options: 1.28 --admin Make user admin 1.29 --edit Edit user account.conf 1.30 + --search Search for users using patterns 1.31 --del Delete a user account (or all corrupted) 1.32 1.33 Examples: 1.34 tazu username --admin 1.35 - tazu "user name" --del 1.36 + tazu "user name" --search 1.37 1.38 EOT 1.39 } 1.40 @@ -56,6 +61,10 @@ 1.41 echo "No user account for: $user" 1.42 } 1.43 1.44 +md5crypt() { 1.45 + echo -n "$1" | md5sum | awk '{print $1}' 1.46 +} 1.47 + 1.48 # Delete a user (we may have corrupted accounts: check twice) 1.49 # Usage: deluser "username" 1.50 deluser() { 1.51 @@ -116,16 +125,22 @@ 1.52 do 1.53 if ! [ -f "$people/$user/account.conf" ]; then 1.54 echo -n "$(colorize 31 "$user")" 1.55 - indent 26 "CORRUPTED" && continue 1.56 + indent 20 "CORRUPTED" && continue 1.57 fi 1.58 - . $people/$user/account.conf 1.59 echo -n "$(colorize 34 "$user")" 1.60 - indent 26 "${NAME}" 1.61 + indent 20 "${NAME}" 1.62 done 1.63 + separator 1.64 + echo "$(boldify "Users:") $(ls $people | wc -l)" 1.65 + echo -n "$(boldify "Admin users:") " 1.66 + for u in $(cat $admin); do 1.67 + echo -n "$u " 1.68 + done && newline 1.69 separator && newline ;; 1.70 1.71 check) 1.72 # Check accounts and auth file 1.73 + tmp=/tmp/tazu_corrupted 1.74 newline 1.75 boldify "SliTaz accounts integrity" 1.76 separator 1.77 @@ -133,22 +148,29 @@ 1.78 for user in $(ls $people) 1.79 do 1.80 if ! [ -f "$people/$user/account.conf" ]; then 1.81 - echo -n "$(colorize 30 "$user")" 1.82 + echo -n "$(colorize 31 "$user")" 1.83 indent 26 "Missing account.conf" 1.84 - else # check empty VALUES 1.85 + else # Check empty VALUES 1.86 . "$people/$user/account.conf" 1.87 if [ -z "$NAME" ]; then 1.88 - echo -n "$(colorize 30 "$user")" 1.89 + echo -n "$(colorize 31 "$user")" 1.90 indent 26 "Missing NAME" 1.91 fi 1.92 if [ -z "$MAIL" ]; then 1.93 - echo -n $(colorize 30 "$user") 1.94 + echo -n $(colorize 31 "$user") 1.95 indent 26 "Missing MAIL" 1.96 fi 1.97 + # Invalide mail 1.98 + if ! echo "$MAIL" | grep -q "@"; then 1.99 + echo -n $(colorize 31 "$user") 1.100 + indent 26 "Invalid MAIL: $MAIL" 1.101 + echo "$user" >> ${tmp} 1.102 + fi 1.103 # account.conf but not in authfile ? 1.104 if ! grep -q "^${user}:" ${authfile}; then 1.105 echo -n $(colorize 31 "$user") 1.106 indent 26 "Missing in authfile" 1.107 + echo "$user" >> ${tmp} 1.108 fi 1.109 unset NAME MAIL 1.110 fi 1.111 @@ -159,14 +181,24 @@ 1.112 cat ${authfile} | while read user passwd; 1.113 do 1.114 if ! [ -d "$people/$user" ]; then 1.115 - echo -n $(colorize 30 "$user") 1.116 + echo -n $(colorize 31 "$user") 1.117 indent 26 "Missing in DB" 1.118 - [ "$del" ] && deluser "$user" 1.119 + echo "$user" >> ${tmp} 1.120 fi 1.121 done 1.122 unset IFS 1.123 separator 1.124 - echo "To remove a single corrupted account you can use: tazu 'user' --del" && newline ;; 1.125 + # Handle --del option 1.126 + if [ "$del" ] && [ -f "$tmp" ]; then 1.127 + boldify "Deleting accounts..." 1.128 + cat $tmp | uniq | while read u; 1.129 + do 1.130 + deluser "$u" 1.131 + done && separator 1.132 + else 1.133 + echo "To remove a single corrupted account you can use: tazu 'user' --del" 1.134 + fi 1.135 + newline && rm -f ${tmp} ;; 1.136 1.137 *) 1.138 # Handle general: --options 1.139 @@ -188,6 +220,26 @@ 1.140 no_account 1.141 fi ;; 1.142 1.143 + *\ --search\ *) 1.144 + # Search for a user 1.145 + newline 1.146 + echo -n "Searching for: "; colorize 34 "$1" 1.147 + separator 1.148 + IFS=":" 1.149 + grep -i "$1" ${people}/*/account.conf | while read path patterm; 1.150 + do 1.151 + . ${path} 1.152 + if ! echo "$found" | grep -w -q "$USER"; then 1.153 + found="$found $USER" 1.154 + echo "$(colorize 34 $USER) $(indent 20 $NAME) $(indent 46 $MAIL)" 1.155 + fi 1.156 + done 1.157 + unset IFS && separator && newline ;; 1.158 + 1.159 + *\ --passwd\ *) 1.160 + echo -n "New password for $1: "; read pass 1.161 + echo "TODO" ;; 1.162 + 1.163 *\ --del\ *) 1.164 deluser "$user" ;; 1.165 1.166 @@ -195,7 +247,7 @@ 1.167 # Show user info 1.168 if [ -d "${people}/${user}" ]; then 1.169 newline 1.170 - if grep -q "^$user$" ${admin}; then 1.171 + if fgrep -w -q "$user" ${admin}; then 1.172 echo "$(colorize 35 "Admin user:") $(colorize 34 "$user")" 1.173 else 1.174 echo "$(boldify "User:") $(colorize 34 "$user")"