Ignore sudo no script bash se estiver usando root

1

Esta questão não é duplicada de Ignorar sudo no script bash

Estou criando uma imagem docker baseada na imagem do docker do Ubuntu 14.04. Como você sabe, o root é o usuário padrão no docker. Quando eu executei um script bash para instalar um software, obtive

sudo: error in /etc/sudo.conf, line 0 while loading plugin 'sudoers_policy'
sudo: /usr/lib/sudo/sudoers.so must be owned by uid 0
sudo: fatal error, unable to load plugins

Eu tentei chown root /usr/lib/sudo/sudoers.so , mas não está funcionando.

Esse comportamento é estranho:

ls    (everyone can do this)
sudo ls   (you can't do this even if you are root)

Como estou construindo uma imagem do docker, não quero instalar pacotes não correlacionados para fazer o sudo support root. Mas há um monte de sudo em alguns scripts bash, então simplesmente substituir sudo por vazio pode não ser uma boa escolha.

Então, eu estou querendo saber se existe alguma maneira de ignorar apenas sudo quando você é raiz

    
por Mithril 19.07.2017 / 03:26

1 resposta

1

Em seus scripts, para o início, defina sudo como uma função que chama o% realsudo, se necessário:

sudo ()
{
    [[ $EUID = 0 ]] || set -- command sudo "$@"
    "$@"
}

command sudo foo bar diz ao bash para usar o comando sudo real em vez de funções ou aliases. $EUID é o ID do usuário efetivo, que pode ser diferente de $UID .

    
por muru 19.07.2017 / 09:43