> For the complete documentation index, see [llms.txt](https://spacecore.gitbook.io/wiki/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://spacecore.gitbook.io/wiki/administration-and-backups/install-ftp-server.md).

# Установка FTP-сервера

### Загрузка ProFTPD:

Системы Debian/Ubuntu:

```
apt-get install proftpd
```

CentOS:

```
yum install epel-release
yum install proftpd
```

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

```
service proftpd start
```

### Ограничение FTP-пользователей пределами домашнего каталога.

Данная статья подразумевает работу конфигурацией **ProFTPD** "по умолчанию", а в этом случае **пользователь может выходить за пределы своего домашнего каталога** и, хотя прав на работу с другими папками у него, скорее всего, нет, но при недостаточно строгой конфигурации сервера это может быть угрозой безопасности. Решить эту проблему можно добавив одну строку в файл **proftpd.conf**:

```
DefaultRoot ~
```

Добавить ее можно в конец файла. После сохранения перезапустите **FTP-сервер**:

```
service proftpd restart
```

### **Расположение** proftpd.conf:

&#x20;**Файл настроек proftpd.conf может располагаться в разных местах**, в зависимости от Вашей версии ОС:

{% hint style="warning" %}
**Ubuntu**: /etc/proftpd.conf&#x20;

**Debian**: /etc/proftpd/proftpd.conf&#x20;

**CentOS**: /etc/proftpd.conf
{% endhint %}

### Создание нового FTP-пользователя:

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

```
echo '/bin/false' >> /etc/shells
```

Создайте **нового пользователя**:

```
useradd имя_пользователя -d /home/имя_папки -m -s /bin/false
passwd имя_пользователя
```

Командами выше мы создали пользователя (**имя\_пользователя** нужно заменить на **незанятое имя**) и соответствующую группу, назначили и создали (**ключ -m** можно опустить, если каталог уже существует) домашний каталог **/home/имя\_папки**, а также выбрали **/bin/false** в качестве командной оболочки пользователя, тем самым отключив ее в целях безопасности. Командой **passwd** мы создали пользователю **необходимый пароль**.

{% hint style="success" %}
В большинстве случаев, на данном этапе Вы уже можете подключаться с созданным пользователем к FTP-серверу, который по умолчанию работает на порте **21**.
{% endhint %}

### Дополнительная информация:

#### Доступ к командной оболочке (shell)

Если Вы все-таки хотите **предоставлять пользователю доступ к командной оболочке**, то необходимо указать путь до любой действующей, вместо **/bin/false**, например:

```
/bin/sh
```

или же:

```
/bin/bash
```

Пользователям обычного протокола **FTP** не нужен доступ к **shell**, поэтому, будет безопаснее его не предоставлять.

#### Ограничение прав FTP-пользователя:

При необходимости **Вы можете закрыть права на запись** для пользователя, например, в домашнюю директорию, и оставить их только для какой-нибудь внутренней папки, например **upload**.

От имени **суперпользователя** измените права:

```
chmod 555 /home/имя_папки
mkdir /home/имя_папки/upload
chown имя_пользователя:имя_пользователя /home/имя_папки/upload
```

В данном случае второе **имя\_пользователя** является именем группы, которое по умолчанию совпадает с созданным Вами **именем пользователя**.

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