Оригинал: 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, но этот вопрос мы обсудим в следующий раз.

File Transfer Protocol (FTP) is a TCP protocol for downloading files between computers. In the past, it has also been used for uploading but, as that method does not use encryption, user credentials as well as data transferred in the clear and are easily intercepted. So if you are here looking for a way to upload and download files securely, see the section on OpenSSH in Remote Administration instead.

FTP works on a client/server model. The server component is called an FTP daemon . It continuously listens for FTP requests from remote clients. When a request is received, it manages the login and sets up the connection. For the duration of the session it executes any of commands sent by the FTP client.

Access to an FTP server can be managed in two ways:

In the Anonymous mode, remote clients can access the FTP server by using the default user account called "anonymous" or "ftp" and sending an email address as the password. In the Authenticated mode a user must have an account and a password. This latter choice is very insecure and should not be used except in special circumstances. If you are looking to transfer files securely see SFTP in the section on OpenSSH-Server. User access to the FTP server directories and files is dependent on the permissions defined for the account used at login. As a general rule, the FTP daemon will hide the root directory of the FTP server and change it to the FTP Home directory. This hides the rest of the file system from remote sessions.

vsftpd - FTP Server Installation

vsftpd is an FTP daemon available in Ubuntu. It is easy to install, set up, and maintain. To install vsftpd you can run the following command:

sudo apt install vsftpd

Anonymous FTP Configuration

By default vsftpd is not configured to allow anonymous download. If you wish to enable anonymous download edit /etc/vsftpd.conf by changing:

anonymous_enable=Yes

During installation a ftp user is created with a home directory of /srv/ftp . This is the default FTP directory.

If you wish to change this location, to /srv/files/ftp for example, simply create a directory in another location and change the ftp user"s home directory:

sudo mkdir /srv/files/ftp sudo usermod -d /srv/files/ftp ftp

After making the change restart vsftpd :

Finally, copy any files and directories you would like to make available through anonymous FTP to /srv/files/ftp , or /srv/ftp if you wish to use the default.

User Authenticated FTP Configuration

By default vsftpd is configured to authenticate system users and allow them to download files. If you want users to be able to upload files, edit /etc/vsftpd.conf :

write_enable=YES

Now restart vsftpd :

sudo systemctl restart vsftpd.service

Now when system users login to FTP they will start in their home directories where they can download, upload, create directories, etc.

Similarly, by default, anonymous users are not allowed to upload files to FTP server. To change this setting, you should uncomment the following line, and restart vsftpd :

anon_upload_enable=YES

Enabling anonymous FTP upload can be an extreme security risk. It is best to not enable anonymous upload on servers accessed directly from the Internet.

The configuration file consists of many configuration parameters. The information about each parameter is available in the configuration file. Alternatively, you can refer to the man page, man 5 vsftpd.conf for details of each parameter.

Securing FTP

There are options in /etc/vsftpd.conf to help make vsftpd more secure. For example users can be limited to their home directories by uncommenting:

chroot_local_user=YES

You can also limit a specific list of users to just their home directories:

chroot_list_enable=YES chroot_list_file=/etc/vsftpd.chroot_list

After uncommenting the above options, create a /etc/vsftpd.chroot_list containing a list of users one per line. Then restart vsftpd :

sudo systemctl restart vsftpd.service

Also, the /etc/ftpusers file is a list of users that are disallowed FTP access. The default list includes root, daemon, nobody, etc. To disable FTP access for additional users simply add them to the list.

FTP can also be encrypted using FTPS . Different from SFTP , FTPS is FTP over Secure Socket Layer (SSL). SFTP is a FTP like session over an encrypted SSH connection. A major difference is that users of SFTP need to have a shell account on the system, instead of a nologin shell. Providing all users with a shell may not be ideal for some environments, such as a shared web host. However, it is possible to restrict such accounts to only SFTP and disable shell interaction. See the section on OpenSSH-Server for more.

To configure FTPS , edit /etc/vsftpd.conf and at the bottom add:

Also, notice the certificate and key related options:

rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key

By default these options are set to the certificate and key provided by the ssl-cert package. In a production environment these should be replaced with a certificate and key generated for the specific host. For more information on certificates see Certificates .

Now restart vsftpd , and non-anonymous users will be forced to use FTPS :

sudo systemctl restart vsftpd.service

To allow users with a shell of /usr/sbin/nologin access to FTP, but have no shell access, edit /etc/shells adding the nologin shell:

