Symlink Pure-FTPd não funciona

1

Ok, estou usando o Ubuntu 12.04 LTS e instalei o Pure-FTPd Eu fiz um usuário e um grupo para isso Quando eu logar com um cliente FTP ele me coloca em / home / group / user

Eu quero ter acesso à minha unidade de armazenamento de lá, então eu coloco um link simbólico na pasta que aponta para / media / Store e aparece no FTP, mas não me deixa seguir.

A unidade / media / Store é formatada em NTFS, por isso não posso alterar as permissões.

etc / pure-ftpd / conf tem:

AltLog clf:/

ChrootEveryone yes

Daemonize yes

FSCharset UTF-8

MaxClientsNumber 50

MaxClientsPerIP 2

MinUID 1000

NoAnonymous yes

PAMAuthentication no

PureDB /etc/pure-ftpd/pureftpd.pdb

TrustedGID 1001

UnixAuthentication no

meu arquivo pureftpd.passwd parece quase como

user:x:1001:1001:://usr/group/user/::::::::::::

meu / etc / pure-ftpd-common parece com

# Configuration for pure-ftpd
# (this file is sourced by /bin/sh, edit accordingly)
# STANDALONE_OR_INETD
# valid values are "standalone" and "inetd".
# Any change here overrides the setting in debconf.
STANDALONE_OR_INETD=standalone
# VIRTUALCHROOT: 
# whether to use binary with virtualchroot support
# valid values are "true" or "false"
# Any change here overrides the setting in debconf.
VIRTUALCHROOT=true
# UPLOADSCRIPT: if this is set and the daemon is run in standalone mode,
# pure-uploadscript will also be run to spawn the program given below
# for handling uploads. see /usr/share/doc/pure-ftpd/README.gz or
# pure-uploadscript(8)
# example: UPLOADSCRIPT=/usr/local/sbin/uploadhandler.pl
UPLOADSCRIPT=
# if set, pure-uploadscript will spawn $UPLOADSCRIPT running as the
# given uid and gid
UPLOADUID=
UPLOADGID=

Eu tentei configurações diferentes, mas não consigo sair da pasta de login e para a unidade de armazenamento Eu provavelmente estou sentindo falta de algo simples.

    
por Cyber_GELF 15.09.2013 / 03:08

4 respostas

1

Você já leu o FAQ do Pure-FTPd? link

Infelizmente, links simbólicos (que apontam para fora da pasta chroot do usuário FTP) não são suportados, a menos que você construa a partir da fonte usando a opção --with-virtualchroot.

Como alternativa, você pode alterar o ponto de montagem da unidade de armazenamento de / media / Store para algum lugar dentro de sua hierarquia de pastas FTP, mas isso fará com que desapareça da lista de unidades do Nautilus.

    
por Phoeey 15.09.2013 / 03:21
1

Tudo bem, eu criei um convidado do VirtualBox para testar:

  • 8 GB de VDI, 512 MB de RAM
  • Instale a partir do ubuntu-12.04-desktop-i386.iso
  • / dev / sda1, 7000MB, ext4, montagem /
  • / dev / sda5, 999MB, fat32, mount / media / Store (o NTFS não era uma opção no instalador)
  • / dev / sda6, 587MB, troca
  • Todas as outras configurações padrão, exceto para o fuso horário.
Ack, eu tinha esquecido como a Unity era horrível. :) Eu adicionei Virtual Guest Additions, corri update-manager , esperei por ... 618 atualizações, reinicie. Então eu segui a documentação da comunidade em: link

sudo apt-get install pure-ftpd
    # already installed?
gksudo gedit /etc/inetd.conf
    # no changes required?
gksudo gedit  /etc/default/pure-ftpd-common
    # already: STANDALONE_OR_INETD=standalone
    # changed: VIRTUALCHROOT=true
sudo groupadd ftpgroup
sudo useradd -g ftpgroup -d /dev/null -s /etc ftpuser

NOTA: id ftpuser retorna uid=1001(ftpuser) gid=1001(ftpgroup) groups=1001(ftpgroup) neste ponto.

sudo mkdir /home/ftpusers
sudo mkdir /home/ftpusers/joe
sudo pure-pw useradd joe -u ftpuser -d /home/ftpusers/joe
sudo pure-pw mkdb
sudo ln -s /etc/pure-ftpd/pureftpd.passwd /etc/pureftpd.passwd
sudo ln -s /etc/pure-ftpd/pureftpd.pdb /etc/pureftpd.pdb
sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/PureDB
sudo sh -c 'echo "no" > /etc/pure-ftpd/conf/UnixAuthentication'
sudo chown ftpuser:ftpgroup -R /home/ftpusers
gksudo pureadmin

