Recentemente, mudei meu site para um VOS CentOS 6 (de um VOS CentOS 5 habilitado para HyperVM). Eu configurei o vsftpd para lidar com as nossas necessidades de FTP. Eu criei um usuário local para todos que precisam usar o FTP. Para meu usuário Joe, ele faz o login com o FileZilla e entra em /home/joe
. Joe pode usar essa pasta para armazenamento privado, mas eu coloquei um link simbólico para que ele possa acessar o armazenamento público em /var/www/html/storage
.
Então, em seu diretório, eu fiz como root:
ln -s /var/www/html/storage/ storage
Por algum motivo, o final /
é necessário, senão storage
aparecerá como um arquivo no FileZilla, em vez de um atalho para um diretório.
De qualquer forma, enquanto em /home/joe
, quando Joe navega para storage
, seu caminho se torna de repente /var/www/html/storage
em vez de /home/joe/storage
. Isso dificulta a navegação de volta para a pasta pai em seu diretório pessoal.
Existe uma maneira de corrigir isso?
chroot
está desativado no meu servidor, e tudo bem. Eu confio em meus usuários, mas é apenas inconveniente para eles serem jogados em volta do sistema de arquivos através dos symlinks. Se eu ativar chroot
, eles não poderão acessar /var/www
.
O mais bizarro é que isso funcionou no meu VPS anterior com o HyperVM. Mas esse usou PureFTP em vez de vsftp. E acho que criou usuários virtuais em vez de usuários locais reais na máquina. Os usuários virtuais precisam ser capazes de fazer links simbólicos da maneira que eu quero?
Outra solução que pesquisei foi usar mount --bind
, mas não tenho certeza se essa é a melhor ação a ser tomada. Isso destruirá meu sistema de arquivos para ter toneladas de pontos de montagem? Também parece impróprio quando ln -s
deveria estar funcionando. Se eu SSH no meu servidor como Joe, eu posso ir para /home/joe/storage
em um shell bash. Então, por que não posso fazer isso no FTP?
Como observação, isso tem algo a ver com LIST
versus MLSD
em clientes FTP? Eu tenho um usuário de Mac que não é capaz de ver os links simbólicos como links simbólicos, mesmo se eu colocar um /
no link.