Створіть нового користувача vsftpd та заблокуйте його (вкажіть) головну / вхідну каталог


31

Мені потрібно періодично надавати тимчасовий і обмежений доступ до різних каталогів на Linux-сервері CentOS, на якому встановлено vsftp.

Я створив користувача, використовуючи useradd [user_name]і давши їм пароль, використовуючи passwd [password].

Я створив каталог /var/ftpі потім прив’язую його до каталогу, до якого хочу обмежити доступ.

Що ще мені потрібно спеціально зробити для того, щоб, коли цей користувач увійшов у FTP, він отримав доступ до цього каталогу, будь ласка?


Вибачте, але ви коли-небудь думали перевірити vsftpd.conf?
jirib

Так. Я маю. Це не говорить мені, як доручити конкретному користувачеві увійти до конкретного каталогу ...?
zigojacko

1
Впевнені? параметр chroot_list_enable ... Або ви хочете перекрити каталог, відмінний від $ HOME?
jirib

1
Я хочу знати, як оголосити певний домашній каталог для конкретного користувача. Я ввімкнув chroot_list_enableі створив /etc/vsftpd/chroot_list. Я просто не знав, що робити далі.
zigojacko

Потім користувальницький модуль змінить homedir користувача.
jirib

Відповіді:


44

Повна відповідь, яка вирішила моє запитання для будь-яких інших, які переходили крок за кроком покроково ...

Встановіть, vsftpdвикористовуючи це як посібник .

  • Створіть користувача за допомогою useradd [user_name].
  • Створіть пароль користувача за допомогою passwd [user_name]. (Вам буде запропоновано вказати пароль).
  • Створіть у FTP-каталог, /var/ftpа потім прив’яжіть до домашнього каталогу, який ви хочете вказати для цього користувача mount --bind /var/www/vhosts/domain.com/ /var/ftp/custom_name/.
  • Змініть домашній каталог користувача на usermod -d /var/ftp/custom_name/ user_name

    Упевніться /etc/vsftpd/vsftpd.conf, що встановлено всі наступне:

    • chroot_local_user = ТАК
    • chroot_list_enable = ТАК
    • chroot_list_file = / etc / vsftpd.chroot_list

Перераховуйте лише користувачів у vsftpd.chroot_listфайлі, якщо ви хочете, щоб вони мали повний доступ до будь-якої точки сервера. Не перераховуючи їх у цьому файлі, ви говорите, що обмежте всіх vsftpdкористувачів їх домашнім каталогом.

Іншими словами (для довідки): -

  1. означає, що за замовчуванням усі користувачі отримують хроніку, крім користувачів у файлі ...
    • chroot_local_user = ТАК
    • chroot_list_enable = ТАК
  2. означає, що за замовчуванням ТОЛЬКІ користувачі у файлі отримують хроніку ...
    • chroot_local_user = НІ
    • chroot_list_enable = ТАК

Чому б не встановити домашній каталог цього користувача безпосередньо на /var/www/vhosts/domain.com/? Чи є з цим певна проблема (як і будь-які потенційні ризики)?
leemes

2
Щойно я з’ясував, що схоже, що vsftp забороняє надавати користувачам ftp право на запис на верхній рівень chroot з міркувань безпеки (але я не впевнений на 100%). Тож це може бути причиною для цього "непрямості", щоб дозволити користувачеві ftp записати доступ до певної папки, не дозволяючи переглядати жодну папку братів і сестер (що було б у випадку, якщо ви просто встановите його домашній рівень на один рівень вгору, який уникає згаданого питання). (див. ubuntuforums.org/… )
leemes

2
@zigojacko бачить ваш користувач лише призначений домашній директор? Для мене це за замовчуванням користувачу призначений каталог, але вони все ще можуть бачити інші папки і можуть проглядати весь шлях до кореня, хоча лише з доступом до читання.
GraehamF

1
Ця відповідь у поєднанні з unix.stackexchange.com/questions/208960/… була повною відповіддю для мене. Я в кінцевому підсумку створив користувача в групі і обмежив груповий доступ до потрібного каталогу.
GraehamF

10

Для мене це не спрацювало навіть після сказаного. У каталозі вже був встановлений local_root, і все, що я роблю, каталог користувача не в'язнився. Нарешті, це працює після лише зміни

chroot_local_user = ТАК

І наступна процедура

  1. vi /etc/vsftpd.conf
  2. Додайте рядок 'user_config_dir = / etc / vsftpd_user_conf' (без лапок)
  3. mkdir / etc / vsftpd_user_conf;
  4. cd / etc / vsftpd_user_conf
  5. vi user_name;
  6. Введіть рядок 'local_root = / srv / ftp / ім'я користувача'

Всього два мої центи, якщо хтось ще мав те саме питання.


Я дотримувався цієї процедури, щоб змінити кореневий каталог vsftpd, включаючи додаткові кроки від gnaanaa. На жаль, це ще не працює. Filezilla повідомляє 530 Невірна реєстрація. Користувач і пароль відповідають процедурі, описаній вище (ім'я користувача). Я створив тестовий користувач ftp2 і встановив його пароль. Нормальний вхід у Filezilla використовує це ім'я користувача та пароль. Я також встановив кореневий каталог лише для читання та створив каталог нижчого рівня з дозволами на запис відповідно до цього поста, я використовую Ubuntu 16.04, якщо це має значення.
tim11g

Я використовую Ubuntu 16.04, якщо це має значення, @gnaanaa. Також я подумав, що це дивно, що в / var немає ftp-каталогу. Тому мені довелося створити / var / ftp, а потім / var / ftp / user_name. code<br/> Відповідь: 220 (vsFTPd 3.0.3) <br/> Команда: USER ftp2 <br/> Відповідь: 331 Вкажіть пароль. <br/> Команда: PASS ***** <br/> Відповідь : 530 Неправильний вхід. <br/> Помилка: Критична помилка: Не вдалося підключитися до сервера <br/>code
tim11g

По-перше, подивіться, чому ви не змогли увійти на сервер. Налагодити проблему із в'язницею можна лише після входу в систему. Ура.
gnaanaa

Чи vsftp використовує іншого користувача / пароля порівняно з обліковими записами на машині? Я виявив, що паролі smb потрібно встановлювати окремо за допомогою smbpasswd -a. Чи працює vsftpd однаково?
tim11g

Ні, це обліковий запис користувачів системи. перевірити цю відповідь: askubuntu.com/questions/413677/vsftpd-530-login-incorrect
gnaanaa
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.