Создать нового пользователя vsftpd и заблокировать (указать) домашний каталог / каталог входа

31

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

Я создал пользователя с помощью useradd [user_name]и дал ему пароль с помощью passwd [password].

Я создал каталог, /var/ftpа затем привязал его к каталогу, доступ к которому я хочу ограничить.

Что еще мне нужно сделать, чтобы убедиться, что когда этот пользователь входит в FTP, у него есть доступ только к этому каталогу, пожалуйста?

zigojacko
источник
Извините, но вы когда-нибудь задумывались проверить vsftpd.conf?
13
Да. Я имею. Это не говорит мне, как поручить конкретному пользователю войти в определенный каталог ...?
zigojacko
1
Конечно? опция chroot_list_enable ... Или вы хотите переопределить каталог, отличный от $ HOME?
13
1
Я хочу знать, как объявить определенный домашний каталог для конкретного пользователя. Я включил chroot_list_enableи создал /etc/vsftpd/chroot_list. Я просто не знал, что делать дальше.
zigojacko
Затем usermod, чтобы изменить homedir пользователя.
13

Ответы:

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 = / и т.д. / vsftpd.chroot_list

Только перечисляйте пользователей в vsftpd.chroot_listфайле, если вы хотите, чтобы у них был полный доступ к любому месту на сервере. Не перечисляя их в этом файле, вы хотите ограничить всех vsftpdпользователей указанным домашним каталогом.

Другими словами (для справки): -

  1. означает, что по умолчанию ВСЕ пользователи получают chroot, кроме пользователей в файле ...
    • chroot_local_user = ДА
    • chroot_list_enable = ДА
  2. означает, что по умолчанию ТОЛЬКО пользователи в файле получают доступ к файлам ...
    • chroot_local_user = НЕТ
    • chroot_list_enable = ДА
zigojacko
источник
Почему бы не установить домашний каталог этого пользователя напрямую /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 / user_name'

Просто мои два цента, если у кого-то еще была такая же проблема.

gnaanaa
источник
Я следовал этой процедуре, чтобы изменить корневой каталог vsftpd, включая дополнительные шаги gnaanaa. К сожалению, это пока не работает. Filezilla сообщает 530 Логин неверный. Пользователь и пароль соответствуют описанной выше процедуре (имя_пользователя). Я создал тестового пользователя ftp2 и установил его пароль. Обычный вход в Filezilla использует это имя пользователя и пароль. Я также установил корневой каталог только для чтения и создал каталог более низкого уровня с разрешениями на запись в соответствии с этим постом. Я использую Ubuntu 16.04, если это имеет какое-то значение.
Тим11г
Я использую 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