Установка и настройка FTP сервера Linux. Установка и настройка FTP-сервера в Linux Установка FTP-сервера в Ubuntu

Время от времени у каждого системного администратора возникает потребность в FTP-сервере, чаще всего это связано с необходимостью обеспечить обмен информацией в автоматическом режиме между приложениями, например, при автообмене распределенной информационной базы 1С, или для доступа к файлам на веб-сервере. Сегодня мы расскажем, как меньше чем за полчаса создать такой сервер на платформе Ubuntu.

Но сначала немного теории. Протокол FTP (File Transfer Protocol) предназначен, как следует из названия, для передачи файлов и появился в 1971 году, но несмотря на свой преклонный возраст продолжает широко использоваться до сих пор. Хотя сегодня его использование носит чаще технический характер, для доступа конечных пользователей к данным обычно используют браузер и протокол HTTP. К достоинствам FTP можно отнести возможность докачки файла при обрыве связи и возможность одинаково легко как считывать файлы, так и записывать их. Но есть и недостатки, самый серьезный - низкая безопасность, поэтому этому вопросу следует уделить самое пристальное внимание.

FTP, как и PPTP, использует разные соединения для передачи команд и передачи данных. При инициации соединения клиент передает управляющие команды на порт 21 сервера, который в свою очередь устанавливает исходящее соединение для передачи данных на 20 порту, порт со стороны клиента определяется в результате согласования. Однако при нахождении клиента за NAT соединение подобным образом установить не удастся, поэтому был разработан дополнительный режим FTP passive mode (пассивный режим), когда соединение для передачи данных устанавливает не сервер, а клиент, однако с параметрами, указанными сервером. Эти моменты следует учитывать при форвардинге FTP и при настройке сетевого фильтра.

Для нашего сервера мы будем использовать vsftpd - простой, быстрый и безопасный FTP сервер. Так как он будет обслуживать как внешнюю, так и внутреннюю сети, то имеет смысл добавить эту роль нашему . Установка сервера предельно проста:

Apt-get install vsftpd

Настройка сервера производится через конфигурационный файл /etc/vsftpd.conf он имеет простую структуру, хорошо откомментирован и позволяет настроить сервер без какой-либо инструкции при наличии минимальных знаний. Рассмотрим его основные параметры.

Сервер может быть запущен постоянно, как служба или стартовать при необходимости, нам больше подходит первый вариант:

Listen=YES

Данная опция имеет взаимоисключающую запись, которую следует привести к виду:

Listen_ipv6=NO

Разрешим вход только локальным пользователям:

Anonymous_enable=NO
local_enable=YES

Разрешим пользователям записывать файлы и укажем серверу автоматически выставлять нужные права (755 на папки и 644 на файлы):

Write_enable=YES
local_umask=022

Если требуется установить иной набор прав: 775 и 664, то umask должен быть равен 002.

По умолчанию сервер использует время GMT, чтобы файлам устанавливалось время вашего часового пояса, используйте опцию:

Use_localtime=YES

Включим лог загружаемых и скачиваемых файлов:

Xferlog_enable=YES

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

Connect_from_port_20=YES

Следующие опции задают место и формат хранения логов:

Xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES

Зададим таймауты сессии:

Idle_session_timeout=600
data_connection_timeout=120

Также в целях безопасности изолируем пользователя в его домашнем каталоге и сразу разрешим запись в его корень:

Chroot_local_user=YES
allow_writeable_chroot=YES

Для коррекной работы с текстовыми данными можно включить поддержку ASCII, это позволит при передаче текстового файла с Windows системы в UNIX (Linux) корректно заменить символы переноса строки с CR+LF на LF для корректного отображение содержимого и выполнить обратное преобразование при передаче его назад.

Ascii_upload_enable=YES
ascii_download_enable=YES

Можно включить только одну опцию, для закачки или скачивания. Обратите внимание, что при передаче бинарного файла в режиме ASCII последний может быть поврежден.

Достаточно интересная опция:

Ls_recurse_enable=YES

Она позволяет рекурсивный просмотр каталогов, с одной стороны это удобно, с другой способно вызвать большую нагрузку на сервер, если, например, получить листинг директории, содержащей большое количество файлов и каталогов.

Все остальные опции оставляем по умолчанию, хотя можете отредактировать приветствие сервера, написав там все что вам нравится:

Ftpd_banner=Welcome to Roga i Kopyta LLC FTP

В конце конфигурационного файла зададим настройки для пассивного режима, рекомендуется явно задать порты, чтобы была возможность указать их при форвардинге, если сервер стоит за NAT или в правилах брандмауера:

Pasv_enable=YES
pasv_min_port=62000
pasv_max_port=62999

Перезапускаем сервер (это нужно делать всякий раз после внесения изменений в конфигурацию):

Service vsftpd restart

и пробуем подключиться любым FTP-клиентом используя учетные данные существующего пользователя. Мы должны попасть в его домашнюю директорию и быть изолированы в ней.

В случае появления ошибки, связанной с некорректной работой vsftpd и системы безопасности seccomp:

500 OOPS: prctl PR_SET_SECCOMP failed

добавьте в файл недокументированную опцию:

Seccomp_sandbox=NO

Однако помните, что FTP - небезопасный протокол, поэтому пускать на сервер любого локального пользователя, как это сделано сейчас, не самый лучший вариант. Чтобы избежать такой ситуации vsftpd имеет встроенный механизм контроля пользователей. Добавим в конфигурационный файл опцию:

