Supondo que você tenha acesso root e o usuário2 não, você pode configurá-lo com permissões clássicas do UNIX da seguinte maneira. Você cria um grupo para este esquema de acesso (provavelmente coloque tanto user1 quanto user2 nele, embora para o controle de acesso você só precise de user2 nele), abaixo eu vou me referir a ele pelo nome rdlog
. Depois de ter o grupo, os seguintes comandos devem configurar o que você deseja:
chgrp rdlog /home/user1 /home/user1/website /home/user1/website/logs
chmod g=x /home/user1 /home/user1/website
chmod -R g=r /home/user1/website/logs
Ao definir apenas o x
bit nas permissões do diretório, apenas as referências exatas nesses diretórios podem ser usadas. Isso significa que qualquer pessoa em rdlog
pode listar ou cd no diretório de logs. E com permissão readonly nesse diretório e os arquivos nele. Isso tem várias limitações.
A primeira é que parte da segurança é segurança através da obscuridade. Enquanto você não dá permissão para listar o diretório /home/user1
, se é um arquivo lá, ele ainda pode ser referenciado, se eles adivinharem o nome (mas então as permissões do arquivo entram em vigor) . Assim, por exemplo, eles poderiam digitar cat /home/user1/.bashrc
e determinar, a partir do erro que recebem (nenhum arquivo versus permissão negada), se esse arquivo realmente existe.
A segunda limitação é que você só consegue fazer isso uma vez . Se você precisar conceder a um usuário diferente acesso a outra coisa em seu homedir, não poderá fazer o mesmo truque, porque você pode ter apenas uma configuração de grupo.
Você também pode fazer algo com as ACLs. Isso poderia evitar as limitações, se você fizer certo. No entanto, você pode realmente alcançar o seu objetivo desejado (ou seja, a verdadeira questão que fez você perguntar a este), movendo o diretório em questão em algum outro lugar, onde você pode fazer as permissões realmente certas. Se você ainda precisar vê-lo quando você se referir a ~/website/logs
, você pode colocar um link suave de lá para o novo local.