Mensagem de erro "500 OOPS: vsftpd: recusando-se a executar com raiz gravável dentro de chroot ()" - mantenha o usuário preso


19

Até agora, não consegui manter um usuário de FTP preso no diretório do site. Existe uma solução que conserte esse bug e mantenha o usuário preso no diretório?

Minhas configurações vsFTPd que alterei:

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

No final do arquivo, adicionei:

# 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 Settings
pasv_enable=YES
#If your listen_port is 9000 set this range to 7500 and 8500
pasv_min_port=[port range min]
pasv_max_port=[port range max]

O usuário em questão mybloguser,, está preso no diretório do site /srv/www/mybloge este usuário não faz parte do nano /etc/vsftpd.chroot_listarquivo. O diretório inicial do usuário também é o /srv/www/myblogque costumava funcionar no passado.

Eu tentei a allow_writeable_chroot=YESsolução que não funcionou e realmente quebrou o vsFTPd completamente.

Eu tentei:

Como podemos corrigir esse erro e manter o usuário preso no diretório inicial?


De alguma forma, para mim, pelo menos com os usuários "virtuais" ftp, apenas adicionando a configuração allow_writeable_chroot=YESfoi suficiente e realmente funcionou "como esperado" FWIW ...
rogerdpack

Respostas:


18

Para VSFTPD 3,

  1. Vamos para: /etc/vsftpd.conf
  2. e adicione isto:

    allow_writeable_chroot=YES
    

    Basta adicioná-lo se ele ainda não existir.

  3. Reinicie o serviço vsftpd:

    service vsftpd restart
    

E deve funcionar.


3
O interlocutor afirma que ele já tentou e não funcionou; portanto, essa não é uma resposta para sua pergunta.
requist

2
Onde posso ler sobre as implicações de segurança dessa escolha?
flickerfly

trabalhou para mim (isto também foi mencionado no comentário da resposta aceita)
Sverre

16

A verdadeira solução desse problema: a pasta inicial do usuário não deve ser gravável apenas para leitura.

Portanto, se o site do usuário estiver na pasta cat/example.com/http/, ela catdeverá ter chmod 555e tudo ficará OK.


12
Isso não faz sentido. O diretório do usuário não deve ser gravável ??
Kevin Bowen

6
Como exatamente o usuário deve fazer o upload de arquivos se não pode escrever ?!
Cerin

Funciona bem para um ftp anônimo sem direitos de upload, obrigado!
precisa

direita! Agora está tudo bem
user1406691

5
Isso funciona perfeitamente! Basta criar uma casa para o usuário com o chmod 555 e, em seguida, criar uma casa para o site (ou sites), com o chmod 755 ou o que você precisa: tudo funcionará e o usuário terá permissões de gravação.
Lucaferrario #

13

Após uma análise mais aprofundada desta postagem, nos comentários foi publicado um pacote que corrigia meu problema. Você pode procurá-lo pelo meu nome ou pela documentação "Marks": http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/ . Aqui estão meus detalhes de como eu consertei isso ainda mais.

OS USUÁRIOS AINDA ESTÃO JAILED AOS SEUS DIRETÓRIOS DOMÉSTICOS !!!

# ------------------------------------------------------------------------------
# SETUP FTP USERS --------------------------------------------------------------
# ------------------------------------------------------------------------------

# create the ftp users and lock them to the website directories
useradd -d /srv/www/[website/appname] -m [ftp user name]

# set the ftp account passwords
passwd [ftp user name]

# add the ftp users to the www-data user/group
adduser [ftp user name] www-data

# BUG FIX: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
sudo add-apt-repository ppa:thefrontiergroup/vsftpd
sudo apt-get update
sudo 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 jailed
allow_writeable_chroot=YES

# ]]

# restart the service for changes to take effect
sudo service vsftpd restart

#test ftp via secondary terminal window:
ftp [ftp user name]@[server ipaddress] [ftp port]

11
Nota: A solução de Chris adicionará um servidor de pacotes de terceiros à sua lista de repositórios! Por que instalar um servidor FTP seguro e com chroot quando você aceita cegamente pacotes de software estrangeiros a serem instalados em seu sistema. (Chris: Eu não acho que você vai tirar proveito, mas a utilização desta solução IMHO é ruim sysadmining)
reto

1
você tem uma abordagem melhor para resolver esse dilema @reto? Foi uma pequena bagunça para resolver. Obrigado pela ajuda.
Chris Hough

se houver um pacote atualizado da distribuição, eu tentaria usá-lo. A maioria das distribuições fornece backports para versões mais antigas. Se isso não for possível, eu pegaria a fonte do desenvolvedor original e a construí. Se houver um patch flutuando, eu posso aplicá-lo (geralmente eles são pequenos e podem ser verificados manualmente).
reto

