LINUX.ORG.RU
ФорумAdmin

Настройка vsftpd

 , ,


0

2

Мне нужно настроить vsftpd так, чтобы к нему мог подключаться только anonimous, чтобы он мог как читать, так и писать, и чтобы он не мог выходить за пределы директории /home/ftp, что я ему выделил.

Текущий конфиг:

$ grep -v '#' /etc/vsftpd.conf
listen=YES
listen_ipv6=NO
anonymous_enable=YES
local_enable=NO
write_enable=YES
local_umask=022
anon_upload_enable=YES
anon_mkdir_write_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO

utf8_filesystem=YES

hide_ids=YES

anon_root=/home/ftp
no_anon_password=YES
allow_writeable_chroot=YES

Домашняя директория у пользователя ftp стандартная, директорию /home/ftp я создал руками и поменял на ftp:ftp, но не назначал домом.

При попытке зайти под ftp или anonimous пишет ошибку: “500 OOPS: vsftpd: refusing to run with writable root inside chroot ()”

Короче, по итогу у меня такой конфиг:

vsevolod@hp15ubuntu1804:~$ cat /etc/vsftpd.conf
listen=YES
listen_ipv6=NO
anonymous_enable=YES
local_enable=NO
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
anon_root=/home/ftp
no_anon_password=YES
hide_ids=YES
utf8_filesystem=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
write_enable=YES
connect_from_port_20=YES
anon_umask=022

И вот такая ерунда с файлами:

vsevolod@hp15ubuntu1804:~$ ls -la /home | grep ftp
dr-xr-xr-x  3 ftp      ftp       4096 мар 18 17:25 ftp
vsevolod@hp15ubuntu1804:~$ ls -la /home/ftp
итого 12
dr-xr-xr-x 3 ftp  ftp  4096 мар 18 17:25 .
drwxr-xr-x 5 root root 4096 мар 18 16:00 ..
drwxrwxrwx 2 ftp  ftp  4096 мар 18 17:25 share

Одни костыли, словом.

Vsevolod-linuxoid ★★★★★ ()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)
Ответ на: комментарий от Vsevolod-linuxoid
anon_root=/home/ftp
vsevolod@hp15ubuntu1804:~$ ls -la /home | grep ftp
dr-xr-xr-x  3 ftp      ftp       4096 мар 18 17:25 ftp

Надо:

chown root:root /home/ftp
Корневой для vsftp должен быть root-овым.

LaLe ()
Ответ на: комментарий от Vsevolod-linuxoid

Серьёзно или не серьёзно - это не интересно. В домашний каталог для vsftp записывать как бы запрещено. А вот в подкаталоги - сколько угодно. Постоянно печатают, что надо, мол с корня снять разрешения на запись. Но лично мне это не очень-то помогало. А как сменишь владельца на корневой, так сразу всё хорошо.

When trying to chroot vsftpd users with the chroot_local_user=YES flag set in vsftpd.conf, I get error «500 OOPS: vsftpd: refusing to run with writable root inside chroot()» when trying to login.

Resolution

The use of chroot_local_user=YES is not a recommended configuration. If you require chroot_local_user=YES functionality you should be aware of the security concerns.

Options for avoiding this error:

Remove write permissions from the user's home directory with chmod. Please be aware this will have implications outside of vsftpd.

Raw

chmod a-w /home/<username>

If you require this option AND cannot remove write access from the user's home directory, you may be able to override this security restriction with the directive 'allow_writeable_chroot=YES'. This option is not recommended and you should be aware of the security implications.

Do not use chroot_local_user=YES and instead provide separate ftp directories for users outside of their home directory. The following article can help with this configuration.

How to set up VSFTP to chroot only for specific users? https://access.redhat.com/solutions/1346983

There is a case that the same error message is output when /usr/share/empty doesn't have proper permission. The permission is 555 by default. If it's not, try changing the permission back to 555.

LaLe ()
Ответ на: комментарий от Vsevolod-linuxoid

У меня вот так щас, вообще стандарт:

# /etc/vsftpd.conf
listen=NO
listen_ipv6=YES
anonymous_enable=YES
local_enable=YES
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
$ ls -l /srv/
итого 4
drwxr-xr-x 2 root ftp 4096 мар 17 01:55 ftp

Адрес: ftp://mandala-la.tk/ Но у меня анонимус только читает, а больше я не заморачивался.

mandala ★★★★ ()
Ответ на: комментарий от Vsevolod-linuxoid

Ну ты добейся хотя бы чтения, пока у тебя отлуп, потом добавляй уже опции для письма:

anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

А потом что там еще хочешь.

mandala ★★★★ ()
Ответ на: комментарий от mandala

Я уже добавил эти опции. Просто вместо /home/ftp буду использовать /home/ftp/share. Мой текущий конфиг в треде, а не в ОП.

Vsevolod-linuxoid ★★★★★ ()
Ответ на: комментарий от mandala

Прямо сейчас у меня так:

vsevolod@hp15ubuntu1804:~$ cat /etc/vsftpd.conf
listen=YES
listen_ipv6=NO
anonymous_enable=YES
local_enable=NO
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
secure_chroot_dir=/var/run/vsftpd/empty
pam_service_name=vsftpd
rsa_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
ssl_enable=NO
anon_root=/home/ftp
no_anon_password=YES
hide_ids=YES
utf8_filesystem=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
write_enable=YES
connect_from_port_20=YES
anon_umask=022
chroot_local_user=YES
vsevolod@hp15ubuntu1804:~$ ls -la /home | grep ftp
dr-xr-xr-x  3 ftp      ftp       4096 мар 18 17:25 ftp
vsevolod@hp15ubuntu1804:~$ ls -la /home/ftp
итого 12
dr-xr-xr-x 3 ftp  ftp  4096 мар 18 17:25 .
drwxr-xr-x 5 root root 4096 мар 18 16:00 ..
drwxrwxrwx 2 ftp  ftp  4096 мар 18 18:21 share

Vsevolod-linuxoid ★★★★★ ()
Ответ на: комментарий от mandala

Ладно, сейчас проверю. Оно сейчас работает, к слову, но только в режиме 555. Да, и /home/ftp не является хомяком для ftp, несмотря на название. Просто у меня корень маленький, вот и пришлось в /home директорию размещать.

Vsevolod-linuxoid ★★★★★ ()
Последнее исправление: Vsevolod-linuxoid (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.