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


11

Digamos que eu tenha uma pasta chamada folderno seguinte caminho:

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

e um arquivo chamado filenessa 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 que eu conceda +rxpermissões para folder:

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

Então, se um segundo usuário no meu grupo executar:

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

ou

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

ela recebe erros de permissão e, pelo que entendi, é porque preciso fornecer g+xacesso a todos os pais de folder. Minha pergunta então é: quando ou por que seria útil conceder +xpermissão a um diretório cujo pai não a possui?

obrigado


1
Tem certeza de que está correndo chmod +grx -R /a/b/c/d/e/folder? É errado, o caminho certo para executá-lo é:chmod g+rx -R /a/b/c/d/e/folder
nozimica

3
Não responder diretamente a esta pergunta, mas a leitura de fundo recomendado: explicação sobre as permissões do diretório
Gilles 'SO parada sendo mal'

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 -xnão se aplica a todos, mas pelo menos um usuário ainda pode fazer alguma coisa).

Por exemplo, você pode bloquear temporariamente o uso do diretório de contêineres, enquanto faz outras alterações nas permissões nessa estrutura de diretórios e reativar o acesso a toda a árvore em uma operação (fornecendo +xao diretório de nível superior).

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 outras pessoas) e coloque tudo em um arquivo tar, preservando as configurações de permissão do diretório conteúdo do diretório.


7

Você precisa de permissões + x em todo e qualquer diretório pai para cd ou acessar um arquivo em um diretório.

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

você pode emitir estes 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 a 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

Essa parte pode ser um pouco confusa, mas com apenas leitura e não execução, é possível listar os arquivos no diretório, mas não ler os metadados dos inodes, para que você tenha permissão negada, mas ainda consiga 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

2
Obrigado @skrewler. Você disse: "Você precisa de + x permissões em todo e qualquer diretório pai para cd ou acessar um arquivo em um diretório", como pensei. A minha pergunta então é: por que você nunca iria dar + x permissão para um diretório cujo os pais que não têm + x permissão?
Amelio Vazquez-Reina

A única coisa em que consigo pensar é se você deseja fazer uma montagem de ligação diretamente lá, ignorando os diretórios pai sem as permissões de execução. Se isso não fazia sentido, mostrarei um exemplo.
06

O exposto acima deveria ter sido mais claro. Um usuário raiz com permissões para todos os diretórios-pai pode fazer com que essa ligação seja montada para permitir que outros usuários acessem o diretório. Como eles poderiam alcançar / a / b / c / d / e onde apenas d ou e tiveram execução global, você poderia fazer uma montagem de ligação a partir de / mnt / d -> / a / b / c / d / e um usuário poderia alcançar indo ao ponto de montagem. É a mesma idéia que criar um link físico para algum lugar profundo de uma árvore de diretórios que, de outra forma, seria inacessível. Os links simbólicos não funcionam assim, porém, é necessária uma montagem de ligação.
06

2

Você deseja usar +xpermissões não recursivas na situação que você deu:

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 seja membro do grupo de cada diretório. Caso contrário, você teria que fazer isso chmod o+xpor esses diretórios.)

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

Se você fez

chmod g+x -R /a

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


1

Na situação específica que você está enfrentando, o problema é que, mesmo que folderas permissões apropriadas sejam acessadas por algum usuário de seu próprio grupo, se alguma das pastas pai foldernão estiver acessível a esse usuário, ele não poderá acesse o interior (o que é chamado folderno seu exemplo).

Se você executar:

chmod g-rwx -R /a/

então, ae todos os seus filhos terão essa permissão.

Quando você executar:

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

então, foldere todos os seus filhos também terão essa permissão. Mas, com este comando depois, as pastas a/, a/be assim por diante até que a/b/c/d/enão vai mudar suas permissões.


0

O caso comum para remover o bit x nos diretórios é bloquear os usuários em seus diretórios pessoais. Os shells restritos têm a opção de não permitir cdreferenciar nomes de caminho absolutos e não permitir a execução de programas usando caminhos absolutos. Eles também não podem cd ..acessar o diretório pai do diretório inicial e, portanto, estão efetivamente bloqueados e incapazes de executar qualquer programa que não esteja no $ PATH.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.