> 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/ua/administration-and-backups/install-ftp-server.md).

# Встановлення FTP-сервера

Встановіть і створіть користувача 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:

Файл конфігурації proftpd.conf може бути розташований у різних місцях залежно від версії вашої ОС:

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

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

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

### Створення нового користувача FTP:

Простим користувачам FTP не потрібно мати доступ до shell. Перш ніж почати створювати нових користувачів, виконайте таку команду:

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

### Створіть нового користувача:

```
useradd username -d /home/username - m -s /bin/false
passwd user_name
```

Використовуючи наведені вище команди, ми створили користувача (ім'я користувача має бути замінено на вільне ім’я) і відповідну групу, призначили та створили (ключ -m можна пропустити, якщо каталог уже існує) домашній каталог /home/ім'я поштової скриньки, а також вибрали /bin/false як командний shell користувача, таким чином вимкнувши його з міркувань безпеки. За допомогою команди passwd ми створили для користувача необхідний пароль.

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

### Додаткова інформація:

#### Доступ до Shell (shell)

Якщо ви все ще хочете надати користувачеві доступ до shell, ви повинні вказати шлях до будь-якої робочої, замість /bin/false, наприклад:

```
/bin/sh
```

Або:

```
/bin/bash
```

Користувачам звичайного протоколу FTP не потрібно мати доступ до shell, тому безпечніше його не надавати.&#x20;

За необхідності Ви можете закрити права на запис для користувача, наприклад, у домашню директорію, і залишити їх тільки для якої-небудь внутрішньої папки, наприклад upload.

Від імені суперкористувача змініть права:

```
chmod 555 /home/folder_name
mkdir /home/folder_name/upload
chown username:username /home/foldername/upload
```

У даному випадку друге ім'я\_користувача є ім'ям групи, яке за замовчуванням збігається зі створеним Вами ім'ям користувача.

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


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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, and the optional `goal` query parameter:

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

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

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.
