Correção sem alterar proprietário e grupo

7

Eu tenho um arquivo que pertence a um usuário não-root:

# ls -l example.php
-rw------- 1 foo bar ... example.php

Acabei de aplicar um patch com um comando como

patch -p0 <<-EOF
--- .../example.php.orig 2012-06-20 15:07:13.000000000 +0200
+++ .../example.php  2012-06-20 15:43:05.000000000 +0200
...
EOF

como root e o usuário e grupo do arquivo de destino foram alterados para root . Não encontrei nenhuma referência a isso nas páginas man .

Existe uma maneira de deixar a propriedade do arquivo como antes sem usar su , sudo ou chown ?

  • su parece incapaz de especificar um grupo.
  • sudo -u foo patch ... é executado corretamente, mas define o grupo errado.
  • sudo -u foo -g bar patch ... retorna Sorry, user root is not allowed to execute '/usr/bin/patch' as foo:bar on hostname . Isso pode acontecer porque o usuário foo não é membro do grupo bar .
  • chown significaria ter que armazenar as permissões antes de executar patch , adicionando outras duas linhas de código.
por l0b0 20.06.2012 / 12:55

1 resposta

8

patch cria um novo arquivo e é por isso que ele possui credenciais de usuário eficazes.

Uma solução alternativa: use patch -o para criar um arquivo temporário e, em seguida, simplesmente cat tmp para o arquivo original.

    
por 20.06.2012 / 15:35

Tags