Userlist_enable=YES

и создадим файл списка пользователей:

Touch /etc/vsftpd.user_list

По умолчанию vsftpd запрещает доступ к серверу пользователям, указанным в данном списке еще до ввода пароля, т.е. реализует принцип разрешено всем, кому не запрещено. Но гораздо лучше будет реализовать иной подход: запрещено всем, кому не разрешено. Т.е. разрешать доступ только указанным пользователям. Для этого добавим опцию:

Userlist_deny=NO

Теперь доступ к FTP-серверу будут иметь только явно указанные пользователи, их следует указывать в vsftpd.user_list по одному в строку, например:

Ivanov
petrov

Если не указано иное, то подключившись по FTP пользователи попадают в свой домашний каталог. Это не всегда удобно, часто нужно перенаправлять их в иную директорию. Если это общая для всех папка, скажем /var/ftp, то можно задать опцию:

Local_root=/var/ftp

Которая перенаправит всех пользователей в указанный каталог и изолирует их там.

Это самая простая ситуация, реальные задачи обычно сложнее, допустим нам надо установить пользователю Иванову в качестве корневой директории /var/www/example1.com , а Петрову /var/www/example2.com , чтобы каждый из них работал со своей папкой. Для этих целей можно использовать еще одну возможность vsftpd - пользовательские настройки, которые перекрывают настройки основного конфигурационного файла.

Для этого добавим опцию:

User_config_dir=/etc/vsftpd_user_conf

Затем создадим саму директорию

Mkdir /etc/vsftpd_user_conf

Чтобы задать пользователю собственные настройки в данной директории следует создать файл с именем пользовтаеля и добавить в него необходимые опции. Изменения применяются без перезапуска FTP-сервера при следующем подключении клиента.

Создадим файл с настройками для Иванова:

Tocuh /etc/vsftpd_user_conf/ivanov

и внесем в него опцию:

Local_root=/var/www/example1.com

При следующем подключении корневая директория пользователя изменится на указанную. Также в этом файле мы можем задавать любые персональные опции, например, другой umask или права на доступ к файлам. Однако мы не можем использовать здесь глобальные настройки: опции подключения, логгирования, аутентификации, они будут просто игнорироваться.

Если вам нужно скрыть реальных владельцев файлов и папок, то можно использовать опцию:

Hide_ids=YES

В этом случае вместо реальных владельцев и групп будет указано ftp:ftp, это может быть полезным в случае публичного сервера или наличия в списке пользователей посторонних лиц, которым вы не хотите раскрывать реальные имена пользователей вашей системы.

Как видим, мы действительно создали рабочий FTP-сервер менее чем за полчаса.

F TP (протокол передачи файлов) – это стандартный сетевой протокол, используемый для передачи файлов в удаленную сеть и из нее. Для более безопасной и быстрой передачи данных используйте SCP.

Для Linux доступно множество FTP-серверов с открытым исходным кодом. Самыми популярными и широко используемыми являются PureFTPd, ProFTPD и vsftpd. В этой статье мы будем устанавливать vsftpd. Это стабильный, безопасный и быстрый FTP-сервер. Мы также покажем вам, как настроить vsftpd для ограничения доступа пользователей к их домашнему каталогу и шифрования всей передачи с помощью SSL/TLS.

Хотя эта статья написана для Ubuntu 18.04, такие же инструкции применяются к Ubuntu 16.04 и любому дистрибутиву на базе Debian, включая Debian, Linux Mint и Elementary OS.

Предпосылки

Установка vsftpd на Ubuntu 18.04

Пакет vsftpd доступен в репозиториях . Чтобы установить его, просто выполните следующие команды:

Sudo apt update sudo apt install vsftpd

Служба vsftpd автоматически запустится после завершения процесса установки. Проверьте его, распечатав статус службы:

Sudo systemctl status vsftpd

Результат будет выглядеть примерно так, показывая, что служба vsftpd активна и работает:

