Como permitir o acesso do usuário a um arquivo específico em um diretório restrito?

1

Eu tenho um diretório com as seguintes permissões:

lighttpd drwx------

Que contém o seguinte arquivo:

lighttpd.pid -rw-r--r--

Infelizmente, ao tentar executar:

cat lighttpd/lighttpd.pid

com um usuário que não é o proprietário nem um membro do grupo proprietário, recebo a mensagem:

cat: lighttpd/lighttpd.pid: Permission denied

Como eu permitiria que um usuário que não fosse um proprietário, nem um membro do grupo, acessasse o lighttpd.pid?

    
por Brandon Bradley 15.05.2017 / 03:04

3 respostas

2

Conceda permissões de execução / pesquisa ( x ) para 'outros' para o diretório lighthttpd .

$ chmod o+X lighthttpd

O seletor de bit do modo de arquivo capital X em chmod ativa a execução / pesquisa apenas se o arquivo for um diretório (ou se já tiver permissão de execução para algum usuário).

O bit de execução / pesquisa, quando definido nos diretórios, permite que o usuário afetado entre (ative open() ) o diretório e acesse arquivos e diretórios internos. Além disso, eles precisam de permissões de leitura ( r ) para os próprios arquivos (que, de acordo com a pergunta, já está definida).

Sem permissão de leitura ( r ) no diretório , os usuários não são capazes de obter o conteúdo do diretório, então eles precisarão saber o nome do arquivo que irão acessar antecipadamente.

Se o sistema de arquivos subjacente suportar a Posix Access Control Lists , você também pode conceder a permissão de execução / pesquisa no diretório com setfacl para um usuário específico sem ajustar a atribuição do proprietário ou do grupo:

$ setfacl -m u:user:x lighthttpd

Você pode determinar se os sistemas de arquivos suportam ACLs Posix verificando se ele foi montado com a opção acl mount / executando mount :

$ mount | grep /dev/sdaX
/dev/sdaX on /mountpoint type ext4 (rw,acl)

Se acl não estiver presente na saída do mount, ele ainda poderá ser uma das opções padrão para esse tipo de sistema de arquivos. Você pode verificar isso com a tune2fs :

$ sudo tune2fs -l /dev/sdaX |grep acl
Default mount options:    user_xattr acl 

Se acl não estiver ativado, você não deseja conceder a todos os usuários a capacidade de inserir o diretório, você pode seguir conselho de Larkeith e vincule o arquivo que você deseja que os usuários possam acessar para outro nome de caminho no sistema de arquivos.

    
por 15.05.2017 / 12:09
2

A criação de um link físico fora do diretório para o arquivo funcionará - E.G. %código%. Os usuários poderão visualizar ln lighttpd/lighttpd.pid example/lighttpd.pid sem ter acesso a example/lighttpd.pid .

    
por 15.05.2017 / 11:28
-2

Eu não leio mais profundamente man setfacl , mas parece que você precisa disso.

man setfacl part contents:

EXAMPLES

   Granting an additional user read access
          setfacl -m u:lisa:r file

   Revoking write access from all groups and all named users (using the effective rights mask)
          setfacl -m m::rx file

   Removing a named group entry from a file's ACL
          setfacl -x g:staff file

   Copying the ACL of one file to another
          getfacl file1 | setfacl --set-file=- file2

   Copying the access ACL into the Default ACL
          getfacl --access dir | setfacl -d -M- dir
    
por 15.05.2017 / 08:25