Como posso executar o growisofs via sudo?

4

Sempre que eu tentei executar growisofs via sudo , sempre recebi a seguinte mensagem de erro.

$ sudo -i growisofs
:-( growisofs is being executed under sudo, aborting!
    See NOTES paragraph in growisofs manual page for further details.
$ sudo -s growisofs

:-( growisofs is being executed under sudo, aborting!
    See NOTES paragraph in growisofs manual page for further details.

O que me leva a ter que fazer um sudo su - seguido por growisofs .

$ sudo su - -c growisofs
growisofs: previous "session" device is not specified, do use -M or -Z option

-or-

$ sudo su -
# growisofs ...

Existe uma maneira alternativa de fazer isso sem ter que fazer o su - ?

Antecedentes

Esse comportamento é incorporado na ferramenta growisofs para impedir o acesso ao sistema de arquivos com privilégios elevados.

trecho

NOTES

If executed under sudo(8) growisofs refuses to start. This is done for the following reason. Naturally growisofs has to access the data set to be recorded to DVD media, either indirectly by letting mkisofs generate ISO9660 layout on-the-fly or directly if a pre-mastered image is to be recorded. Being executed under sudo(8), growisofs effectively grants sudoers read access to any file in the file system. The situation is intensified by the fact that growisofs parses MKISOFS environment variable in order to determine alternative path to mkisofs executable image. This means that being executed under sudo(8), growisofs effectively grants sudoers right to execute program of their choice with elevated privileges. If you for any reason still find the above acceptable and are willing to take the consequences, then consider running following wrapper script under sudo(8) in place for real growisofs binary.

       #!/bin/ksh
       unset SUDO_COMMAND
       export MKISOFS=/path/to/trusted/mkisofs
       exec growisofs "$@"

But note that the recommended alternative to the above "workaround" is actually to install growisofs set-root-uid, in which case it will drop privileges prior accessing data or executing mkisofs in order to preclude unauthorized access to the data.

    
por slm 30.05.2014 / 21:09

2 respostas

4

O que o growisofs está fazendo aqui está procurando a variável de ambiente SUDO_COMMAND e abortando se a variável for encontrada. O motivo sudo su - funciona porque su - limpa o ambiente.

Em vez de precisar de um shell completo, você pode fazer:

sudo env -i growisofs

Isso limpará o ambiente, assim como su - . A única diferença é que su - também colocará as variáveis básicas (em /etc/profile e tal) de volta, onde env -i não (ambiente completamente vazio).

Uma solução mais precisa seria:

sudo env -u SUDO_COMMAND growisofs

Isso preservará o ambiente, exceto SUDO_COMMAND .

    
por 30.05.2014 / 21:16
0
chmod u+s /usr/bin/growisofs solves this problem.

Mas é um bom exemplo da "maneira incorreta de fazer isso", pois quebra a segurança oferecida por sudo . SetUID growisofs apresenta um problema de segurança ainda pior do que configurar com cuidado sudo e não tem valor para um sistema de área de trabalho pessoal, IMO.

    
por 01.05.2015 / 20:36