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!