gzip altera a propriedade do arquivo

2

Aqui está um caso que eu não entendo.

Eu tenho um grupo bar e esse grupo tem dois usuários; foo e bar .

Eu tenho um arquivo test.txt , foo é o proprietário e bar usuário só pode lê-lo.

No entanto, se bar user executar o comando gzip nesse arquivo, a propriedade será alterada de foo para bar .

Portanto, foo não pode mais tocar neste arquivo.

Isto é um buraco de segurança?

Conectado como bar

$ whoami
bar
$ cd /home/foo/test
$ ls -al
total 8
drwxrwxr-x 2 foo bar  4096 Jan  6 15:48 . 
drwxrwxr-- 5 foo bar  4096 Jan  6 15:48 ..
-rwxr-xr-x 1 foo foo    0 Jan  6 15:48 test.txt
$ gzip test.txt    
$ ls -al
total 12
drwxrwxr-x 2 foo bar 4096 Jan  6 15:50 . 
drwxrwxr-- 5 foo bar 4096 Jan  6 15:48 ..
-rwxr-xr-x 1 bar  bar   29 Jan  6 15:48 test.txt.gz
$ uname -a
Linux 2.6.18-xenU-ec2-v1.2 #2 SMP x86_64 x86_64 x86_64 GNU/Linux

Conectado como foo :

$ whoami
foo
$ touch test.txt.gz 
touch: cannot touch 'test.txt.gz': Permission denied
    
por allen 06.01.2012 / 22:02

3 respostas

8

Não é um buraco de segurança. O Gzip cria um novo arquivo e remove o antigo. Isso é governado pelas permissões do diretório e não pelas permissões no arquivo. Se você remover a permissão de gravação do diretório, seu test.txt estará protegido da barra de usuário.

O processo completo com relação à segurança é assim:

  1. O gzip usa permissão de leitura no arquivo original para obter um identificador de arquivo somente leitura no arquivo original.
  2. Use permissão de gravação no diretório para criar um arquivo novo e vazio.
  3. Leia dados do arquivo original e grave dados compactados em um novo arquivo
  4. Exclua o arquivo antigo usando a permissão de gravação no diretório.
por 06.01.2012 / 23:33
4

gzip não altera a propriedade de um arquivo. Ele cria um arquivo novo (que, pela natureza de como os sistemas semelhantes ao Unix funcionam, é de propriedade do usuário executando o comando gzip ) e exclui o arquivo original.

Se você quiser que o arquivo test.txt.gz recém-criado tenha a mesma propriedade de usuário e grupo que o arquivo test.txt , será necessário usar chown - e na maioria dos sistemas, isso significa que você precisará acesso root. O usuário bar normalmente não pode criar um arquivo de propriedade de 'foo'.

( gzip pode e define os bits de permissão no arquivo .gz recém-criado iguais aos do arquivo de entrada e, se você executá-lo como root , também usará chown para definir o proprietário. Fonte: Eu apenas tentei.)

    
por 07.01.2012 / 03:25
3

Isso significa que você é um membro de um grupo diferente. gzip cria um novo arquivo com seu grupo padrão. O arquivo original é removido.

HTH

    
por 06.01.2012 / 22:22