Em geral, essa não é uma estrutura de diretórios prática por motivos que você está encontrando. Se você tiver apenas um site, a diretriz / var / www pode estar bem. No entanto, na minha experiência, 20+ anos, a melhor abordagem é criar uma partição home separada para que a partição home possa ser montada nosuid, noexec, nodev, et al. Cada site tem sua própria conta de usuário do sistema. Essa conta recebe um shell, o rssh, que permite o sftp, mas não o ssh. Isso é prático ao hospedar, ao contratar desenvolvedores ou até mesmo do ponto de vista de segurança.
Tendo escrito muito, uma solução se torna clara: mova os sites para diretórios de contas de usuários e atualize a configuração do servidor web. Isso pode ser feito com segurança, criando uma cópia do site em um subdomínio. Por exemplo, para o domínio, www.website.com, crie um CNAME chamado test.website.com. Verifique se o site em test.website.com está funcionando. Em seguida, atualize o arquivo de configuração do servidor web para apontar www.website.com para o novo local, uma vez que você saiba que ele é perfeito.
Nesse ponto, você pode fornecer acesso via sFTP para quem quiser sem essa preocupação.
Mas ... para chegar ao ponto e responder à pergunta: uma solução menos óbvia, mas eficaz, é usar o ACL. Com a ACL, você pode obter controles muito mais precisos sobre as permissões do sistema de arquivos. Usar o ACL pode fornecer as restrições desejadas.
A primeira coisa a fazer é instalar o software acl:
sudo apt-get install acl
A próxima coisa a fazer é montar ou remontar o sistema de arquivos com a opção ACL.
sudo -e /etc/fstab
Você pode ver uma linha como essa, então adicione a opção acl.
UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 defaults,acl 0 1
Salve e saia. Remontar com acl ativado.
sudo mount -o remount,acl /
Depois disso, você terá acesso à ACL. Há um guia para ACL em help.ubuntu.com . Alguns exemplos de uso da ACL em askubuntu.com:
Gerenciando permissões de usuário arbitrárias sob PureFTPd
O que é a maneira mais simples de editar e adicionar arquivos para "/ var / www"?