sudoedit arquivo de propriedade da raiz em um diretório não raiz

4

Por que não posso editar arquivos de propriedade do root, mas, por exemplo, em algum lugar no meu diretório pessoal, diz:

sudoedit: existingFile: editing files in a writable directory is not permitted

Enquanto eu tenho a seguinte função definida:

function sunano {
    export SUDO_EDITOR='/usr/local/bin/nano'
    sudoedit "$@"
}

E eu edito assim:

sunano existingFile

Em que o arquivo é realmente de propriedade de root:

ls -l existingFile

Prova que:

-rwxr-xr-x 1 root root 40 Jun 15  2015 existingFile
    
por Vlastimil 05.04.2017 / 16:58

1 resposta

6

A página de manual diz

Files located in a directory that is writable by the invoking user may not be edited unless that user is root (version 1.8.16 and higher).

Se você puder escrever para o diretório que contém o arquivo, poderá editá-lo na prática sem precisar de sudoedit (embora talvez não seja possível ler seu conteúdo atual): você pode movê-lo para fora do caminho e criar um novo arquivo com o mesmo nome. No seu caso particular, você pode ler o arquivo, e você deve achar que pelo menos alguns editores permitirão que você o edite (pelo menos aqueles que salvam arquivos escrevendo um arquivo temporário e o renomeando).

O raciocínio por trás deste recurso é dado em sudo bug 707 : basicamente, permitindo aos usuários editar arquivos em diretórios nos quais eles podem gravar com sudoedit pode permitir que eles contornem as restrições configuradas na configuração de sudoedit (e efetivamente editem qualquer arquivo no sistema).

    
por 05.04.2017 / 17:05