slitaz-dev-tools view tazu/tazu @ rev 259

tazu: add functions to check/clean users DB
author Christophe Lincoln <pankso@slitaz.org>
date Mon Dec 12 18:53:30 2016 +0100 (2016-12-12)
parents 14b42c2f5069
children db2f2190018f
line source
1 #!/bin/sh
2 #
3 # TazU - SliTaz Users account utility
4 #
5 # This tool is used to mange SliTaz users accounts on bugs.slitaz.org
6 # and scn.slitaz.org. It can also be used to admin TinyCM users DB.
7 #
8 # Copyright 2016 (C) SliTaz GNU/Linux - BSD License
9 # Author: Christophe Lincoln <pankso@slitaz.org>
10 #
11 . /lib/libtaz.sh
12 check_root
14 authfile="/var/lib/slitaz/auth/people"
15 people="/var/lib/slitaz/people"
16 user="$1"
18 #
19 # Functions
20 #
22 usage() {
23 cat << EOT
25 Usage: $(basename $0) [user|command] [--option]
27 Commands:
28 count Count all users
29 list List all users
30 check Check accounts integrity
32 Options:
33 --admin Make user admin
34 --del Delete a user
35 --clean check: clean users accounts
37 EOT
38 }
40 no_account() {
41 echo "No user account for: $user"
42 }
44 #
45 # Commands
46 #
48 case "$1" in
49 "") usage ;;
50 count)
51 echo -n "Users: "
52 colorize 34 "$(ls $people | wc -l)" ;;
53 list)
54 # List all users
55 newline
56 boldify "SliTaz users list"
57 separator
58 for user in $(ls $people)
59 do
60 if ! [ -f "$people/$user/account.conf" ]; then
61 echo -n "$(colorize 31 "$user")"
62 echo -e "\\033[16GCORRUPTED" && continue
63 fi
64 . $people/$user/account.conf
65 echo -n "$(colorize 34 "$user")"
66 echo -e "\\033[16G${NAME}"
67 done
68 separator && newline ;;
69 check)
70 # Check accounts and auth file
71 newline
72 boldify "SliTaz accounts integrity"
73 separator
74 echo "$(colorize 33 "Checking account.conf files...")"
75 for user in $(ls $people)
76 do
77 if ! [ -f "$people/$user/account.conf" ]; then
78 echo -n "$(colorize 30 "$user")"
79 echo -e "\\033[16GMissing account.conf"
80 if [ "$clean" ]; then # --clean
81 rm -rf "${people}/${user}"
82 sed -i "/^${user}:/"d $authfile
83 fi
84 #else -- check empty VALUES
85 fi
86 done
87 separator && newline ;;
88 *)
89 # Handle general: --options
90 case " $@ " in
91 *\ --admin\ *)
92 # Admin user
93 if fgrep -q ADMIN_USER= ${people}/${user}/account.conf; then
94 echo -n "User is already admin: " && colorize 34 "$user"
95 else
96 echo -n "Adding $user to admin users..."
97 echo 'ADMIN_USER="yes"' >> ${people}/${user}/account.conf
98 status
99 fi ;;
101 *\ --del\ *)
102 # Delete a user
103 if [ -d "${people}/${user}" ]; then
104 echo -n "Deleting user: $(colorize 34 "$user")"
105 rm -rf "${people}/${user}"
106 sed -i "/^${user}:/"d $authfile
107 status
108 else
109 no_account
110 fi ;;
112 *)
113 # Show user info
114 if [ -d "${people}/${user}" ]; then
115 newline
116 echo "$(boldify "User:") $(colorize 34 "$user")"
117 separator
118 cat $people/$user/account.conf | grep "="
119 separator && newline
120 else
121 no_account
122 echo ${people}/${user}
123 fi ;;
124 esac ;;
125 esac
127 exit 0