Diretório com permissão + x, pais sem ele. Quando isso seria útil?

10

Digamos que eu tenha uma pasta chamada folder no seguinte caminho:

my_path = /a/b/c/d/e/folder

e um arquivo chamado file nessa pasta.

Em seguida, digamos que eu execute este comando para remover as permissões de grupo em / a /

> chmod g-rwx -R /a/

Agora, digamos +rx permissões para folder :

> chmod g+rx /a/b/c/d/e/folder

Então, se um segundo usuário do meu grupo for executado:

> ls /a/b/c/d/e/folder

ou

> cat /a/b/c/d/e/folder/file 

ela recebe erros de permissão e, até onde eu sei, isso é porque eu preciso fornecer g+x de acesso a todos os pais de folder . Minha pergunta então é: quando ou por que seria útil dar a +x permissão para um diretório cujo pai não a possui?

Obrigado

    
por Amelio Vazquez-Reina 01.06.2011 / 20:02

5 respostas

6

Na maioria das vezes, se você deseja bloquear o acesso e o uso de um diretório inteiro (incluindo seu subdiretório), é possível removê-lo (não recursivamente) -x . Portanto, você pode ter deixado subdiretórios com +x , sem causar nenhum dano.

Manter as permissões nos subdiretórios pode ser útil por vários motivos (especialmente quando -x não se aplica a todos, mas pelo menos um usuário ainda pode fazer alguma coisa).

Por exemplo, você pode bloquear o uso do diretório de contêineres temporariamente, enquanto realiza outras alterações nas permissões dessa estrutura de diretório e reativar o acesso à árvore inteira em uma operação (dando +x ao nível superior diretório).

Você também pode ter uma situação em que um script (não necessariamente executado pelo proprietário) faça backup da árvore de diretórios em um local temporário (que não deve ser lido por outros) e coloque tudo em um arquivo tar, preservando a permissão configurações do conteúdo do diretório.

    
por 02.06.2011 / 14:46
6

Você precisa de permissões de + x em todos os diretórios pai para acessar o arquivo em um diretório.

Você precisa de permissões de + r nos diretórios para listar os arquivos. Então aqui está um exemplo:

você pode emitir esses comandos para obter algumas configurações:

mkdir -p /a/b

touch /a/b/{file1,file2}

cd /a

echo 1 > b/file1

echo 2 > b/file2

Sem direitos:

pwd
/a$ pwd
/a
/a$ chmod -rwx b
/a$ ls -l
d---------  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
ls: : Permission denied
/a$ cat b/file1
cat: b/file1: Permission denied

Apenas com execução

/a$ chmod +x b
/a$ ls -l
total 0
d--x--x--x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: b: Permission denied
/a$ cat b/file1
a
/a$ ls -l b/file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 b/file1

Agora com leitura:

/a$ chmod +r b/
/a$ ls -l
/a$ ls -l
total 0
dr-xr-xr-x  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b/
total 16
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file1
-rw-r--r--  1 mike  admin  2 Jun  1 14:43 file2

Esta parte pode ser um pouco confusa, mas com apenas leitura e sem execução, você pode realmente listar os arquivos no diretório, mas não ler os metadados de inodes, então você terá permissão negada, mas ainda poderá ver a lista de arquivos em um diretório como abaixo ..

/a$ chmod -x b/
/a$ ls -l
total 0
dr--r--r--  4 mike  admin  136 Jun  1 14:44 b/
/a$ ls -l b
ls: file1: Permission denied
ls: file2: Permission denied
    
por 01.06.2011 / 23:54
2

Você deseja usar permissões não recursivas +x na situação que você forneceu:

chmod g+x /a /a/b /a/b/c /a/b/c/d /a/b/c/d/e

(Isso pressupõe que o usuário é um membro do grupo de cada diretório. Se não, você teria que fazer chmod o+x para qualquer desses diretórios.)

Para que um usuário execute ls /a/b/c/d/e/folder com êxito, ele deve ter permissão de execução no diretório every no caminho e permissão de leitura em folder .

Se você fez

chmod g+x -R /a

funcionaria, mas você daria permissão de execução de grupo para todos os arquivos e diretório sob / a. Isso é desnecessário e, no caso de arquivos, provavelmente errado.

    
por 01.06.2011 / 21:38
1

Na situação particular que você está enfrentando, o problema é que mesmo se folder tiver as permissões adequadas para serem acessadas por algum usuário de seu próprio grupo, se alguma das pastas pai de folder não estiver acessível para esse usuário, então ele não poderá acessar o interno (o que é chamado de folder em seu exemplo).

Se você executar:

chmod g-rwx -R /a/

então a e todos os seus filhos terão essa permissão.

Quando você executar:

chmod g+rx -R /a/b/c/d/e/folder

então folder e todos os seus filhos também terão essa permissão. Mas, com esse comando posterior, as pastas a/ , a/b e assim por diante até a/b/c/d/e não alteram suas permissões.

    
por 01.06.2011 / 20:29
0

O caso comum para remover o bit x em diretórios é bloquear usuários em seus diretórios pessoais. Shells restritos têm a opção de não permitir que cd faça referência a nomes de caminho absolutos e não permita a execução de programas usando caminhos absolutos. Eles também não podem cd .. para o diretório pai de seu diretório inicial e, portanto, estão efetivamente bloqueados e não podem executar nenhum programa que não esteja em $ PATH.

    
por 02.06.2011 / 13:40