* vsftpd.service - vsftpd FTP server Loaded: loaded (/lib/systemd/system/vsftpd.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2018-10-15 03:38:52 PDT; 10min ago Main PID: 2616 (vsftpd) Tasks: 1 (limit: 2319) CGroup: /system.slice/vsftpd.service `-2616 /usr/sbin/vsftpd /etc/vsftpd.conf

Настройка vsftpd

Сервер vsftpd можно настроить, отредактировав файл /etc/vsftpd.conf. Большинство настроек задокументированы внутри файла конфигурации. Для всех доступных вариантов посетите официальную страницу vsftpd.

В следующих разделах мы рассмотрим некоторые важные настройки, необходимые для настройки безопасной установки vsftpd.

Начните с открытия файла конфигурации vsftpd:

Sudo nano /etc/vsftpd.conf

1. Доступ к FTP

Мы разрешаем доступ к FTP-серверу только локальным пользователям, находим директивы anonymous_enable и local_enable и проверяем соответствие вашей конфигурации следующим строкам:

/etc/vsftpd.conf

Anonymous_enable=NO local_enable=YES

2. Включение загрузки

Раскомментируйте настройку write_enable, чтобы разрешить изменения в файловой системе, такие как загрузка и удаление файлов.

/etc/vsftpd.conf

Write_enable=YES

3. Chroot

Чтобы пользователи FTP не могли получить доступ к каким-либо файлам вне своих домашних каталогов, раскомментируйте настройку chroot.

/etc/vsftpd.conf

Chroot_local_user=YES

По умолчанию для предотвращения уязвимости безопасности, когда chroot включен, vsftp откажется загружать файлы, если каталог, в котором пользователи заблокированы, доступен для записи.

  • Метод 1. – Рекомендуемый способ разрешить загрузку – включить chroot и настроить FTP-каталоги. В этой статье мы создадим каталог ftp внутри home пользователя, который будет служить chroot и записываем каталог uploads для загрузки файлов.

    /etc/vsftpd.conf

    User_sub_token=$USER local_root=/home/$USER/ftp

  • Метод 2. Еще один вариант – добавить следующую директиву в файл конфигурации vsftpd. Используйте этот параметр, если вы должны предоставить доступ к записи для своего пользователя в свой домашний каталог.

    /etc/vsftpd.conf

    Allow_writeable_chroot=YES

4. Пассивные FTP-соединения

vsftpd может использовать любой порт для пассивных FTP-соединений. Мы укажем минимальный и максимальный диапазон портов, а затем откроем диапазон в нашем брандмауэре.

Добавьте в файл конфигурации следующие строки:

/etc/vsftpd.conf

Pasv_min_port=30000 pasv_max_port=31000

5. Ограничение входа пользователя

Чтобы разрешить только определенным пользователям входить на FTP-сервер, добавьте следующие строки в конец файла:

/etc/vsftpd.conf

Userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

Когда эта опция включена, вам необходимо явно указать, какие пользователи могут войти, добавив имена пользователей в файл /etc/vsftpd.user_list (по одному пользователю в строке).

6. Обеспечение передачи с помощью SSL/TLS

Чтобы шифровать FTP-передачи с помощью SSL/TLS, вам необходимо иметь сертификат SSL и настроить FTP-сервер для его использования.

Вы можете использовать , подписанный доверенным центром сертификации, или создать самоподписанный сертификат.

Если у вас есть домен или поддомен, указывающий на IP-адрес FTP-сервера, вы можете легко создать бесплатный сертификат SSL для шифрования.

В этой статье мы сгенерируем самоподписанный сертификат SSL с помощью команды openssl.

Следующая команда создаст 2048-битный закрытый ключ и самоподписанный сертификат, действительный в течение 10 лет. Как закрытый ключ, так и сертификат будут сохранены в одном файле:

Sudo openssl req -x509 -nodes -days 3650 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem

Теперь, когда создан SSL-сертификат, откройте файл конфигурации vsftpd:

Sudo nano /etc/vsftpd.conf

Найдите директивы rsa_cert_fileи rsa_private_key_file, измените их значение pam в пути к файлу и установите директиву ssl_enable на YES:

/etc/vsftpd.conf

Rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES

Если не указано иное, FTP-сервер будет использовать только TLS для обеспечения безопасных подключений.

Перезапустите службу vsftpd

После того, как вы закончите редактирование, файл конфигурации vsftpd (исключая комментарии) должен выглядеть примерно так:

/etc/vsftpd.conf

Listen=NO listen_ipv6=YES anonymous_enable=NO local_enable=YES write_enable=YES dirmessage_enable=YES use_localtime=YES xferlog_enable=YES connect_from_port_20=YES chroot_local_user=YES secure_chroot_dir=/var/run/vsftpd/empty pam_service_name=vsftpd rsa_cert_file=/etc/ssl/private/vsftpd.pem rsa_private_key_file=/etc/ssl/private/vsftpd.pem ssl_enable=YES user_sub_token=$USER local_root=/home/$USER/ftp pasv_min_port=30000 pasv_max_port=31000 userlist_enable=YES userlist_file=/etc/vsftpd.user_list userlist_deny=NO

Сохраните файл и перезапустите службу vsftpd, чтобы изменения вступили в силу:

Sudo systemctl restart vsftpd

Открытие брандмауэра

Если вы используете брандмауэр UFW, вам необходимо разрешить FTP-трафик.

Чтобы открыть порт 21(порт команд FTP), порт 20(порт данных FTP) и 30000-31000(диапазон пассивных портов), выполните следующие команды:

Sudo ufw allow 20:21/tcp sudo ufw allow 30000:31000/tcp

Чтобы избежать блокировки, мы откроем порт 22:

Sudo ufw allow OpenSSH

Перезагрузите правила UFW, отключив и снова включив UFW:

Sudo ufw disablesudo ufw enable

Чтобы проверить выполнение изменений:

Sudo ufw status Status: active To Action From -- ------ ---- 20:21/tcp ALLOW Anywhere 30000:31000/tcp ALLOW Anywhere OpenSSH ALLOW Anywhere 20:21/tcp (v6) ALLOW Anywhere (v6) 30000:31000/tcp (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)

Создание пользователя FTP

Чтобы протестировать наш FTP-сервер, мы создадим нового пользователя.

  • Если у вас уже есть пользователь, которому вы хотите предоставить FTP-доступ, пропустите 1-й шаг.
  • Если вы установили allow_writeable_chroot=YES в своем файле конфигурации, пропустите 3-й шаг.
  1. Создайте нового пользователя с именем newftpuser: sudo adduser newftpuser
  2. Добавьте пользователя в список разрешенных пользователей FTP: echo "newftpuser" | sudo tee -a /etc/vsftpd.user_list
  3. Создайте дерево каталогов FTP и установите правильные разрешения: sudo mkdir -p /home/newftpuser/ftp/uploadsudo chmod 550 /home/newftpuser/ftpsudo chmod 750 /home/newftpuser/ftp/uploadsudo chown -R newftpuser: /home/newftpuser/ftp

    Как обсуждалось в предыдущем разделе, пользователь сможет загружать свои файлы в каталог ftp/upload.

На данный момент ваш FTP-сервер полностью работоспособен, и вы должны иметь возможность подключаться к вашему серверу с любым , который может быть настроен на использование шифрования TLS, например FileZilla.

Отключение доступа к оболочке

По умолчанию при создании пользователя, если явно не указано, у пользователя будет доступ к серверу SSH.

Чтобы отключить доступ к оболочке, мы создадим новую оболочку, которая просто напечатает сообщение, сообщающее пользователю, что их учетная запись ограничивается только доступом к FTP.

Создайте оболочку /bin/ftponly и сделайте ее исполняемой:

Echo -e "#!/bin/sh\necho "This account account is limited to FTP access only."" | sudo tee -a /bin/ftponlysudo chmod a+x /bin/ftponly

Добавьте новую оболочку в список допустимых оболочек в файл /etc/shells

Echo "/bin/ftponly" | sudo tee -a /etc/shells

Измените оболочку пользователя на /bin/ftponly:

Sudo usermod newftpuser -s /bin/ftponly

Заключение

В этой статье вы узнали, как установить и настроить безопасный и быстрый FTP-сервер в вашей системе Ubuntu 18.04.

Н а этом уроке мы покажем вам установку и настройку VSFTPD на в . VSFTPD является аббревиатурой от очень безопасного протокола передачи файлов Daemon. Это бесплатный и с открытым исходным кодом, быстрый, стабильный, легкий и очень безопасный FTP – сервер для операционных систем Unix и Linux, установленных в соответствии с GNU General Public License. VSFTPD является одним из наиболее часто используемых FTP – серверов для Linux и используется в качестве FTP – сервера по умолчанию в некоторых из самых больших дистрибутивах, таких как , Fedora, Ubuntu, NimbleX, Slackware и RHEL.

Для того чтобы установить VSFTPD на вашем сервере Ubuntu 16.04, вы должны войти через SSH как пользователь root

Ssh root@IP_address

Прежде всего, убедитесь, что все установленные пакеты находятся в актуальном состоянии

Apt-get update && apt-get upgrade

Все, что вам нужно сделать, чтобы установить VSFTPD на вашем Ubuntu 16.04 VPS, это выполнить следующую команду в вашем терминале Linux

Apt-get -y install vsftpd

После того, как он будет успешно установлен, мы должны внести некоторые изменения в его конфигурацию. Откройте файл /etc/vsftpd.conf, найдите и измените следующие строки:

Vim /etc/vsftpd.conf # Контроль анонимного вход, разрешен или нет. anonymous_enable=NO # Локальные пользователи для входа в систему local_enable=YES # Набор "write_enable", для того, чтобы разрешить изменения в файловой системы write_enable=YES # включить отправку в ASCII (для предотвращения загрузки скриптов и т. д. от взлома), # без риска Осн размера и скачивания в формате ASCII. ASCII должен быть # на клиенте в любом случае.. ascii_upload_enable=YES ascii_download_enable=YES # Можно задать корневой каталог для пользователей FTP. Если не указано, домашний каталог пользователя равен корневому каталогу FTP local_root=public_html

Сохраните файл конфигурации и перезапустите FTP-сервер для того, чтобы изменения вступили в силу

Systemctl restart vsftpd

Установите VSFTPD на автоматический запуск при загрузке системы

Systemctl enable vsftpd

Вы можете найти список всех опций в файле конфигурации на http://vsftpd.beasts.org/vsftpd_conf.html

Корневые логин по умолчанию отключен в VSFTPD по соображениям безопасности. Для того, чтобы получить доступ к своему FTP-сервер, вам придется создать нового пользователя системы

Adduser FTPUSER

Где FTPUSER это имя пользователя, которого вы хотите создать. Вам будет предложено ввести новый пароль для нового пользователя и несколько дополнительных сведений, таких как полное имя пользователя, номер телефона, и т.д.. Пожалуйста, обратите внимание, что очень важно всегда использовать для учетных записей. Лучше всего использовать комбинацию букв и цифр и не менее 10 символов.

Теперь, как только ваш FTP-сервер и установлен и настроен, и создается новый пользователь FTP, вы можете получить доступ к FTP-серверу с помощью вновь созданного пользователя с помощью терминала, веб-браузер или с помощью клиента FTP, такие как FileZilla.

Пришло время организовывать файловое хранилище, как внутри сети так и снаружи. Данная статья является продолжением первой части, посвященной настройки WiFi роутера на Вашем домашнем сервере . Все жесткие диски с Вашего домашнего компьютера(кроме системного) можно перенести на сервер, поскольку скорость передачи данный колеблется в районе 10-20 мегабайт в секунду [данный параметр еще и очень сильно зависит от модели Вашего жесткого диска], да и кстати, давно уже пора для системного диска покупать SSD накопители.

FTP Server.
Существует множество ftp серверов для linux, много хороших, много плохих, но есть лучший [естественно, что это субъективное мнение, и лучший он для меня] и это vsftpd . Его мы и будем рассматривать.
Скачать его можно из стандартных репозитариев OpenSUSE , выполнив в терминале команду:
zypper in vsftpd
Теперь перейдем к описанию. Это консольный ftp server, у него нет GUI [графическая оболочка], поэтому вся настройка происходит в одном единственном конфиге, по адресу /etc/vsftpd.conf .
Вот пример рабочего конфига:
#разрешаем любые формы записи на FTP сервер write_enable=YES #разрешаем возможность отображения сообщений о переходах из папки в #папку. dirmessage_enable=YES #выбираем пользователя БЕЗ всяких привелегий (read-only) nopriv_user=ftpsecure #разрешаем локальных пользователей (локальные пользователи - это те, #которые зарегестрированы в системе, то есть на них есть учетные записи) local_enable=YES #запихиваем локального пользователя в chroot. chroot_local_user=YES #запрет анонимного входа на сервер anonymous_enable=NO #включаем логгирование syslog_enable=YES #разрешаем присоединятся по 20ому порту connect_from_port_20=YES #разрешаем аплоадить папки с киррилицей в названии ascii_upload_enable=YES #разрешаем скачивать папки с киррилицей в названии ascii_download_enable=YES #название PAM сервиса в системе pam_service_name=vsftpd #возможность работы в автономном режиме listen=YES #запрещаем SSL аутентификацию ssl_enable=NO #рейнж портов для режима PASV. pasv_min_port=30000 pasv_max_port=30100 #привествие при заходе на ftp-server ftpd_banner=Welcome to my ftp-server #время, через сколько пользователя кикнут с сервера при его бездействии idle_session_timeout=900 #максимальное количество юзеров max_clients=10 #максимальное количество сессией с одного ip адреса max_per_ip=3 #разрешение режима PASV(пассивный режим) pasv_enable=YES #маска разрешающих привелегий для локальных пользователей. local_umask=0002
В приведенном выше конфиге нет заморочек для распределения прав доступа отдельным пользователям, отдельных папок. Всё довольно просто и лаконично, настроил один раз и пользуешься [пользуются]. Vsftpd был выбран, потому что у него лучшая система настройки прав доступа, которая подразделяется на два вида: внутренняя, системная аутентификация и внешняя, с отдельным конфигурационным файлом для распределения прав доступа, но при этом, пользователи всё также берутся из системы.

В данном примере и пользователи, и распределение прав доступа этих самых пользователей берется из системы, дополнительный конфиг-файл не используется.

Рисунок 1. Выставление прав
На этом собственно всё.

Samba.
Хотите всегда иметь под рукой файловое хранилище всех коллекций и всего прочего с ноутбука, с домашнего компьютера, с телефона, с планшета? Поехали.

Изначально, при стандартной установке системы OpenSUSE всё что нужно для установки и настройки samba на сервере уже предустановлено. Поэтому перейдем непосредственно к настройке. Поскольку доступ из под ОС Windows в качестве «Подключения сетевого диска» будет доступен только внутри Вашей локальной сети [для интернета есть ftp сервер, да и к тому же, вывешивать самбу в интернет крайне не безопасно, а мы же, - «ЗА СЕКЬЮРНОСТЬ!!! УРА!»] поэтому настройки будут крайне банальны и просты в понимании. Есть два [известных мне и адекватных на мой взгляд] настройки самбы, это через, всё тот самый, конфигурационный файл и при помощи утилиты - WebMin . Это дико-крутая штука, особенно для тех, кто не любит ковырять конфиги [но и здесь есть свои ньюансы] . В данной статье не будем останавливаться на средствах "для ленивых ", поэтому продолжаем. Мы будем рассматривать рабочий конфиг файл. Находится он по адресу: /etc/samba/smb.conf . Вот он:
# Указываем имя гостевого юзера. guest account = nobody # Указываем имя netbios name = homeserver # Включаем возможность прав "write" writeable = yes # Дополнительная опция, убирающая задержку. socket options = TCP_NODELAY IPTOS_LOWDELAY # При необходимости, указываем рабочую группу, где будут находится компьютеры #(абсолютно не обязательный параметр) workgroup = HOMENET # Выбираем интерфейсы на которые будет "прослушивать" самба. # (также, необязательная опция, по-умолчанию, будут прослушиваться все интерфейсы) interfaces = eth1 wlan0 # Дома безопасность особо не нужна. security = share public = yes # Разрешаем гостя guest ok = yes # Только гость? Да. guest only = yes # Путь до публичной папки path = /cifs/pub # Не запрещаем запись. read only = no # Также, если интересует возможность доступа к CD-ROM"у, то вставьте # в конфиг самбы следующие опции: fake oplocks = yes guest ok = yes guest only = yes path = /mnt/cdrom read only = yes
Также, дополнительную настройку можно выполнить через встроенный в YaST GUI samba.

Того пользователя, что мы указали в самом начале конфига, в данном примере это пользователь nobody , необходимо создать непосредственно в системе. Задать ему необходимые права (дома, имеет смысл поставить полные права, на создание, удаление, редактирование всех файлов и папок (т.е. права 777). Также, если Вы столкнетесь с ситуацией, когда по какой-то причине станет невозможным удаление/создание файлов в какой-либо из папок на сервере, то выполните команду:
chmod 777 -R /path
Разберем её, на всякий случай:
chmod - команда установки прав.
777 - собственно права, в буквенном обозначении означают rwx, rwx, rwx - права чтение, запись, выполнение для владельца, группы(где состоит владелец), всех.
-R - ключ рекурсии, для того чтобы команда выполнилась не только для той папки(и файлов, находящихся в ней), которую Вы указали в /path , но и для всех под-папок и файлов в них тоже.
/path - путь до папки, на которую необходимо установить права. Аналогичная команда соответствует FTP серверу, если возникли похожие проблемы. Да, и надо оговориться, что если возникают подобные проблемы, то скорей всего проблема кроется в пользователях созданных в системе, а точнее в правах, выданных на использование их домашних директорий.

rTorrent.
Полу-автоматизированный торрент клиент.
На самом деле, это обычный торрент клиент, но, возможности настройки которого, очень богаты разнообразием. Сейчас мы с Вами разберём одну очень полезную функцию данного клиента. Представьте, Вы уже настроили самбу на Вашем домашнем сервере, файловое хранилище, находящееся на сервере подключена к Вашему компьютеру как Сетевой Диск, Вы открываете Ваш сетевой диск, открываете папку torrents, там открываете папку music и перемещаете туда все торрент файлы с музыкой, которые Вы хотите скачать и… всё, ложитесь спать. На утро уже будут скачены и проверены хеши всех торрентов, что Вы туда положили (тут конечно всё зависит от того сколько торрентов Вы хотите скачать, какой у них вес и какова ширина Вашего интернет канала). Нравится? Вот и я балдею уже как пол года, от этой функции.
Давайте разбираться.
Вам надо установить rtorrent , выполняем следующую команду в терминале:
zypper in rtorrent
После того, как Вы скачали и установили торрент-клиент rtorrent, необходимо произвести настройку клиента. Настройка программы осуществляется при помощи конфигурационного файла .rtorrent.rc , размещаемого в домашнем каталоге пользователя. (По умолчанию файл.rtorrent.rc отсутствует. Его нужно создавать самостоятельно. Привожу пример с подробными комментариями рабочего конфига:
#обмен пирами? Да! peer_exchange = yes #минимальное число пиров на торрент min_peers = 1 #максимальное число пиров на торрент max_peers = 1000 #максимальная скорость загрузки download_rate = 0 #максимальная скорость отдачи. 1 - не ограничена upload_rate = 0 #каталог для сохранения закачек или откуда будут сидироваться торренты. directory = /files/torrents #каталог куда будет сохраняться состояние торрентов. #Здесь, в этом примере, они сохраняются в папку session session = /files/torrents/session/ #rtorrent каждые 5 секунд проверяет этот каталог на новые *.torrent #файлы #и если они есть то ставит их на закачку #schedule = watch_directory,5,5,load_start=/home/user/torrent_auto_load/ #проверяет каталоги на новые *.torrent файлы и сохраняет закачки в #соответствующие папки schedule = watch_directory,5,5,"load_start=/files/torrents/music/*.torrent,d.set_directory=/files/music" schedule = watch_directory_2,5,5,"load_start=/files/torrents/video/*.torrent,d.set_directory=/files/video" schedule = watch_directory_3,5,5,"load_start=/files/torrents/video/serial/*.torrent,d.set_directory=/files/video/serial" schedule = watch_directory_4,5,5,"load_start=/files/torrents/progs/*.torrent,d.set_directory=/files/progs" schedule = watch_directory_5,5,5,"load_start=/files/torrents/games/*.torrent,d.set_directory=/files/games" schedule = watch_directory_6,5,5,"load_start=/files/torrents/unsorted/*.torrent,d.set_directory=/files/unsorted" schedule = watch_directory_7,5,5,"load_start=/files/torrents/doc/*.torrent,d.set_directory=/files/doc" schedule = watch_directory_8,5,5,"load_start=/files/torrents/doc/books/*.torrent,d.set_directory=/files/doc/books" #Удаление торрент-файлов из директории music(потому что в данном #примере, папка music идет как "directory"(#1), которые уже скачаны. schedule = untied_directory,7,5,remove_untied= #номер порта (или нескольких портов) который открывает клиент для #обмена данными port_range = 40890-40890 #случайный выбор порта для обмена данными. В данном случае он #отключён port_random = no #проверять хэш торрента после закачки check_hash = yes #сохранять сессию session_save = yes #принимать зашифрованные входящие соединения, устанавливать #незашифрованные исходящие соединения, #если возвращает ошибку, повторять с шифрованием, предпочитать #открытый текст после установления #зашифрованного соединения encryption = allow_incoming,enable_retry,prefer_plaintext #использовать udp use_udp_trackers = yes


Рисунок 2. Главное окно программы rTorrent

Собственно и все. Далее хитрый приём, - открываем консоль и пишем(можно и по ssh зайти на сервер):
screen rtorrent
Далее, в терминале откроется торрент-клиент, там же Вы его можете настроить и отладить дополнительно. Теперь нажимаем волшебные комбинации клавиш Ctrl+A затем Ctrl+D и консоль радостно Вас оповестит, что:


Рисунок 3. «Заскринивание» процесса программы rTorrent.

Это говорит о том, что процесс Вашего торрент-клиента «закринин», то есть выполняется, но его при этом не видно. Для тех, адептов, кому всегда, всё интересно, может прочесть вот здесь про данную утилиту обременять голову такими вещами (хотя, они очень интересные и познавательные, и применяются часто) принудительно я не хочу.
Если Вам понадобилось заного открыть клиент, пишем:
screen -r
ВАЖНО: Если Вы хотите запускать торрент-клиент под рутом(root, т.е. через команду sudo) то, необходимо конфиг файл создавать в корневом каталоге пользователя root, а также, screen -r необходимо выполнять также, под тем же пользователем, под которым Вы ее «заскринили».
Таким образом, у Вас в фоне всегда будет висеть торрент-клиент, который будет качать и раздавать ровно столько, сколько будет работать Ваш сервер.

На этой «важной» ноте, я хочу закончить данную статью. Спасибо за внимание, и да, пользуйтесь поисковиком Google , он молодец!

Если ошибся топиком, подскажите куда перенести.

Оригинал: How to setup and use FTP Server in Ubuntu Linux
Автор: Lubos Rendek
Дата публикации: 28 января 2013 года
Перевод: А. Кривошей
Дата перевода: ноябрь 2013 г.

1. Введение

Практически каждый пользователь, хотя бы иногда работающий в интернете, сталкивался с FTP. В данном руководстве детально и пошагово описывается, как устанавливать FTP-сервер в Ubuntu Linux. Мы покажем, как установить его в нормальном и автономном режимах, а также как обеспечить его безопасность. Мы будем использовать легкий и эффективный FTP-сервер vsFTPd, предназначенный для работы на высоконагруженных серверах.

2. Соглашения

3. Что такое FTP

Для тех, кто не знаком с FTP, ниже представлено краткое описание его возможностей. FTP расшифровывается как File Transfer Protocol. Название подразумевает, что этот протокол используется для передачи файлов или директорий с одного хоста на другой по сети - как локальной, так и через интернет.
Главные возможности vsFTPd: настройки для виртуальных IP, виртуальные пользователи, сетевые или автономные операции, большой спектр пользовательских настроек, регулирования пропускной способности канала, настройка лимитов по IP, поддержка IPv6 и шифрования (с помощью SSL).

4. Установка FTP-сервера в Ubuntu

Как всегда в Ubuntu и системах на ее основе, установка FTP-сервера выполняется одной командой. Откройте терминал и введите:

$ sudo apt-get install vsftpd

После выполнения этой команды сервер будет установлен и запущен.

Setting up vsftpd (2.3.5-1ubuntu2) ... vsftpd start/running, process 1891

5. Нормальный и автономный режимы работы FTP

5.1. Автономный режим

По умолчанию vsftpd запускается в автономном режиме, в котором запускаемая на сервере служба использует собственный стартовый скрипт, называемый демоном. В случае vsftpd это /etc/init.d/vsftpd. Данный автономный демон в момент старта службы FTP берет управление нею на себя. Демон vsftpd предоставляет администратору несколько команд для управления FTP-сервером vsftpd:

start или stop - используется для запуска или остановки ftp-сервера.
status - выводит подробную информацию о текущем состоянии вашего FTP-сервера.
restart - это альтернатива последовательности из остановки и запуска сервера. Если сервер уже остановлен, команда restart запустит его.
reload - эта команда позволяет перезагрузить и применить все новые настройки. Ее отличие от restart заключается в том, что применение новых настроек производится без остановки сервера.
Для запуска, перезагрузки и применения новых настроек используется утилита service:

$ sudo service vsftpd start

Такой синтаксис применяется для выполнения всех команд.

5.2. Нормальный режим

Другой подход к запуску vsftpd - это нормальный режим, в котором за работу службы отвечает суперсервер xinetd. Для запуска сервера vsftpd в нормальном режиме необходимо сначала установить суперсервер xinetd:

$ sudo apt-get install xinetd

Приведенная выше команда устанавливает и запускает суперсервер xinetd. В случае, если он у вас уже установлен, эта команда не нужна. Далее, создайте файл vsftpd в директории /etc/xinetd.d/ со следующим содержимым:

Service ftp { disable = no socket_type = stream wait = no user = root server = /usr/sbin/vsftpd per_source = 5 instances = 200 no_access = 10.1.1.10 banner_fail = /etc/vsftpd.busy log_on_success += PID HOST DURATION log_on_failure += HOST }

В то же время вы можете изменять любые опции, чтобы настроить суперсервер в соответствии со своими требованиями.
Опции, на которые стоит обратить внимание:
server - введите в командной строке "$ which vsftpd", чтобы узнать правильный путь.
no_access - все хосты с IP-адресами, указанными в этой директиве, будут блокированы.
banner_fail - здесь можно указать путь к текстовому файлу, содержимое которого будет показано для любых блокированных IP-адресов.

Эта директива даст команду FTP-серверу не открывать никаких портов, полностью перепоручив их суперсерверу xinetd. Перед тем, как запустить сервер в нормальном режиме, убедитесь, что демон vsftpd отключен:

$ sudo service vsftpd stop

Теперь можно запустить FTP-сервер в нормальном режиме с помощью команды:

Чтобы убедиться в нормальной работе FTP-сервера, протестируйте и откройте порт 21 с помощью команды netstat:

$ netstat -ant | grep 21 tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN

6. Создание первого подключения по FTP

Независимо от того, запустили ли вы FTP-сервер в автономном, или в нормальном режиме, вы можете создать первое локальное ftp-подключение. По умолчанию vsftpd разрешает автономный доступ, поэтому при создании нашего первого тестового подключения в качестве имени пользователя мы будем использовать anonymous. Для этого просто введите команду ftp с аргументом localhost:

$ ftp localhost Connected to localhost. 220 (vsFTPd 2.3.5) Name (localhost:root): anonymous 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> ftp> quit 221 Goodbye.

Успешное подключение подтверждает, что FTP-сервер в локальной системе настроен правильно. Но перед тем, как перейти к более тонким настройкам, необходимо протестировать FTP-сервер и с нескольких удаленных хостов.

7. Настройка FTP-сервера

В этом разделе мы рассмотрим некоторые базовые примеры опций конфигурации vsftpd.

Примечание: при внесении любых изменений в настройки FTP-сервера не забудьте воспользоваться командой restart/reload, чтобы активировать их.

7.1. Настройка пользовательского доступа

vsftpd позволяет оставить только анонимный доступ, либо позволить пользователям, прописанным в файле /etc/passwd или в соответствующем списке, аутентифицироваться.

7.1.1. Анонимный доступ к FTP

По умолчанию FTP-сервер vsftpd настроен только для анонимного доступа. Если это то, что вам нужно, вы можете облегчить жизнь анонимным пользователям, отключив необходимость ввода пароля. Наиболее безопасный вариант для FTP-сервера - не разрешать пользователям идентифицироваться с паролем в виде простого текста. Для отключения необходимости ввода пароля анонимными пользователями необходимо в конфигурационном файле /etc/vsftpd.conf установить значение "NO" для директивы no_anon_password:

No_anon_password=YES

7.1.2. Доступ локальных пользователей по FTP

Теперь ваш сервер должен запрещать любой доступ за исключением пользователя anonymous. Чтобы позволить авторизоваться всем пользователям, указанным в файле /etc/passwd, необходимо изменить значение директивы local_enable в файле /etc/vsftpd.conf. Ее значение по умолчанию - "NO".

Local_enable=YES

Теперь любой пользователь, указанный в файле /etc/passwd, сможет авторизоваться, используя свой пароль.

$ ftp localhost Connected to localhost. 220 (vsFTPd 2.3.5) Name (localhost:root): lubos 331 Please specify the password. Password: 230 Login successful. Remote system type is UNIX. Using binary mode to transfer files. ftp> quit 221 Goodbye.

7.1.3. Список доступа пользователей

Сначала создадим список доступа, используемый сервером vsFTPd. Обычно вы можете задать его в директории /etc/. Создайте файл с произвольным именем и перечислите в нем всех пользователей, которым вы хотите разрешить или запретить доступ. Например, давайте создадим новый список с единственным пользователем "lubos":

Echo lubos > /etc/vsftpd.userlist

Userlist_file=/etc/vsftpd.userlist userlist_enable=YES

Таким образом всем пользователям, перечисленным в файле /etc/vsftpd.userlist, будет отказано в доступе к FTP-серверу.

$ ftp localhost Connected to localhost. 220 (vsFTPd 2.3.5) Name (localhost:root): lubos 530 Permission denied. Login failed. ftp>

Чтобы разрешить доступ всем пользователям, перечисленным в файле /etc/vsftpd.userlist, установите значение "NO" для директивы userlist_deny. При этом вы открываете доступ только пользователям, перечисленным в /etc/vsftpd.userlist. Каждое имя пользователя в этом файле должно располагаться на отдельной строке.

7.2. Смена номера порта

По умолчанию любой FTP-сервер слушает стандартный порт 21 для аутентификации пользователя и порт 20 для передачи данных. vsFTPd не является исключением. Для смены прослушиваемого по умолчанию порта используется директива listen_port в файле /etc/vsftpd.conf. Например, для смены порта на 2121 просто добавьте следующую директиву в ваш конфигурационный файл:

Listen_port=2121

После чего перезапустите FTP-сервер.

Однако это применимо к только к vsFPTd, работающему в автономном режиме. В случае, если ваш FTP-сервер запущен в нормальном режиме с с использованием суперсервера xinetd, и вы хотите изменить порт по умолчанию на 2121, найдите в файле /etc/services строку FTP и замените 21 на 2121, после чего перезапустите xinetd.

$ sudo service xinetd restart

Теперь, как вы можете убедиться, FTP-сервер слушает порт 2121:

$ netstat -ant | grep 2121 tcp 0 0 0.0.0.0:2121 0.0.0.0:* LISTEN

7.3. Другие опции конфигурации

Сервер vsFTPd имеет множество опций настроек, которые позволяют тонко настроить его в соответствии со своими нуждами. Ниже приведен список наиболее важных опций:

max_clients - эта опция задает максимальное количество пользователей, одновременно использующих FTP-сервер. 0 означает неограниченное количество пользователей.
max_per_ip - задает максимальное количество пользователей с одного IP-адреса.
download_enable - если ее значение - NO, любой запрос на скачивание будет отклонен.

8. Заключение

На сегодняшний день vsFTPd имеет 125 опций конфигурации. Это делает его очень гибким в настройке и в то же время простым в использовании и администрировании. Хотите ли вы использовать его дома, в пределах корпоративной сети, или на удаленном сервере, вы можете быть уверены, что vsFTPd полностью удовлетворит ваши нужды. Кроме того, vsFTPd позволяет активировать sftp, но этот вопрос мы обсудим в следующий раз.