@@ -24,24 +24,26 @@ rebuild_user_conf() {
2424 /usr/sbin/useradd " $user " -s " $shell " -c " $CONTACT " \
2525 -m -d " $HOMEDIR /$user " > /dev/null 2>&1
2626
27+ # Add a general group for normal users created by Hestia
28+ if [ -z " $( grep " ^hestia-users:" /etc/group) " ]; then
29+ groupadd --system " hestia-users"
30+ fi
31+
32+ # Add membership to hestia-users group to non-admin users
33+ if [ " $user " = " admin" ]; then
34+ setfacl -m " g:admin:r-x" " $HOMEDIR /$user "
35+ else
36+ usermod -a -G " hestia-users" " $user "
37+ setfacl -m " u:$user :r-x" " $HOMEDIR /$user "
38+ fi
39+ setfacl -m " g:hestia-users:---" " $HOMEDIR /$user "
40+
2741 # Update user shell
2842 /usr/bin/chsh -s " $shell " " $user " & > /dev/null
2943
3044 # Update password
31- shadow=$( grep ^$user : /etc/shadow)
32- shdw3=$( echo " $shadow " | cut -f3 -d :)
33- shdw4=$( echo " $shadow " | cut -f4 -d :)
34- shdw5=$( echo " $shadow " | cut -f5 -d :)
35- shdw6=$( echo " $shadow " | cut -f6 -d :)
36- shdw7=$( echo " $shadow " | cut -f7 -d :)
37- shdw8=$( echo " $shadow " | cut -f8 -d :)
38- shdw9=$( echo " $shadow " | cut -f9 -d :)
39- shadow_str=" $user :$MD5 :$shdw3 :$shdw4 :$shdw5 :$shdw6 "
40- shadow_str=" $shadow_str :$shdw7 :$shdw8 :$shdw9 "
41-
4245 chmod u+w /etc/shadow
43- sed -i " /^$user :*/d" /etc/shadow
44- echo " $shadow_str " >> /etc/shadow
46+ sed -i ' s/^$user:[^:]*:/$user:$MD5:/' /etc/shadow
4547 chmod u-w /etc/shadow
4648
4749 # Building directory tree
@@ -169,17 +171,17 @@ rebuild_web_domain_conf() {
169171
170172 # Rebuilding domain directories
171173 if [ -d " $HOMEDIR /$user /web/$domain /document_errors" ]; then
172- rm -rf " $HOMEDIR /$user /web/$domain /document_errors"
174+ $BIN /v-delete-fs-directory " $user " " $HOMEDIR /$user /web/$domain /document_errors"
173175 fi
174176
175- mkdir -p $ HOMEDIR /$user /web/$domain \
176- $HOMEDIR /$user /web/$domain /public_html \
177- $HOMEDIR /$user /web/$domain /public_shtml \
178- $HOMEDIR /$user /web/$domain /document_errors \
179- $HOMEDIR /$user /web/$domain /cgi-bin \
180- $HOMEDIR /$user /web/$domain /private \
181- $HOMEDIR /$user /web/$domain /stats \
182- $HOMEDIR /$user /web/$domain /logs
177+ $BIN /v-add-fs-directory " $user " " $ HOMEDIR /$user /web/$domain "
178+ $BIN /v-add-fs-directory " $user " " $HOMEDIR /$user /web/$domain /public_html"
179+ $BIN /v-add-fs-directory " $user " " $HOMEDIR /$user /web/$domain /public_shtml"
180+ $BIN /v-add-fs-directory " $user " " $HOMEDIR /$user /web/$domain /document_errors"
181+ $BIN /v-add-fs-directory " $user " " $HOMEDIR /$user /web/$domain /cgi-bin"
182+ $BIN /v-add-fs-directory " $user " " $HOMEDIR /$user /web/$domain /private"
183+ $BIN /v-add-fs-directory " $user " " $HOMEDIR /$user /web/$domain /stats"
184+ $BIN /v-add-fs-directory " $user " " $HOMEDIR /$user /web/$domain /logs"
183185
184186 # Creating domain logs
185187 if [ ! -e " /var/log/$WEB_SYSTEM /domains" ]; then
@@ -198,22 +200,23 @@ rebuild_web_domain_conf() {
198200
199201 # Propagating html skeleton
200202 if [ -d " $WEBTPL /skel/document_errors/" ]; then
201- cp -r $WEBTPL /skel/document_errors/ $HOMEDIR /$user /web/$domain /
203+ sudo -u $user -- cp -r " $WEBTPL /skel/document_errors/" " $HOMEDIR /$user /web/$domain /"
202204 fi
203205
204206 # Set folder permissions
205- chmod 551 $HOMEDIR /$user /web/$domain \
206- $HOMEDIR /$user /web/$domain /stats \
207- $HOMEDIR /$user /web/$domain /logs
208- chmod 751 $HOMEDIR /$user /web/$domain /private \
209- $HOMEDIR /$user /web/$domain /cgi-bin \
210- $HOMEDIR /$user /web/$domain /public_html \
211- $HOMEDIR /$user /web/$domain /public_shtml \
212- $HOMEDIR /$user /web/$domain /document_errors
207+ chmod 551 $HOMEDIR /$user /web/$domain \
208+ $HOMEDIR /$user /web/$domain /stats \
209+ $HOMEDIR /$user /web/$domain /logs
210+ chmod 751 $HOMEDIR /$user /web/$domain /private \
211+ $HOMEDIR /$user /web/$domain /cgi-bin \
212+ $HOMEDIR /$user /web/$domain /public_html \
213+ $HOMEDIR /$user /web/$domain /public_shtml \
214+ $HOMEDIR /$user /web/$domain /document_errors
213215 chmod 640 /var/log/$WEB_SYSTEM /domains/$domain .*
214216
215217 # Set ownership
216- chown $user :$user $HOMEDIR /$user /web/$domain \
218+ chown $user :$user \
219+ $HOMEDIR /$user /web/$domain \
217220 $HOMEDIR /$user /web/$domain /private \
218221 $HOMEDIR /$user /web/$domain /cgi-bin \
219222 $HOMEDIR /$user /web/$domain /public_html \
@@ -285,16 +288,15 @@ rebuild_web_domain_conf() {
285288 if [ ! -z " $STATS_USER " ]; then
286289 stats_dir=" $HOMEDIR /$user /web/$domain /stats"
287290 if [ " $WEB_SYSTEM " = ' nginx' ]; then
288- echo " auth_basic \" Web Statistics\" ;" > $stats_dir /auth.conf
289- echo " auth_basic_user_file $stats_dir /.htpasswd;" >> \
290- $stats_dir /auth.conf
291+ echo " auth_basic \" Web Statistics\" ;" | sudo -u $user -- tee $stats_dir /auth.conf
292+ echo " auth_basic_user_file $stats_dir /.htpasswd;" | sudo -u $user -- tee -a $stats_dir /auth.conf
291293 else
292- echo " AuthUserFile $stats_dir /.htpasswd" > $stats_dir /.htaccess
293- echo " AuthName \" Web Statistics\" " >> $stats_dir /.htaccess
294- echo " AuthType Basic" >> $stats_dir /.htaccess
295- echo " Require valid-user" >> $stats_dir /.htaccess
294+ echo " AuthUserFile $stats_dir /.htpasswd" | sudo -u $user -- tee $stats_dir /.htaccess
295+ echo " AuthName \" Web Statistics\" " | sudo -u $user -- tee -a $stats_dir /.htaccess
296+ echo " AuthType Basic" | sudo -u $user -- tee -a $stats_dir /.htaccess
297+ echo " Require valid-user" | sudo -u $user -- tee -a $stats_dir /.htaccess
296298 fi
297- echo " $STATS_USER :$STATS_CRYPT " > $stats_dir /.htpasswd
299+ echo " $STATS_USER :$STATS_CRYPT " | sudo -u $user -- tee $stats_dir /.htpasswd
298300 fi
299301 fi
300302
@@ -316,26 +318,13 @@ rebuild_web_domain_conf() {
316318 ftp_md5=$( echo $FTP_MD5 | tr ' :' ' \n' | grep -n ' ' | \
317319 grep " ^$position :" | cut -f 2 -d :)
318320
319- /usr/sbin/useradd $ftp_user \
320- -s $shell \
321- -o -u $( id -u $user ) \
322- -g $( id -u $user ) \
323- -M -d " $HOMEDIR /$user /web/$domain ${ftp_path} " > /dev/null 2>&1
321+ # rebuild S/FTP users
322+ $BIN /v-delete-web-domain-ftp " $user " " $domain " " $ftp_user "
323+ $BIN /v-add-web-domain-ftp " $user " " $domain " " ${ftp_user#* _} " " !xplaceholder$FTP_MD5 " " $ftp_path "
324324
325325 # Updating ftp user password
326- shadow=$( grep " ^$ftp_user :" /etc/shadow)
327- shdw3=$( echo " $shadow " | cut -f3 -d :)
328- shdw4=$( echo " $shadow " | cut -f4 -d :)
329- shdw5=$( echo " $shadow " | cut -f5 -d :)
330- shdw6=$( echo " $shadow " | cut -f6 -d :)
331- shdw7=$( echo " $shadow " | cut -f7 -d :)
332- shdw8=$( echo " $shadow " | cut -f8 -d :)
333- shdw9=$( echo " $shadow " | cut -f9 -d :)
334- shadow_str=" $ftp_user :$ftp_md5 :$shdw3 :$shdw4 :$shdw5 :$shdw6 "
335- shadow_str=" $shadow_str :$shdw7 :$shdw8 :$shdw9 "
336326 chmod u+w /etc/shadow
337- sed -i " /^$ftp_user :*/d" /etc/shadow
338- echo " $shadow_str " >> /etc/shadow
327+ sed -i ' s/^$ftp_user:[^:]*:/$ftp_user:$ftp_md5:/' /etc/shadow
339328 chmod u-w /etc/shadow
340329 fi
341330 done
@@ -500,7 +489,7 @@ rebuild_mail_domain_conf() {
500489
501490 # Adding mail directiry
502491 if [ ! -e $HOMEDIR /$user /mail/$domain_idn ]; then
503- mkdir $ HOMEDIR /$user /mail/$domain_idn
492+ $BIN /v-add-fs-directory " $user " " $ HOMEDIR /$user /mail/$domain_idn "
504493 fi
505494
506495 # Adding catchall email
0 commit comments