Confirmado que /etc/pure-ftpd/pureftpd.passwd continha:

joe:...:1001:1001::/home/ftpusers/joe/./::::::::::::

sudo /etc/init.d/pure-ftpd restart
    # Restarting ftp server: Running: /usr/sbin/pure-ftpd-virtualchroot -l pam -l puredb:/etc/pure-ftpd/pureftpd.pdb -E -8 UTF-8 -O clf:/var/log/pure-ftpd/transfer.log -u 1000 -B

Agora consegui ftp localhost como joe.

Primeira tentativa: criei um link simbólico para / media / Store, que joe pôde ver em seu ls / , mas não foi possível cd para (550 Não é possível alterar o diretório para a Loja: Permissão negada):

sudo ln -s /media/Store /home/ftpusers/joe/Store
sudo chown ftpuser:ftpgroup -R /home/ftpusers/joe
    # sudo rm /home/ftpusers/joe/Store
Segunda tentativa: Eu criei um link simbólico para / dev / sda5, que joe poderia ver em seu ls / , mas não poderia cd em (550 Não é possível alterar o diretório para a Loja: Não é um diretório):

sudo ln -s /dev/sda5 /home/ftpusers/joe/Store
sudo chown ftpuser:ftpgroup -R /home/ftpusers/joe
    # sudo rm /home/ftpusers/joe/Store

Isso não foi surpreendente, já que o / dev / sda5 é um repositório de blocos, não um sistema de arquivos, mas eu tentei por risos.

Terceira tentativa: Sendo a alternativa que dei na minha primeira resposta, trabalhei:

sudo mkdir /home/ftpusers/joe/Store
sudo chown ftpuser:ftpgroup -R /home/ftpusers/joe
sudo mount -t vfat -o noexec,ro,uid=1001,gid=1001 /dev/sda5 /home/ftpusers/joe/Store

NOTA: Eu tive que sudo umount /media/Store antes de poder montá-lo em / home / ftpusers / joe / Store.

Para ser duplamente certo que isso também funciona com NTFS, eu sudo umount /home/ftpusers/joe/Store , eu corri o Utilitário de Disco, reformatei a partição como NTFS, montei o volume (que abre no Nautilus), adicionei um arquivo HelloNtfsWorld.txt, desmontei no Utilitário de Disco, o teste acima com o comando mount ligeiramente modificado:

sudo mount -t ntfs -o noexec,ro,uid=1001,gid=1001 /dev/sda5 /home/ftpusers/joe/Store

Perfeito!

ftp> ls -la
200 PORT command successful
150 Connecting to port 53727
drwxr-xr-x    3 1001       ftpgroup         4096 Sep 15 22:12 .
drwxr-xr-x    3 1001       ftpgroup         4096 Sep 15 22:12 ..
drwxrwxrwx    1 1001       ftpgroup         4096 Sep 15 22:36 Store
226-Options: -a -l 
226 3 matches total
ftp> cd Store
250 OK. Current directory is /Store
ftp> ls -la
200 PORT command successful
150 Connecting to port 57505
drwxrwxrwx    1 1001       ftpgroup         4096 Sep 15 22:36 .
drwxr-xr-x    3 1001       ftpgroup         4096 Sep 15 22:12 ..
-rwxrwxrwx    1 1001       ftpgroup            0 Sep 15 22:36 HelloNtfsWorld.txt
226-Options: -a -l 
226 3 matches total
ftp> 

Espero que isso ajude!

    
por Phoeey 15.09.2013 / 14:43
0

Resolvi isso

Eu usei o gksu PureAdmin para editar o ID do usuário e do grupo. O ID do usuário agora corresponde ao meu nome de login do Admin para o Ubuntu O ID do grupo agora é adm

uid = 1000 gid = 4

agora eu posso seguir o symlink

    
por Cyber_GELF 15.09.2013 / 19:49
0

Uma maneira muito fácil é instalar o PureAdmin (que é uma GUI para o Pure-FTPd) a partir do centro de software, mas é importante que você leia isto: link

Portanto, os comandos a serem executados depois são:

sudo ln -s /etc/pure-ftpd/conf/PureDB /etc/pure-ftpd/auth/50pure

sudo vi /etc/pure-ftpd/conf/MinUID (altere o valor para uma figura abaixo de 1000, como 100 por exemplo)

sudo service pure-ftpd restart
    
por max 28.10.2014 / 22:57