O sudo cria arquivos sob seu próprio ID de usuário?

0

Se eu quisesse fazer algo como

sudo fdisk -l > test.txt

mas eu queria que o test.txt estivesse sob o meu próprio ID de usuário (e não de root) sem ter que chupá-lo depois, existe uma maneira de fazer isso?

Especificamente, meu objetivo real é ter um script python executando várias operações de permissão sudo e despejar as saídas. De que forma devo pedir permissões sudo se o fluxo for algo como:

somescripts
 \-> runs python script, grabs sudo
      \-> runs operation with sudo permissions
      |     like fdisk -l > test.txt
      \-> runs operation with sudo permissions, reads stdout, writes stdout to file
            like fdisk -l --> reads stdout --> make file --> writes data to file

Obrigado.

    
por user76871 21.04.2012 / 05:13

2 respostas

2

Você pode usar tee . O que o tee faz é escrever stdin em um arquivo e fazer um eco no stdout também. Usá-lo com um pipe e sudo efetivamente altera o usuário ativo para o redirecionamento de saída. Tenha em mente que o lado esquerdo do tubo deve realmente gravar para stdout, não stderr.

sudo fdisk -l | sudo -u myuser tee <file>
    
por 21.04.2012 / 05:43
2
$ sudo fdisk -l > test.txt
$ ls -l test.txt
-rw-r--r-- 1 daniel daniel 1848 apr 22 14:20 fd

Não é necessário alterar a propriedade do arquivo posteriormente ao usar o redirecionamento como você descreve.

Ao usar tee como sugerido, é no mesmo local que não é necessário usar sudo -u myuser :

sudo fdisk -l | tee test.txt

é suficiente (mas não é necessário neste caso como na demonstração acima).

No contexto do script Python, se você executar o script inteiro como root via sudo , o redirecionamento também será feito como root , mas se você usar sudo como no exemplo de linha de comando anterior dentro do script, ele se comportará como acima.

    
por 22.04.2012 / 14:25