001
2021-12-17
jrmu
#!/bin/sh
003
2021-12-17
jrmu
htdocs_chroot_path="/home/www/htdocs"
004
2021-12-17
jrmu
log_path="/var/log/user_manager.log"
005
2021-12-17
jrmu
lock_list="jrmu,fizi,baytuch,vasya,gry,brk,mailman"
007
2021-12-17
jrmu
user_exists="NO"
008
2021-12-17
jrmu
group_exists="NO"
009
2021-12-17
jrmu
target_user_id=""
010
2021-12-17
jrmu
target_group_id=""
011
2021-12-17
jrmu
error_trig="NO"
014
2021-12-17
jrmu
check_exists() {
015
2021-12-17
jrmu
user_exists=NO
016
2021-12-17
jrmu
group_exists=NO
017
2021-12-17
jrmu
if [ ! -z "$(grep "^$1:.*$" /etc/passwd)" ]; then
018
2021-12-17
jrmu
user_exists="YES"
020
2021-12-17
jrmu
if [ ! -z "$(grep "^$1:.*$" /etc/group)" ]; then
021
2021-12-17
jrmu
group_exists="YES"
025
2021-12-17
jrmu
create_user() {
026
2021-12-17
jrmu
groupadd -ov -g $3 $1
027
2021-12-17
jrmu
useradd -v -m -d /home/$1 -g $3 -s /bin/ksh -u $2 $1
028
2021-12-17
jrmu
passwd $1
031
2021-12-17
jrmu
delete_user() {
032
2021-12-17
jrmu
userdel -rv $1
033
2021-12-17
jrmu
groupdel -v $1
036
2021-12-17
jrmu
logger() {
037
2021-12-17
jrmu
if [ ! -f $log_path ]; then
038
2021-12-17
jrmu
touch $log_path
040
2021-12-17
jrmu
mess=[$(date '+%Y-%m-%d %H:%M:%S')]" "$1
041
2021-12-17
jrmu
echo $mess >> $log_path
042
2021-12-17
jrmu
echo $mess
045
2021-12-17
jrmu
get_target_ids() {
046
2021-12-17
jrmu
if [ $user_exists == "YES" ]; then
047
2021-12-17
jrmu
target_user_id=$(grep "^$1" /etc/passwd | sed -r -e 's|^.*:([0-9]+):[0-9]+:.*$|\1|g')
048
2021-12-17
jrmu
target_group_id=$(grep "^$1" /etc/passwd | sed -r -e 's|^.*:[0-9]+:([0-9]+):.*$|\1|g')
050
2021-12-17
jrmu
users_ids=$(cat /etc/passwd | sed -r -e 's|^.*:([0-9]+:[0-9]+):.*$|\1|g')
051
2021-12-17
jrmu
tmp_last_user_id=0
052
2021-12-17
jrmu
for line in $users_ids; do
053
2021-12-17
jrmu
tmp_user_id=${line%:*}
054
2021-12-17
jrmu
tmp_group_id=${line#*:}
055
2021-12-17
jrmu
if [ ${#tmp_user_id} -eq 4 ] && [ ${#tmp_group_id} -eq 4 ]; then
056
2021-12-17
jrmu
if [ $tmp_user_id -eq $tmp_group_id ]; then
057
2021-12-17
jrmu
if [ $tmp_user_id -gt $tmp_last_user_id ]; then
058
2021-12-17
jrmu
tmp_last_user_id=$tmp_user_id
063
2021-12-17
jrmu
target_user_id=$tmp_last_user_id
064
2021-12-17
jrmu
target_group_id=$tmp_last_user_id
066
2021-12-17
jrmu
target_user_id=$(echo $target_user_id | sed 's/[^0-9]//g')
067
2021-12-17
jrmu
target_group_id=$(echo $target_group_id | sed 's/[^0-9]//g')
068
2021-12-17
jrmu
if [ $user_exists == "NO" ] && [ ! -z $target_user_id ] && [ ! -z $target_group_id ]; then
069
2021-12-17
jrmu
target_user_id=$((target_user_id + 1))
070
2021-12-17
jrmu
target_group_id=$((target_group_id + 1))
074
2021-12-17
jrmu
user_tree_config() {
075
2021-12-17
jrmu
if [ -d /home/$1 ]; then
076
2021-12-17
jrmu
chmod 700 /home/$1
077
2021-12-17
jrmu
chmod 700 /home/$1/.ssh
078
2021-12-17
jrmu
chmod 600 /home/$1/{.Xdefaults,.cshrc,.cvsrc,.login,.mailrc,.profile}
079
2021-12-17
jrmu
logger "TREE CONFIG: was configured home dir"
080
2021-12-17
jrmu
if [ -d $htdocs_chroot_path ]; then
081
2021-12-17
jrmu
mkdir $htdocs_chroot_path/$1
082
2021-12-17
jrmu
chown $1:$1 $htdocs_chroot_path/$1
083
2021-12-17
jrmu
ln -s $htdocs_chroot_path/$1 /home/$1/htdocs
084
2021-12-17
jrmu
chown $1:$1 /home/$1/htdocs
085
2021-12-17
jrmu
logger "TREE CONFIG: was configured htdocs dir"
087
2021-12-17
jrmu
logger "TREE CONFIG: htdocs chroot not found!"
090
2021-12-17
jrmu
logger "TREE CONFIG: home folder not found!"
094
2021-12-17
jrmu
user_tree_delete() {
095
2021-12-17
jrmu
if [ -d /home/$1 ]; then
096
2021-12-17
jrmu
if [ -d /home/$1/htdocs ]; then
097
2021-12-17
jrmu
rm -rf /home/$1/htdocs
099
2021-12-17
jrmu
if [ -d $htdocs_chroot_path/$1 ]; then
100
2021-12-17
jrmu
rm -rf $htdocs_chroot_path/$1
102
2021-12-17
jrmu
if [ ! -d /home/$1/htdocs ] && [ ! -d $htdocs_chroot_path/$1 ]; then
103
2021-12-17
jrmu
logger "TREE DELETE: was deteled htdocs dir"
105
2021-12-17
jrmu
error_trig="YES"
106
2021-12-17
jrmu
logger "TREE DELETE: failed to delete folder tree!"
109
2021-12-17
jrmu
error_trig="YES"
110
2021-12-17
jrmu
logger "TREE DELETE: home folder not found!"
114
2021-12-17
jrmu
do_create_user() {
115
2021-12-17
jrmu
logger "WORKER: create a new user..."
116
2021-12-17
jrmu
if [ -z $1 ]; then
117
2021-12-17
jrmu
logger "WORKER: you must provide username!"
119
2021-12-17
jrmu
check_exists $1
120
2021-12-17
jrmu
if [ $user_exists == "YES" ]; then
121
2021-12-17
jrmu
logger "WORKER: user $1 already exists"
123
2021-12-17
jrmu
get_target_ids $1
124
2021-12-17
jrmu
if [ ${#target_user_id} -eq 4 ] && [ ${#target_group_id} -eq 4 ]; then
125
2021-12-17
jrmu
logger "WORKER: process of creating a new user has started"
126
2021-12-17
jrmu
logger "WORKER: -> login - $1"
127
2021-12-17
jrmu
logger "WORKER: -> user_id - $target_user_id"
128
2021-12-17
jrmu
logger "WORKER: -> group_id - $target_group_id"
129
2021-12-17
jrmu
create_user $1 $target_user_id $target_group_id
130
2021-12-17
jrmu
check_exists $1
131
2021-12-17
jrmu
if [ $user_exists == "YES" ]; then
132
2021-12-17
jrmu
logger "WORKER: user created successfully"
133
2021-12-17
jrmu
logger "WORKER: user folder tree configuration..."
134
2021-12-17
jrmu
user_tree_config $1
136
2021-12-17
jrmu
logger "WORKER: user creation failure!"
139
2021-12-17
jrmu
logger "WORKER: error generating identifiers!"
145
2021-12-17
jrmu
do_delete_user() {
146
2021-12-17
jrmu
logger "WORKER: removing a user account..."
147
2021-12-17
jrmu
if [ -z $1 ]; then
148
2021-12-17
jrmu
logger "WORKER: you must provide username!"
150
2021-12-17
jrmu
check_exists $1
151
2021-12-17
jrmu
if [ $user_exists == "NO" ]; then
152
2021-12-17
jrmu
logger "WORKER: user $1 not found!"
154
2021-12-17
jrmu
get_target_ids $1
155
2021-12-17
jrmu
if [ ${#target_user_id} -ne 4 ]; then
156
2021-12-17
jrmu
logger "WORKER: you cannot delete the service user!"
158
2021-12-17
jrmu
deny_del="NO"
159
2021-12-17
jrmu
for tmp_user_name in $(echo $lock_list | tr "," "\n"); do
160
2021-12-17
jrmu
if [ $1 == $tmp_user_name ]; then
161
2021-12-17
jrmu
deny_del="YES"
165
2021-12-17
jrmu
if [ $deny_del == "NO" ]; then
166
2021-12-17
jrmu
logger "WORKER: deleting a user's folder tree..."
167
2021-12-17
jrmu
user_tree_delete $1
168
2021-12-17
jrmu
if [ $error_trig == "NO" ]; then
169
2021-12-17
jrmu
logger "WORKER: deleting a user account..."
170
2021-12-17
jrmu
delete_user $1
171
2021-12-17
jrmu
check_exists $1
172
2021-12-17
jrmu
if [ $user_exists == "NO" ]; then
173
2021-12-17
jrmu
logger "WORKER: user account of $1 deleted"
175
2021-12-17
jrmu
logger "WORKER: failed to delete account!"
179
2021-12-17
jrmu
logger "WORKER: the deletion of this user is blocked!"
186
2021-12-17
jrmu
if [ $(whoami) == "root" ]; then
187
2021-12-17
jrmu
case "$1" in
188
2021-12-17
jrmu
create)
189
2021-12-17
jrmu
do_create_user $2
191
2021-12-17
jrmu
delete)
192
2021-12-17
jrmu
do_delete_user $2
195
2021-12-17
jrmu
logger "SELECTOR: unknown command"
200
2021-12-17
jrmu
echo "must be run as root!"