Почему при подключении домашнего каталога он устанавливается в корневую директорию «/»?

Есть два пользователя: user1 и user2, у обоих установлен /bin/bash. У них дома директории находятся по адресу <code>/var/www/html/mysite.com</code>, но с различием: у user1 это поддиректория <b>img</b>, а у user2 — <b>file</b>. В настройках указано следующее: 

<pre><code>chroot_list_file=/etc/vsftpd/vsftpd.chroot_list
chroot_local_user=YES
local_root=/var/www/html/mysite.com
user_config_dir=/etc/vsftpd/users</code></pre>

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

<pre><code>local_root=/var/www/html/mysite.com/img
local_root=/var/www/html/mysite.com/file</code></pre>

При подключении к user1 всё работает корректно: открывается домашняя директория без возможности перехода выше. Однако при подключении к user2 открывается корневая директория "/", и пользователь имеет возможность перемещаться куда угодно. 

Как можно настроить сервер так, чтобы при подключении к user2 открывался его домашний каталог, и он не имел доступа к другим директориям?
  • 23 ноября 2024 г. 10:03
Ответы на вопрос 1
Ваша проблема, скорее всего, заключается в том, что конфигурация для пользователя `user2` в файле, который вы указываете в `user_config_dir`, не правильно задействует параметр `local_root`, или возможно, есть конфликт между настройками. Вот шаги, которые могут помочь решить эту проблему:

1. **Проверьте файл конфигурации для user2**:
   Убедитесь, что файл конфигурации для `user2` (например, `/etc/vsftpd/users/user2`) содержит правильный путь к домашнему каталогу. Например, он должен выглядеть так:

   ```plaintext
   local_root=/var/www/html/mysite.com/file
   ```

   Убедитесь, что файл настроен правильно, например, без лишних пробелов и символов.

2. **Проверьте права на каталоги**:
   Убедитесь, что у пользователя `user2` есть права на доступ к своему домашнему каталогу. Команда `ls -l` поможет вам проверить права доступа:

   ```bash
   ls -ld /var/www/html/mysite.com/file
   ```

   Убедитесь, что пользователь `user2` имеет права на чтение и выполнение в этой директории.

3. **Проверьте наличие параметра chroot в конфигурации**:
   Убедитесь, что для пользователя `user2` правильно настроен chroot, чтобы он не мог подняться на уровень выше своей домашней директории. Это должно включать:

   ```plaintext
   chroot_local_user=YES
   ```

   Если вы используете `vsftpd.chroot_list`, проверьте, что `user2` действительно указан в этом списке.

4. **Перезагрузите сервис vsftpd**:
   После того как вы внесли изменения, не забудьте перезагрузить сервис vsftpd, чтобы применить изменения конфигурации:

   ```bash
   sudo systemctl restart vsftpd
   ```

5. **Проверьте логи**:
   Если проблема все еще не устранена, посмотрите логи vsftpd (обычно они находятся в `/var/log/vsftpd.log` или `/var/log/syslog`), чтобы увидеть, есть ли там какие-либо сообщения об ошибках, связанные с `user2`.

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