Verificando sudoers sem raiz?

0
Basicamente, eu tenho uma instalação Debian preseed que executa um script bash postinstall como root no primeiro login. Este script deve editar os sudoers para tornar as senhas opcionais quando qualquer usuário do grupo sudo usar o sudo:

sed -i.bak 's/%sudo     ALL=(ALL:ALL) ALL/%sudo ALL=(ALL) NOPASSWD:ALL/' /etc/sudoers

No entanto, algo parece ter corrido mal e os usuários ainda precisam de uma senha para usar sudo - long story short, isso significa que ninguém tem sudo, já que todos os usuários são criados com --disabled-password. Sim, percebo que isso pode não ser o caminho ideal / certo / inteligente / seguro, mas é o que é.

O que preciso descobrir é o que deu errado? Por quê? O script funcionou todas as outras vezes em que eu usei e, obviamente, ele executou outros comandos, como atualizar certos pacotes, então por que ele não editou corretamente o / etc / sudoers? Como posso verificar sudoers sem raiz ou descobrir por que não foi possível editar?

    
por user5104897 24.01.2017 / 16:55

1 resposta

1

Bem, não podemos adivinhar, porque depende do seu ambiente. Meu dinheiro estaria na linha que você está tentando substituir, não existente em / etc / sudoers. (Pelo menos, não exatamente como aparece). O que significa que nunca foi substituído, e por isso nunca foi definido 'NOPASSWD'.

Quero dizer, você está contando com um número específico de espaço, e um formato de linha específico, e se ele não corresponder ao seu regex em primeiro lugar ... ele nunca será modificado.

Sugiro que a resposta seja adicionar um arquivo ao /etc/sudoers.d/ com os valores que você quer - e então (talvez?) como um usuário que deve ser capaz de 'sudo ', use sed para excluir a linha de destino. (o qual falhará se eles não conseguirem - você pode testar um código de retorno).

    
por 24.01.2017 / 17:21