- #!/bin/sh
- set -e
- . /etc/local/volumes || exit 0
- XDIRREAL="$XDIR/users/root"
- if [ $XCHANGE ]; then
- if [ ! -d "$XDIR" ]; then
- echo "XDIR doesn't exist. Ignoring XCHANGE!"
- XCHANGE=""
- fi
- fi
- if [ $# -gt 0 ]; then
- USERS=$*
- else
- # TODO: scan /etc/passwd and use `getent passwd postgres | awk -F: '{print $6}' | head -1` or similar
- USERS=$(ls /home)
- fi
- mac=".mac"
- pc=".pc"
- xchange=".xchange"
- [ $NETATALK_HOME ] && mac=$NETATALK_HOME
- [ $SAMBA_HOME ] && pc=$SAMBA_HOME
- [ $XCHANGE_HOME ] && xchange=$XCHANGE_HOME
- for USER in $USERS; do
- HOME="/home/$USER"
- test -d $HOME || continue
- test -L $HOME && continue
- # [ $USER != "lost+found" ] || continue
- id -u $USER >/dev/null 2>&1 || continue
- # echo $UID
- # [ $UID gt 1000 ] || continue
- echo -n $USER
- # if [ -x /etc/local/quota.sh ]; then
- # /etc/local/quota.sh $USER
- # fi
- [ $QUOTASOFT ] || QUOTASOFT="0"
- [ $QUOTAHARD ] || QUOTAHARD="0"
- for QUOTAHOME in $QUOTAHOMES; do
- if [ $NEW_QUOTA ]; then
- setquota $USER $QUOTASOFT $QUOTAHARD 0 0 $QUOTAHOME
- else
- setquota $USER $QUOTAHOME $QUOTASOFT $QUOTAHARD 0 0
- fi
- done
- # groupadd $USER
- # usermod -g $USER $USER
- # rm -f $HOME/.profile $HOME/.bashrc $HOME/.bash_history
- # cp /etc/skel/.bash_profile /etc/skel/.bashrc $HOME/
-
- if [ $NETATALK ]; then
- mkdir -p $HOME/$mac
- fi
- if [ $SAMBA ]; then
- mkdir -p $HOME/$pc
- fi
- # if [ $XCHANGE ]; then
- # mkdir -p $HOME/$xchange
- # chown -R $USER: $HOME/$xchange
- # chmod -R u=rw,go=,g+r,ug+X $HOME/$xchange
- # fi
- if [ $XCHANGE ]; then
- [ -d $XDIRREAL/$USER ] || mkdir -p $XDIRREAL/$USER
- chown -R $USER:users $XDIRREAL/$USER
- chmod -R g=r,g+X $XDIRREAL/$USER
- if [ -e "x$HOME/$xchange" ]; then
- rm -rf $HOME/$xchange
- ln -dfs $XDIRREAL/$USER $HOME/$xchange
- fi
- fi
- if [ $PUBLIC ]; then
- mkdir -p $HOME/public_html
- fi
- chown $USER: $HOME
- chmod u=rwX,go=rX $HOME
- # chown -R $USER: $HOME
- # chmod -R u=rw,g=r,o=,ug+X $HOME
- # chmod o+rX $HOME
- if [ -f $HOME/.forward ]; then
- chown $USER: $HOME/.forward
- chmod 0640 $HOME/.forward
- fi
- mkdir -p $HOME/mail
- touch $HOME/mail/mbox
- chown -R $USER: $HOME/mail
- chmod -R u=rw,go=,u+X $HOME/mail
- if [ -f $HOME/.mailboxlist ]; then
- chown $USER: $HOME/.mailboxlist
- chmod 0640 $HOME/.mailboxlist
- fi
- if [ -f /var/spool/mail/$USER ]; then
- chown $USER:mail /var/spool/mail/$USER
- chmod ug=rw,o= /var/spool/mail/$USER
- fi
- if [ -d $HOME/$mac ]; then
- chown -R $USER: $HOME/$mac
- chmod -R u=rw,g=r,o=,ug+X $HOME/$mac
- rm -rf $HOME/$mac/Network\ Trash\ Folder
- mkdir $HOME/$mac/Network\ Trash\ Folder
- chown nobody: $HOME/$mac/Network\ Trash\ Folder
- chmod a= $HOME/$mac/Network\ Trash\ Folder
- fi
-
- # Access to Mac folders
- for macdir in `find $HOME -mindepth 1 -maxdepth 1 -type d | egrep "^$HOME/mac_$USER$"`; do
- chgrp -R $USER $macdir
- chmod -R u=rw,g=rw,o=,ug+X,g+s $macdir
- done
- for macdir in `find $HOME -mindepth 1 -maxdepth 1 -type d | egrep "^$HOME/mac_${USER}_ro$"`; do
- chown -R $USER: $macdir
- chmod -R u=rw,g=r,o=,ug+X $macdir
- done
-
- # Content cleanup of Mac folders
- for macdir in `find $HOME -mindepth 2 -maxdepth 2 -type d | egrep "^$HOME/mac_$USER/"`; do
- rm -rf $macdir/Network\ Trash\ Folder
- mkdir $macdir/Network\ Trash\ Folder
- chown nobody: $macdir/Network\ Trash\ Folder
- chmod a= $macdir/Network\ Trash\ Folder
- done
-
- # Access to ftp folders
- for ftpdir in `find $HOME -mindepth 1 -maxdepth 1 -type d | egrep "^$HOME/ftp_$USER$"`; do
- chgrp -R $USER $ftpdir
- chmod -R ug=rw,o=r,ug+X,g+s $ftpdir
- done
- for ftpdir in `find $HOME -mindepth 1 -maxdepth 1 -type d | egrep "^$HOME/mac_${USER}_ro$"`; do
- chown -R $USER: $ftpdir
- chmod -R u=rw,go=r,ug+X $ftpdir
- done
-
- if [ -d $HOME/$pc ]; then
- chown -R $USER: $HOME/$pc
- chmod -R u=rw,g=r,o=,ug+X $HOME/$pc
- fi
-
- # if test -d $HOME/$xchange; then
- # chown -R $USER:users $HOME/$xchange
- # chmod -R g=r,g+X $HOME/$xchange
- # if test "x$XCHANGEDIR" != "x"; then
- # rm -rf $XCHANGEDIR/$USER
- # ln -dfs $HOME/$xchange $XCHANGEDIR/$USER
- # fi
- # fi
- if [ -d $HOME/public_html ]; then
- chown -R $USER: $HOME/public_html
- chmod -R u+rX,go=r,go+X $HOME/public_html
- if [ $NETATALK ]; then
- if [ -d "$HOME/public_html/Network\ Trash\ Folder" ]; then
- rm -rf $HOME/public_html/Network\ Trash\ Folder
- mkdir $HOME/public_html/Network\ Trash\ Folder
- chown nobody: $HOME/public_html/Network\ Trash\ Folder
- chmod a= $HOME/public_html/Network\ Trash\ Folder
- fi
- fi
- fi
- ## Needs more work (not all websites are equally handled)
- # for dir in $(cd $HOME && find -maxdepth 1 -type d -name 'web_*' -exec sh -c 'cd {} && basename `pwd`' \;); do
- # chown -R $USER: $HOME/$dir
- # chmod -R u+rX,go=r,go+X $HOME/$dir
- # done
- echo "."
- done
- if [ $XCHANGE ]; then
- for USER in $(ls $XDIRREAL); do
- id $USER >/dev/null 2>&1 || rm -rf $XDIRREAL/$USER
- done
- fi
|