Het komt bij ons vaak voor dat gebruikers (per ongeluk) de verkeerde mappen verwijderen zoals public_html, domains, imap etc.
Waarschijnlijk komt dat probleem jullie wel bekend voor en je bent er té veel tijd aan kwijt.
Nu was het vandaag de zoveelste gebruiker die zijn mappen heeft verwijderd, en ben ik even gaan zoeken naar een "oplossing" hiervoor.
Ik heb een bash scriptje geschreven wat een configuratie bestand aanmaakt voor ProFTPd wat voorkomt dat een user bepaalde mappen kan verwijderen.
De volgende mappen zijn mee genomen:
/home/user/public_html (link)
/home/user/imap
/home/user/Maildir
/home/user/domains
/home/user/domains/domein.nl
/home/user/domains/domein.nl/public_html
/home/user/domains/domein.nl/private_html
/home/user/domains/domein.nl/public_ftp
/home/user/domains/domein.nl/logs
/home/user/domains/domein.nl/.htpasswd
Ook verbergt het de volgende bestanden: bash_logout .bash_profile .bashrc .shadow
Enkel de mappen kunnen niet verwijderd worden, de inhoud van de mappen wel!
Als je een map verwijderd, leegt hij alles wat in die map staat, maar niet de map zelf.
Het enige nadeel is dat klanten alsnog de mappen kunnen verwijderen via de File manager van DirectAdmin.
Installatie:
In de file /etc/proftpd.conf helemaal onderaan plaatsen: Include /etc/proftpd.dir.conf
proftpd.cron.sh moet als cronjob ingesteld worden, ik neem aan dat iedereen wel weet hoe dat moet...
Gebruik op eigen risico etc. Aanpassingen graag delen
Ik hoop dat jullie er wat aan hebben.
Download link: http://bitency.nl/proftpd.cron.sh
Code proftpd.cron.sh:
Code:#/bin/bash # # ProFTPd aanpassing voor DirectAdmin servers. # Klanten kunnen directorys niet meer verwijderen. # # Dennis op de Weegh - Bitency # info@bitency.nl - www.bitency.nl # # Deze file als CronJob instellen # # Plaats in /etc/proftpd.conf de volgende regel helemaal onderaan: Include /etc/proftpd.dir.conf # # Gebruik op eigen risico etc. # Verwijderen oude tmp file rm -rf /etc/proftpd.dir.conf.tmp # Regels Per User for u in `ls /usr/local/directadmin/data/users`; do #echo -e '##### Begin User: '$u' #####' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'> \n HideFiles "(\\.bash_logout|.bash_profile|.bashrc|.shadow)$" \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/domains> \n <Limit RMD XRMD> \n DenyAll \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/domains/*> \n <Limit RMD XRMD> \n AllowUser '${u}' \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/imap> \n <Limit RMD XRMD> \n DenyAll \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/Maildir> \n <Limit RMD XRMD> \n DenyAll \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/public_html> \n <Limit RMD XRMD> \n DenyAll \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/public_html/*> \n <Limit RMD XRMD> \n AllowUser '${u}' \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp # Regels Per domeinnaam for a in `find /usr/local/directadmin/data/users/$u/domains.list`; do d=`echo "$a" | awk -F / '{ print $7 }'` for d in `cat $a`; do echo -e '<Directory /home/'${u}'/domains/'$d'> \n <Limit RMD XRMD> \n DenyAll \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/domains/'$d'/*> \n <Limit RMD XRMD> \n AllowUser '${u}' \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/domains/'$d'/public_html> \n <Limit RMD XRMD> \n DenyAll \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/domains/'$d'/public_html/*> \n <Limit RMD XRMD> \n AllowUser '${u}' \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/domains/'$d'/public_ftp> \n <Limit RMD XRMD> \n DenyAll \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/domains/'$d'/public_ftp/*> \n <Limit RMD XRMD> \n AllowUser '${u}' \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/domains/'$d'/private_html> \n <Limit RMD XRMD> \n DenyAll \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/domains/'$d'/private_html/*> \n <Limit RMD XRMD> \n AllowUser '${u}' \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/domains/'$d'/.htpasswd> \n <Limit RMD XRMD> \n DenyAll \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/domains/'$d'/.htpasswd/*> \n <Limit RMD XRMD> \n AllowUser '${u}' \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/domains/'$d'/logs> \n <Limit RMD XRMD> \n DenyAll \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp echo -e '<Directory /home/'${u}'/domains/'$d'/logs/*> \n <Limit RMD XRMD> \n AllowUser '${u}' \n </Limit> \n </Directory>' >> /etc/proftpd.dir.conf.tmp done done #echo -e '##### Eind User: '$u' #####' >> /etc/proftpd.dir.conf.tmp done # TEMP File moven rm -rf /etc/proftpd.dir.conf mv /etc/proftpd.dir.conf.tmp /etc/proftpd.dir.conf rm -rf /etc/proftpd.dir.conf.tmp # Reload/reread proftpd configs /etc/init.d/proftpd reread

Likes:



Quote