Este tópico tem 12.000 visualizações, vamos assumir que 5% usam sua solução e adicionaram seu repo. Você pode facilmente adicionar uma nova versão de um pacote principal com um backdoor integrado. Dentro de uma semana você pode ter acesso a 600 sistemas por aí. Não acho que você faria isso, mas adicionar repositórios de terceiros simplesmente não é muito seguro.
reto

1
Não precisei atualizar do repositório. Para mim, adicionar a linha "allow_writeable_chroot = YES" corrigiu o erro
abumalick

7

De acordo com a resposta anterior "A solução REAL deste problema: a pasta inicial do usuário não deve ser gravada apenas como leitura.". O pensamento geral está certo, mas com uma realização errada.

Abaixo, tentarei dar um exemplo simples:

Para começar, precisamos criar uma topologia do diretório do usuário:

 / home (ro)
   | -algum usuário (rw, 700)
         | -ftp_upload (ro, 555) - ch_rooting aqui, necessário somente leitura por vsftpd :(
           | -temp (rw, 755)
           | -in_box (rw, 755)
           | -out_box (rw, 755)

vsftpd.conf cut:

# Ativar chrooting
chroot_local_user = SIM

# chroot todos os usuários, exceto ouvidos dentro de chroot_list
chroot_list_enable = SIM

# Lista de exceções. Idealmente, ele deve ficar em branco;)
chroot_list_file = / etc / vsftpd / chroot_list

# Mapear o diretório raiz do ftp para o diretório específico
local_root = / home / algum usuário / ftp

Essa configuração funciona muito bem com uma configuração de usuário único . Para multiusuários, a diretiva "user_config_dir" deve ser usada adicionalmente.

** ATUALIZAÇÃO 20/09

------ **

Aqui está uma solução alternativa complicada, não é a melhor idéia para usar, mas ... Se você precisar de uma pasta raiz de ftp gravável, basta inserir comandos de alteração de permissão nos comandos de pré-inicialização e pós-inicialização.

  1. Pré-início - altere as permissões para somente leitura, que o servidor exige (:

  2. Iniciar servidor

  3. Pós-início - altere a permissão para leitura-gravação ou o que você precisa.


Tentei muitas variações, mas não consegui fazê-lo funcionar em um servidor WP. Isso está funcionando para você em uma configuração do WP?
21813 Chris Hough

olhar para a seção de atualização, mauby esta variante pode ajudar u, não é completamente seguro fazê-lo, mas se há outras possibilidades ...
Reishin

1

É praticamente o que toastboy70 mencionou. Faça o diretório ftp-root associado a ftp.ftp e não-gravável (/etc/vsftpd.conf): anon_root = / srv / ftp

Em seguida, faça um filho gravável dir: / srv / ftp / upload


0

Eu precisava adicionar o seguinte ao arquivo /etc/vsftpd.conf:

seccomp_sandbox=NO

E não há necessidade de repo personalizado !!

E descomente a linha:

write_enable=YES

0

A correção simples é fazer o que a mensagem de erro sugere: torne a raiz não gravável e, se precisar ativar os uploads, crie um subdiretório com permissão de gravação. Não são necessárias alterações na configuração.


0

Após 3 horas de pesquisa, entrei no Ubuntu 14.04.2 LTS VSFTPd 3 funcionando. A pasta inicial será visível / home / vimal uma vez acessada com um cliente. Eu entrei com o vimal com privilégios de root. Eu tenho a pasta ftpShare criada, mas não tem muito significado.

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

alguns comandos úteis:

sudo nano /etc/vsftpd.conf
sudo service vsftpd restart
sudo apt-get purge vsftpd
netstat -a | grep ftp
tcp        0        0        *:ftp         *:*        LISTEN
ftp://12.345.23.xxx/  for browser login

Acima significa que o daemon ftp está funcionando

Eu tenho a seguinte configuração:

seccomp_sandbox=no
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
chroot_list_enable=NO
secure_chroot_dir=/var/run/vsftpd/empty
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
allow_writeable_chroot=YES

Depois que o FTP estiver funcionando, você poderá ajustá-lo ainda mais às necessidades específicas, algumas das opções acima têm valores padrão, mas não me lembro exatamente.

Erros vistos no cliente FTP:

1. 500 OOPS: prctl PR_SET_SECCOMP falhou

Solução.

seccomp_sandbox=no    

[adicione-o na primeira linha vsftpd.conf, após o término da seção comentada inicial]

2. 500 OOPS: vsftpd: recusando-se a executar com raiz gravável dentro de chroot ()

allow_writeable_chroot=YES

Eu adicionei na última linha.


0

Resolvi o problema do vsFTPd recusando-se a executar com uma raiz gravável dentro do chroot () no meu servidor Ubuntu da seguinte maneira:

Acabei de adicionar a linha abaixo no vsftpd.confarquivo:

allow_writeable_chroot=YES
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.