Ограничьте доступ по FTP только к / var / www с помощью vsftpd

41

Я использую vsftpd в качестве сервера ftp на моем linux (rasbian), я вхожу в систему от имени пользователя root.

Я хотел бы все еще использовать только / var / www, как я могу сконфигурировать vsftpd conf для этого?

Бадр Хари
источник
1
Проверьте chroot параметры vsftpd.confи создайте отдельного пользователя, для которого homedir установлен в /var/www.
Джириб

Ответы:

65

Способ 1: изменение домашнего каталога пользователя

Убедитесь, что следующая строка существует

chroot_local_user=YES

Установите для пользователя HOME Directory значение /var/www/, если вы хотите изменить существующего пользователя, тогда вы можете использовать:

usermod --home /var/www/ username

затем установите необходимые разрешения на /var/www/

Способ 2: использование user_sub_token

Если вы не хотите менять домашний каталог пользователя, вы можете использовать:

chroot_local_user=YES
local_root=/ftphome/$USER
user_sub_token=$USER

О себе user_sub_token:

Автоматически создавать домашний каталог для каждого виртуального пользователя на основе шаблона. Например, если домашний каталог реального пользователя, указанный с помощью guest_username, равен / ftphome / $ USER, а для user_sub_token задано значение $ USER, то при входе в систему теста виртуального пользователя он завершается (обычно chroot () 'ed) в каталог / ftphome / test. Эта опция также вступает в силу, если local_root содержит user_sub_token.

Создайте каталог и настройте разрешения:

mkdir -p /ftphome/{test,user1,user2}
chmod 770 -R /ftphome
chown -R ftp. /ftphome
usermod -G ftp test

После перезапуска vsftpdи проверки настроек.

Пример успешной работы:

[root@mail tmp]# ftp localhost
Connected to mail.linuxian.local.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> mput vhosts
mput vhosts? 
227 Entering Passive Mode (127,0,0,1,146,41)
150 Ok to send data.
226 File receive OK.
24 bytes sent in 3.3e-05 seconds (7.1e+02 Kbytes/s)
ftp> ls -rlt
227 Entering Passive Mode (127,0,0,1,97,90)
150 Here comes the directory listing.
-rw-r--r--    1 787      787            24 Oct 11 19:57 vhosts
226 Directory send OK.
ftp> 221 Goodbye.
Рахул Патил
источник
2
Обратите внимание, что вы можете иметь суффикс после $USERfor local_root, например, /home/$USER/ftp(который будет выполнять привязку пользователей к ftpподкаталогу их домашнего каталога).
Бенуа Даффес
Обратите внимание на замечания в vsftp FAQ относительно привязки к папке, доступной для записи при входе пользователя в систему. Это весьма вероятно в случае помещения local_rootв настоящий домашний каталог пользователя.
Томас Урбан
Где подтвердить, что существует "chroot_local_user = YES"?
The One
4

Ты можешь это сделать:

usermod --home /var/www/ username
Зеев Коэн
источник
5
От одной до двух строк ответы часто считаются некачественными. Пожалуйста, рассмотрите возможность расширения своего поста с некоторыми пояснениями о том, что делает ваша рекомендация, а также со ссылками или документацией, которые указывают на способность вашей рекомендации реально решить проблему.
HalosGhost
2

Я использовал предложение Рахула Патила выше:

chroot_local_user=YES
local_root=/home/$USER/www-data
user_sub_token=$USER

Но я не мог понять, почему я мог войти только с одним пользователем. Затем я обнаружил, что мы не можем выполнить привязку к корневому каталогу (для этого случая /home/$USER/www-data), у которого есть доступ для записи. Поэтому я удаляю права на запись с помощью:

# chmod a-w /home/$USER/www-data

ПРИМЕЧАНИЕ: изменить $USERс вашим пользователем.

Ризал Рахман
источник
1

Проверьте chrootпараметры vsftpd.confи создайте отдельного пользователя, для которого homedir установлен в /var/www.

jirib
источник
Я хорошо знаю об этом, я создам отдельного пользователя. Я , возможно , переделать мой вопрос , то как я могу ограничить пользователя на отдельный путь только
Бадр Хари
Используйте sftp из OpenSSH. Смотрите man sshd_config для internal-sftp, затем «ForceCommand» и смотрите «ChrootDirectory». Более новый OpenSSH также добавил опцию для sftp-сервера для переключения на определенный путь, поэтому в сочетании с ChrootDirectory вы можете сделать: chroot -> / path -> destination -> 'onlyhere' = / chroot / onlyhere
jirib