Сообщение об ошибке "500 OOPS: vsftpd: отказ от запуска с корнем, доступным для записи, внутри chroot()" - держать пользователя в тюрьме

До сих пор мне не удавалось привязать пользователя FTP к каталогу их веб-сайта. Существует ли решение, которое одновременно исправляет эту ошибку и удерживает пользователя в заключении в своем каталоге?

Мои настройки vsFTPd, которые я изменил:

listen_port=9000Set: anonymous_enable=NOUncomment: local_enable=YESUncomment: write_enable=YESUncomment: local_umask=022Set: connect_from_port_20=NOUncomment: idle_session_timeout=600Uncomment: data_connection_timeout=120Comment out: #ftpd_banner=Welcome to blah FTP service. [should be on line 104]Added: banner_file=/etc/issue.netUncomment: chroot_local_user=YESUncomment: chroot_local_user=YESUncomment: chroot_list_enable=YESUncomment : chroot_list_file=/etc/vsftpd.chroot_list

В конце файла я добавил:

# Show hidden files and the "." and ".." folders.# Useful to not write over hidden files:force_dot_files=YES# Hide the info about the owner (user and group) of the files.hide_ids=YES# Connection limit for each IP address:max_per_ip=10# Maximum number of clients:max_clients=5# FTP Passive Settingspasv_enable=YES#If your listen_port is 9000 set this range to 7500 and 8500pasv_min_port=[port range min]pasv_max_port=[port range max]

Пользователь, о котором идет речь, mybloguser, помещен в тюрьму в каталог ее / его веб-сайта под /srv/www/myblog и этот пользователь не является частью nano /etc/vsftpd.chroot_list файл. Домашний каталог пользователя также /srv/www/myblog который раньше работал в прошлом.

Я попробовал allow_writeable_chroot=YES решение, которое не сработало и фактически полностью сломало vsFTPd.

Я пытался:

Как мы можем исправить эту ошибку и сохранить пользователя в домашнем каталоге?

Для VSFTPD 3,

  1. Идти к: /etc/vsftpd.conf
  2. и добавьте это:

    allow_writeable_chroot=YES

    Просто добавьте его, если он еще не существует.

  3. Перезапустите службу vsftpd:

    service vsftpd restart

И это должно сработать.

Реальное решение этой проблемы: домашняя папка пользователя должны не быть доступным для записи только для чтения.

Итак, если пользовательский сайт находится в папке, которая cat/example.com/http/, папка cat необходимо иметь chmod 555 и все будет хорошо.

После дальнейшего рассмотрения этого поста в комментариях был опубликован пакет, который устранил мою проблему. Вы можете искать его либо по моему имени, либо по документации "Marks".: http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/. Вот мои подробности о том, как я исправил это дальше.

ПОЛЬЗОВАТЕЛИ ПО-ПРЕЖНЕМУ ЗАКЛЮЧЕНЫ В ТЮРЬМУ В СВОИХ ДОМАШНИХ КАТАЛОГАХ!!!

# ------------------------------------------------------------------------------# SETUP FTP USERS --------------------------------------------------------------# ------------------------------------------------------------------------------# create the ftp users and lock them to the website directoriesuseradd -d /srv/www/[website/appname] -m [ftp user name]# set the ftp account passwordspasswd [ftp user name]# add the ftp users to the www-data user/groupadduser [ftp user name] www-data# BUG FIX: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()sudo add-apt-repository ppa:thefrontiergroup/vsftpdsudo apt-get updatesudo apt-get install vsftpd# Edit the vsftpd.conf and append this setting to the end of the file to keep users' jailed!nano /etc/vsftpd.conf# add all of the text between the starting [[ and ending ]]# [[# Keep non-chroot listed users jailedallow_writeable_chroot=YES# ]]# restart the service for changes to take effectsudo service vsftpd restart#test ftp via secondary terminal window:ftp [ftp user name]@[server ipaddress] [ftp port]

