# Установка 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** на **сервере**.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://spacecore.gitbook.io/wiki/administration-and-backups/install-ftp-server.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
