Обмежте доступ FTP лише до / var / www за допомогою vsftpd


41

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

Я хотів би все ще заблокувати використання лише / var / www, як я можу налаштувати vsftpd conf для його виконання?


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

Відповіді:


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
Зауважте, що ви можете мати суфікс після $USERдля local_root, наприклад, /home/$USER/ftp(який буде додавати користувачів до ftpпідкаталогу домашнього редактора).
Бенуа Дюффез

Зверніть увагу на зауваження у поширених запитаннях vsftp щодо хронізації в папку, записану користувачем. Увійти в систему. Це дуже ймовірно у випадку введення local_rootу фактичний домашній каталог користувача.
Томас Урбан

Де підтвердити, що "chroot_local_user = ТАК" існує?
Єдиного

4

Ви можете зробити це:

usermod --home /var/www/ username

5
Відповіді від одного до двох рядків часто вважають низькою якістю. Спробуйте розширити свою публікацію, пояснивши, що робить Ваша рекомендація разом із посиланнями чи документацією, що підказує здатність вашої рекомендації реально вирішити проблему.
HalosGhost

2

Я використав пропозицію Рахуля Патіла вище:

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

Але я не міг зрозуміти, чому мені вдалося увійти лише з одним користувачем. Потім я виявив, що ми не можемо chroot до кореневого каталогу (для цього випадку /home/$USER/www-data), який має доступ для запису. Тому я видаляю доступ для запису за допомогою:

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

ПРИМІТКА: змінити $USERзі своїм користувачем.


1

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


Мені це добре відомо, я створю окремого користувача. Я , можливо , переробити моє запитання , то як я можу обмежити користувача на окремий шлях тільки
Бадр Харі

Використовуйте sftp від OpenSSH. Див. Man sshd_config for Internal-sftp, потім 'ForceCommand' та дивись 'ChrootDirectory'. Новіший OpenSSH також додав опцію переходу sftp-сервера на певний шлях, тому в поєднанні з ChrootDirectory можна робити: chroot -> / path -> призначення -> 'onlyhere' = / chroot / onlyhere
jirib
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.