Согласно предыдущему ответу "РЕАЛЬНОЕ решение этой проблемы: домашняя папка пользователя не должна быть доступна для записи, только для чтения". Общее мышление правильное, но с неправильной реализацией.

Ниже я попытаюсь привести простой пример:

Для начала нам нужно построить топологию пользовательского каталога:

 /home (ro) |-someuser (rw,700) |-ftp_upload (ro,555) - ch_rooting здесь, требуется только для чтения vsftpd :( |-temp (rw,755) |-in_box (rw,755) |-out_box (rw,755)

vsftpd.conf вырезать:

# Включить chrootingchroot_local_user=ДА# chrooting всех пользователей, кроме прослушиваемых внутри chroot_listchroot_list_enable=ДА# Список исключений. В идеале он должен быть пустым ;)chroot_list_file=/etc/vsftpd/chroot_list# Сопоставьте корневой каталог ftp с определенным directorylocal_root=/home/someuser/ftp

Эта конфигурация отлично работает с однопользовательский конфигурация. Для многопользовательской работы дополнительно следует использовать директиву "user_config_dir".

**ОБНОВЛЕНИЕ ОТ 20/09

------**

Вот хитрый обходной путь, не лучшая идея для использования, но .... Если вам нужна доступная для записи корневая папка ftp, просто вставьте команды изменения разрешений в команды перед запуском и после запуска.

  1. Предварительный запуск - измените разрешения на только для чтения, которые требуются серверу (:

  2. Запуск сервера

  3. После запуска - измените разрешение на чтение-запись или то, что вам нужно.

Это в значительной степени то, о чем упоминал toastboy70. Сделайте ftp-корневой каталог chown'd для ftp.ftp и недоступный для записи (/etc/vsftpd.conf):anon_root=/srv/ftp

Затем создайте дочерний каталог, доступный для записи: /srv/ftp/upload

Мне также нужно было добавить следующее в файл /etc/vsftpd.conf:

seccomp_sandbox=NO

И нет необходимости в пользовательском репозитории!!

И раскомментируйте строку:

write_enable=YES

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

После 3 часов поисков в Google я получил работающий Ubuntu 14.04.2 LTS VSFTPd 3.Домашняя папка будет видна /home/vimal после доступа с помощью клиента.Я вошел в систему с помощью vimal с правами root.У меня есть созданная папка ftpShare, но она не имеет большого значения.

sudo chown vimal:vimal /home/vimal/ftpShare/

некоторые полезные команды:

sudo nano /etc/vsftpd.confsudo service vsftpd restartsudo apt-get purge vsftpdnetstat -a | grep ftptcp        0        0        *:ftp         *:*        LISTENftp://12.345.23.xxx/  for browser login

Вышеизложенное означает, что ftp-демон работает

У меня есть следующая конфигурация:

seccomp_sandbox=nolisten=YESanonymous_enable=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESuse_localtime=YESxferlog_enable=YESconnect_from_port_20=YESchroot_local_user=YESchroot_list_enable=NOsecure_chroot_dir=/var/run/vsftpd/emptyrsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.keyallow_writeable_chroot=YES

Как только FTP заработает, вы можете дополнительно настроить его в соответствии с конкретными потребностями, некоторые из вышеперечисленных имеют значения по умолчанию, но я точно не помню.

Ошибки, обнаруженные в FTP-клиенте:

1. 500 УПС: сбой prctl PR_SET_SECCOMP

Решение.

seccomp_sandbox=no    

[добавьте его в самую первую строку vsftpd.conf, после завершения начального раздела с комментариями]

2. 500 УПС: vsftpd: отказ от запуска с корнем, доступным для записи, внутри chroot()

allow_writeable_chroot=YES

Я добавил это в последней строке.

Я решил проблему с отказом vsFTPd запускаться с корнем, доступным для записи, внутри chroot() на моем сервере Ubuntu следующим образом:

Я только что добавил нижеприведенную строку в vsftpd.conf файл:

allow_writeable_chroot=YES