# /etc/shells: valid login shells /bin/csh /bin/sh /usr/bin/es /usr/bin/ksh /bin/ksh /usr/bin/rc /usr/bin/tcsh /bin/tcsh /usr/bin/esh /bin/dash /bin/bash /bin/rbash /usr/bin/screen /usr/sbin/nologin

This is necessary because, by default vsftpd uses PAM for authentication, and the /etc/pam.d/vsftpd configuration file contains:

auth required pam_shells.so

The shells PAM module restricts access to shells listed in the /etc/shells file.

Most popular FTP clients can be configured to connect using FTPS. The lftp command line FTP client has the ability to use FTPS as well.

Это возможность передавать файлы с помощью file transfer protocol. Он используется для удобного обмена файлами по проводной и беспроводной местной сети. Этим локальный сервер может быть полезен как в работе, так и в домашних условиях. С использованием Ubuntu, FTP-сервер ещё более удобен, поскольку требует минимум сил и ресурсов для настройки и использования.

На базе Ubuntu можно установить ftp-сервер.


Протокол обмена файлами сегодня особенно часто используют для передачи собственных ресурсов на серверы в интернете, а также между доверенными компьютерами. Хорошо известные клиенты FTP для Windows, например, FileZilla, нацелены на взаимодействие двух компьютеров , обмен данными между которыми максимально прост и управляем.

Протокол строится на базе клиент-серверной логики. Это означает наличие двух технических сторон - клиента (чьи нужды обслуживаются) и сервера (который и обслуживает нужды). Подключение к серверу может выполняться как с помощью открытой аутентификации (логин и пароль), так и анонимно (если поддерживается). Несмотря на это, протокол ФТП слаб в отношении защиты, особенно по стандартам сегодняшнего дня. Однако в Ubuntu установка FTP может включать некоторые дополнительные стандарты защиты.

Переходим к практике. Демон Profpd

Для того чтобы установка FTP-сервера Ubuntu прошла удачно, мы используем так называемый «демон». Это программа, которая позволяет выполнять рутинные задачи, будучи запущенной в фоне. Демон, который нужен для FTP на Ubuntu - Proftpd. Его установка выполняется простой командой в Терминале :

«sudo apt-get install proftpd».

Когда установка будет завершена, потребуется обновить конфигурацию сервера и изменить базовые настройки. Это поможет конфигурировать процесс входа на сервер. Все нужные изменения требуется вносить в файле «/etc/proftpd/proftpd.conf». Его можно сразу открыть при помощи редактора nano.

Итак, настройка FTP-сервера Ubuntu началась. Прежде всего, изменим 2 нужных параметра.

В самый конец файла необходимо добавить строку:

«AuthUserFile /etc/proftpd/ftpd.passwd»

Именно в этом документе, который мы предложим вам добавить позднее, будут хранится основные параметры входа. Убираем символ комментария со строки «DefaultRoot» - «#». Теперь перейдём к правке файла «/etc/shells». В него нужно добавить строку «/bin/false». C помощью этих команд вы сможете добавлять новых пользователей в существующую группу:

«addgroup имя_пользователя группа», если вставить «имя_пользователя» = «ftp» и «группа» = «www-data», то становится возможным работать с файлами в «собственности» сервера.

Кроме того, установка FTP-сервера Ubuntu предусматривает команду «change owner»: «chown -R ftp:www-data». С её помощью можно сделать владельцем файлов пользователя «ftp». Группе пользователей «www-data» будет предоставлен групповой доступ к документам. Когда все настройки будут завершены, просто перезагрузите сервер:

«sudo /etc/init.d/proftpd restart»

Теперь нужно настраивать виртуальные учётные записи пользователей. Это необходимо делать по такой схеме:

«ftpasswd -passwd -file=/etc/proftpd/ftpd.passwd -name=(имя пользователя) -shell=/bin/false -home=/var/www/html -uid=(ID пользователя, можно узнать по команде «id ftp») -gid=(ID группы, допустим для группы «www-data» – 33)

«sudo nano /etc/dhcp3/dhcpd.conf»

В него нужно записать следующее:

«#Имя домена (внутренного).
option domain-name “имя_домена”;
#DNS сервер на подключаемом ПК.
option domain-name-servers IP_адрес;
#С этой строки нужно убрать комментарий «#».
authoritative;
#Желаемые данные подсети для сервера.
subnet 192.168.0.0 netmask 255.255.255.0 {
#Диапазон выдачи адресов.
range IP_адрес IP_адрес;
#Роутер с выходом в интернет. option routers IP_адрес;
#Загружаемый при начальной загрузке в сети файл.
filename = “tftp/pxelinux.0”;

Теперь осталось только перезагрузить DHCP-сервер:

«sudo /etc/init.d/dhcp3-server restart».

Как видите, настройка FTP-сервера Ubuntu не требует особых технических навыков. Кроме того, она довольно проста в исполнении для каждого, кто работал в Linux.

В завершение

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

FTP (File Transfer Protocol) – протокол передачи файлов. Протокол FTP позволяет передавать и скачивать файлы с сервера. На сегодняшний день данный протокол не является особо популярным, так как он не поддерживает шифрование данных. Вместо FTP используют протокол SFTP (передача данных по SSH), а также протокол SCP . В этой статье рассмотрена настройка обычного FTP-сервера на базе Ubuntu.

Протокол FTP работает в режиме клиент-сервер. Сервер постоянно слушает запросы от удаленных клиентов на 21 порту. При получении запроса он управляет входом и устанавливает соединение. На протяжении сессии сервер выполняет любые команды, переданные клиентом FTP. В качестве протокола транспортного уровня используется TCP. Для передачи данных FTP использует два типа соединения:

  1. Управляющее соединение (порт 21)
  2. Соединение данных (в активном режиме порт 20, в пассивном любой порт больше 1024)

Разделение на управляющее соединение и соединение для передачи данных является эффективным. Это позволяет передавать команды и файлы независимо друг от друга.

FTP поддерживает два типа аутентификации:

  1. Анонимный (логин ftp или anonymous, пароль – электронная почта)
  2. Авторизованный (логин и пароль у каждого пользователя свой)

При работе по протоколу FTP между клиентом и сервером может быть установлено два режима: активный и пассивный. Управляющее соединение одинаково для Активного и Пассивного режима. Клиент инициирует TCP-соединение с динамического порта (1024 – 65535) к порту номер 21 на FTP-сервере, после чего происходит аутентификация. Дальнейшие действия зависят от того какой режим выбран.

В активном режиме, после аутентификации, клиент сообщает серверу также номер своего порта (из динамического диапазона 1024 – 65535) для того, чтобы сервер мог подключиться к клиенту для установки соединения передачи данных. FTP-сервер подключается к заданному номеру порта клиента используя со своей стороны номер TCP-порта 20 для передачи данных.

В пассивном режиме, после аутентификации, сервер сообщает клиенту номер TCP-порта (из динамического диапазона 1024 – 65535), к которому можно подключиться для установки соединения передачи данных.

Таким образом, в активном режиме инициатором соединения является сервер, так как он подключается к клиенту. В пассивном режиме инициатор соединения – клиент.

Активный режим “вреден” для клиента в том плане, что когда к нему по случайному порту подключается сервер, такое соединение будет скорее всего блокировано брандмауэром на стороне клиента. Таким образом, необходимо открывать порты на стороне клиента, что приводит к “дырам” в безопасности. С другой стороны, для сервера такой режим будет полезен, так как для передачи данных используется общеизвестный порт 20.

Пассивный режим “вреден” в свою очередь для сервера, но “выгоден” для клиента. Клиент будет делать оба соединения к серверу, но одно из них будет к случайному высокому порту, такое соединение будет блокировать брандмауэром на стороне сервера.

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

Наиболее популярные команды FTP:

Команда Описание
USER Указать имя пользователя
PASS Указать пароль
LIST Просмотр содержимого каталога
CWD Смена текущего каталога
RETR Передать файл с сервера на клиент
STOP Передать файл с клиента на сервер
TYPE Установить режим передачи
DELE Удалить файл
MDK Создать каталог
RMD Удалить каталог
PASV Использовать пассивный режим
QUIT Выход и разрыв соединения

FTP имеет три режима передачи:

  1. Поточный – непрерывная передача данных в виде потока (без обработки, обработка выполняется TCP)
  2. Блочный – FTP делит данные на блоки (заголовок, поле данных, размер файла в байтах) и передает их TCP
  3. Режим сжатия единым алгоритмом

FTP-сервер – “библиотека” файлов на хостинге, используется для хранения файлов разных форматов. Самые популярные ftp-сервера это vsftpd и proftpd. FTP-сервера нужны для того, чтобы размещать на них для публичного и приватного скачивания больших объемов данных. Часто сервера используются для анонимного (гостевого) доступа к размещенным в открытом виде дистрибутивов ПО, музыки и фото. Доступ для анонимов позволяет, как правило, только просматривать каталоги и скачивать необходимую информацию, но на некоторых серверах наоборот – есть спецкаталоги, куда любой пользователь может загрузить файл для совместного пользования.

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

Перейдем к настройке сервера. Работать будем с такой схемой.

Доступ к FTP-серверу будут иметь как администратор, так и пользователь. Администратор и пользователь имеют авторизованный доступ. При этом необходимо настроить права доступа таким образом, чтобы администратор имел неограниченный доступ, а пользователь имел доступ только к своей домашней директории. Также необходимо настроить анонимный доступ.

В Ubuntu для DHCP сервера доступен демон vsftpd. Устанавливаем DHCP-сервер, это выполняется командой:

testServer$ sudo apt-get install vsftpd

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

testServer$ sudo nano /etc/vsftpd.conf

Находим там строку “anonymous_enable” и присваиваем ей значение “Yes”. Данная строка отвечает за доступ к FTP-серверу для анонимных пользователей.

Также необходимо раскоментировать две строки: “write_enable” и “chroot_local_user”. Первая строка отвечает за возможность записи на сервер, вторая строка блокирует возможность локальных пользователей подниматься на каталог выше, чем их домашняя папка.

В конце файла конфигурации добавляем две настройки:

Данные настройки устанавливают домашние папки для анонимных и локальных пользователей.

Сохраняем конфигурацию файла сочетанием клавиш Ctrl + X (при предложении заменить текущий файл выбираем Yes). Далее необходимо перезагрузить сервер FTP командой

testServer$ sudo service vsftpd restart

Следующий этап – это создание пользователей.

Создаем суперпользователя командой:

testServer$ sudo adduser superuser

Задаем ему пароль:

testServer$ sudo passwd superuser

Даем ему неограниченные права:

testServer$ sudo adduser superuser sudo

Создаем обычного пользователя:

testServer$ sudo adduser user

Задаем ему пароль:

testServer$ sudo passwd user

Enter new UNIX password: 12345

Создаем группу пользователей для управления папками:

testServer$ sudo addgroup groupl

testServer$ sudo nano /etc/group

Находим строчку “groupl” с помощью Ctrl + W.

В эту строчку добавляем наших пользователей superuser и user.

Создаем папки для пользователей:

testServer$ sudo mkdir /srv/ftp/upload

testServer$ sudo mkdir /srv/ftp/superuser

testServer$ sudo mkdir /srv/ftp/user

Задаем права доступа для папок:

testServer$ sudo chmod 700 /srv/ftp/superuser

testServer$ sudo chmod 770 /srv/ftp/user

testServer$ sudo chmod 575 /srv/ftp/upload

Меняем владельцов папок:

testServer$ sudo chown superuser: /srv/ftp/superuser

testServer$ sudo chown user:groupl /srv/ftp/user

testServer$ sudo chown:groupl /srv/ftp/upload

Таким образом, у нас получается следующая картина:

  1. К папке superuser имеет доступ только пользователь superuser, он же является владельцем этой папки
  2. К папке user имеет доступ как user, так и superuser. Это из-за того, что мы выставили права 77 0. Вторая семерка устанавливает полные права для группы пользователей groupl, в которую мы добавили superuser.
  3. К папке upload полный доступ имеют как user, так и superuser. Для всех остальных установлены только права на чтение и выполнение 5 75 . 5 = 101 (в двоичной системе). 101 ~ r-x. То есть остальные пользователи (а к ним относится анонимный) не могут ничего записывать в папке upload.

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

testServer$ ls -l /srv/ftp

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

ftp://172.16.1.2

В данном случае мы попадаем как анонимный пользователь, так как не вводим имя и пароль.

Видим три папки superuser/, upload/, user/. Так как мы зашли под анонимным пользователем доступ есть только к папке upload/.

Для того, чтобы войти под именем суперпользователя вводим:

ftp://[email protected]

Вводим имя пользователя: superuser , пароль: 12345 . Под superuser’ом мы получаем доступ ко всем папкам.

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

ftp://user:[email protected]

Под user’ом мы можем попадать только в папки upload/ и user/ . К папке superuser/ доступ закрыт.

Поддержите проект

Друзья, сайт Netcloud каждый день развивается благодаря вашей поддержке. Мы планируем запустить новые рубрики статей, а также некоторые полезные сервисы.

У вас есть возможность поддержать проект и внести любую сумму, которую посчитаете нужной.