Eu preciso ser capaz de adicionar usuários virtuais ao vsftpd que só têm acesso a uma subpasta. A razão pela qual eu quero usar usuários virtuais é que eu só quero ter um usuário real no servidor.
A estrutura do FTP é:
www
website_name1
sub_folder1
website_name2
sub_folder2
sub_folder3
website_name3
website_name4
A conta principal tem acesso à pasta www e a todos os subdiretórios e desejo adicionar um usuário virtual que possa ter acesso à subpasta1 e apenas à subpasta1
Além disso, para evitar confusão, eu também exigiria que outro usuário acessasse sub_folder3 e apenas sub_folder3 . O que quero dizer é que preciso escolher qual pasta e subpastas um usuário por usuário.
Encontrei maneiras de adicionar usuários para ver as pastas nomeadas do usuário ou da estrutura inteira, ambas as quais não me servem.
Encontrei uma pergunta semelhante postada aqui:
Como configurar o VSFTPD para vários usuários, incluindo a adição de diretórios específicos
mas recomenda proftpd
que, em geral, eu era menos seguro.
Ou eu perdi o ponto aqui?
fonte
Respostas:
Com um pouco de brincadeira, consegui encontrar uma solução semi (não perfeita, mas boa o suficiente)
usando 2707974 resposta e informações que adquiri em outros lugares onde consegui o que precisava.
Primeiro você precisa do vsftp e PAM instalado
Edite /etc/vsftpd.conf
depois cole no seguinte
Edite para suas necessidades exatas, o bit mais importante para usuários virtuais é tudo após o comentário das configurações do usuário virtual
Criando Usuário
Você pode usar um banco de dados ou
htpasswd
eu acheihtpasswd
mais rápido e fácil de usar.crie um diretório para armazenar seus usuários
adicionar usuários adicionais apenas omite o
-c
Eu só consegui fazê-lo funcionar usando o CRYPT, que limita a 8 caracteres para usar mais de 8 caracteres, use openssl para gerar um hash e canal compatível diretamente no htpasswd
Depois que seus usuários são criados, agora você pode alterar seu arquivo de configuração do PAM
e remova tudo dentro deste arquivo e substitua pelo seguinte
Isso permitirá o login para seus usuários virtuais definidos
/etc/vsftpd/ftpd.passwd
e desabilitará os usuários locaisEm seguida, precisamos adicionar um usuário para esses usuários virtuais usarem. Esses usuários não terão acesso ao shell e serão chamados
vsftpd
o usuário deve corresponder
guest_username=vsftpd
no arquivo conf vsftpdDefinindo acesso ao diretório
A linha importante aqui é a seguinte
isso significa que, ao fazer
user1
login, ele procurará o seguinte arquivoeste arquivo é o mesmo que o
vsftpd.conf
para que você possa definir um novolocal_root
voltando à pergunta à qual queremos
user1
ter apenas acessovar/www/website_name1/sub_folder1
, precisamos criar avsftpd_user_conf
pasta:Agora crie o arquivo do usuário:
e insira a seguinte linha
Agora reinicie o vsftp
agora você deve conseguir fazer login como usuário1, que só poderá ver
var/www/website_name1/sub_folder1
e qualquer pasta e arquivo dentro dele.É agora que você pode adicionar quantos usuários quiser e limitar o acesso deles à pasta que desejar.
É importante lembrar que, se você não criar um arquivo conf do usuário, ele será padronizado para a pasta var / www como raiz (no exemplo acima)
Se a subpasta tiver a intenção de ser modificável pelo usuário, pode ser necessário alterar o proprietário da subpasta compartilhada:
fonte
Tente com este manual. Talvez funcione para você.
Como fazer isso
Instale vsftpd e uma biblioteca PAM
Editar
/etc/vsftpd.conf
e/etc/pam.d/vsftpd
Crie contas de usuário com diretórios personalizados (em / var / www / por exemplo)
Definir diretórios com a correta
chmod
echown
Crie um usuário administrador com acesso total ao servidor
vsftpd
(Very Secure FTP Deamon) elibpam-pwdfile
crie usuários virtuaisEu queria criar usuários de FTP, mas não queria adicionar usuários unix locais (sem acesso ao shell, sem diretório inicial e assim por diante). Um PAM (Módulos de autenticação conectáveis) ajudará você a criar usuários virtuais.
sudo apt-get install vsftpd libpam-pwdfile
vsftpd.conf
Primeiro você precisa fazer o backup do arquivo original
sudo mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
Em seguida, crie um novo
sudo vim /etc/vsftpd.conf
Copie e cole as seguintes linhas. O arquivo deve conter SOMENTE estas linhas:
Para registrar um usuário que você usa
htpasswd
, presumo que você estejaapache2
trabalhando no seu servidor. Crie umavsftpd
pasta e coloque os arquivos de configuração nela.sudo mkdir /etc/vsftpd
então
sudo htpasswd -cd /etc/vsftpd/ftpd.passwd user1
-c significa que criaremos o arquivo se ele ainda não existir -d força o MD5, você precisa dele no ubuntu 12.04, use-o sempre
O comando solicitará uma senha.
Se você deseja adicionar novos usuários posteriormente:
sudo htpasswd -d /etc/vsftpd/ftpd.passwd user2
/etc/pam.d/vsftpd
Novamente, você precisa fazer backup do arquivo original
sudo mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
e crie um novo
sudo vim /etc/pam.d/vsftpd
Copie e cole essas 2 linhas (esse deve ser o único conteúdo). Insisto apenas nessas duas linhas, perdi muito tempo mantendo os originais e apenas os adicionei.
sudo useradd --home /home/vsftpd --gid nogroup -m --shell /bin/false vsftpd
Você pode verificar se ele foi criado com o comando id: id vsftpd. Definimos o usuário com o shell / bin / false por causa do parâmetro check_shell (mesmo que você não o use). Quando o usuário final se conectar ao servidor FTP, eles serão usados para direitos e propriedade:
chmod
echown
.vsftpd
A maneira comum é usar o init.d como todos os deamon
sudo /etc/init.d/vsftpd restart
sudo service vsftpd restart
De acordo com a configuração, todos os usuários serão colocados nesta pasta: / var / www / user1.
Você precisa criá-los com direitos específicos: a pasta raiz não pode ser gravável!
Nota: o usuário não pode criar arquivos ou pastas no diretório raiz.
No
vsftpd.conf
que temoschroot_local_user=YES
, o usuário não pode ver nada fora de sua pasta. Para ele, o servidor fica assim:Então, basta executar estes comandos:
A
/var/www/user1
pasta TEM QUE EXISTIR ou a conexão falhará.Agora você pode tentar se conectar ao seu FTP
Para criar um usuário administrador, precisamos registrar um novo usuário
htpasswd
.Antes de fazer isso, aconselhamos que você verifique o
/etc/ftpusers
arquivo que define certos usuários que não têm permissão para se conectar ao ftp. Eu acho que é apenas para usuários locais e não para usuários virtuais, mas por precaução, não escolha um nome contido neste arquivo.sudo htpasswd -d /etc/vsftpd/ftpd.passwd theadmin
Agora precisamos adicionar uma nova linha no
/etc/vsftpd.conf
chroot_list_enable=YES
Isso significa que seu usuário será colocado em sua pasta (como uma prisão), EXCETO usuários no diretório / etc /
vsftpd.chroot_list
Vamos criar este arquivo e adicionar nosso usuário, o arquivo é uma linha simples que contém "theadmin". Adicione um usuário por linha. Isso significa que você NÃO precisa criar uma
/var/www/theadmin
pasta, o usuário fará o login e iniciará/home/vsftpd
.Reinicie o servidor e pronto!
fonte
sim, você pode e, para flexibilidade, crie um diretório e arquivo userconfig,
mkdir /var/www/userconfs
ou o que você quiser alterar para o nome userconfs e, em seguida, crie um arquivo específicotipo interno,
local_root=/var/www
(ou o que você quiser acessar por dir)guest_username=www-data
(o proprietário do ubuntu do arquivoapós a atualização você vsftpd.conf adicionando
user_config_dir=/var/www/userconfigs
(ou o que você substituiu como, esta conta acessará o que sdir yo especificou)fonte