Связаться со мной:
2 заметки с тегом

ftp

Простая установка FTP-сервера на FreeBSD.

На самом деле по умолчанию во freebsd уже установлен ftp-сервер, нам нужно его только сконфигурировать.
Выполняем для добавления запуска ftp в /etc/rc.conf.

# echo 'ftpd_enable="YES"' >> /etc/rc.conf
# echo 'ftpd_flags="-l -l"' >> /etc/rc.conf

Далее смотрим файл /etc/ftpusers, тут указаны пользователи которым запрещён доступ к ftp.

# cat /etc/ftpusers

При необходимости редактируем его.
Затем чтобы разрешить доступ пользователя к каталогу выполним.

# echo 'user /var/www/site.ru' >> /etc/ftpchroot

Где user — существующий на сервере пользователь, а  /var/www/site.ru — его каталог.
Запускаем ftp-сервер

# /etc/rc.d/ftpd start

И пробуем подключится с логином и паролем user.

Р.S.: Если у user в качестве shell используется /sbin/nologin, то подключение не произойдет. FTP-клиент сообщит что-то типа:

access denied

а в логах сервера будет:

ftpd: connection from 10.8.0.1 (10.8.0.1)
ftpd: FTP LOGIN REFUSED FROM 10.8.0.1, user

Проверить какой shell используется для юзера можно командой:

# pw usershow user

В этом случае нам нужно создать /sbin/nologin-ftp и прописать его у пользователя вместо /sbin/nologin. Делается это очень просто:

# echo '/sbin/nologin-ftp' >> /etc/shells
# ln -s /usr/sbin/nologin /sbin/nologin-ftp
# pw usermod user -s /sbin/nologin-ftp

Теперь подключение должно происходить без проблем.

2015   Freebsd   ftp   ftpd   nologin   nologin-ftp

Простейший скрипт для бекапа сайта.

Простейший скрипт для бекапа сайта на ftp по крону. Пример для debian, но скрипт должен работать и на других дистрибутивах.

Всё что нужно для работы скрипта есть в базовой поставке большинства дистрибутивов. Нужно установить только wput. Установим его:

# apt-get install wput

Создаем скрипт:

# nano /usr/bin/backup.sh


Содержание скрипта(исправьте значения переменных в начале скрипта):

#!/bin/bash
sitedirectory=/var/www/site.ru # дирректория виртуального хоста без "/" в конце
mysqluser=muser # пользователь mysql
mysqlpasswd=mpasswd # пароль пользователя mysql
dbname=sitedb # название базы mysql
ftpuser=fuser # пользователь ftp на который складывать бекап
ftppasswd=fpasswd # пароль пользователя ftp
ftphost=10.0.0.1 # ip или домен ftp-сервера на который складывать бекап
/usr/bin/mysqldump -u $mysqluser -p$mysqlpasswd $dbname > $sitedirectory/$dbname.sql
Y=`date "+%Y"` 
M=`date "+%m"` 
D=`date "+%d"`
/bin/tar -czf /tmp/backup-$D-$M-$Y.tar.gz $sitedirectory
/usr/bin/wput --reupload /tmp/backup-$D-$M-$Y.tar.gz ftp://$ftpuser:$ftppasswd@$ftphost/backup/
/bin/rm -f /tmp/backup-$D-$M-$Y.tar.gz
/bin/rm -f $sitedirectory/$dbname.sql

Затем делаем скрипт исполняемым

# chmod +x /usr/bin/backup.sh


И добавляем его в крон:

# crontab -e

0 1 * * * /usr/bin/backup.sh


Архив с бекапом будет отправляться в час ночи, каждый день на указанный ftp.

2014   backup   bash   cron   ftp