Não é possível editar visudo

0

Eu tenho que dar permissão ao meu usuário para executar sudo . Eu estou usando o CentOs

# uname -a
Linux lab-hv1-centos1 3.10.0-229.el7.x86_64 #1 SMP Fri Mar 6 11:36:42 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

e tem acesso root.

Muitos recursos recomendam executar visudo e adicionar linhas como

myuser    ALL=(ALL) ALL

Mas a tentativa de executar visudo (e até less /etc/sudousers ) imprime mensagem

E437: terminal capability "cm" required
Press ENTER or type command to continue

Alguns artigos recomendam instalar ncurses-term usando yum install ncurses-term . Eu fiz isso com sucesso e, de fato, o número de terminais listados aqui ls /usr/share/terminfo/d é alto. No entanto, isso não me ajuda: a mensagem de erro ao executar visudo ainda é impressa e não consigo editar esse arquivo.

Então, eu queria adicionar meu usuário ao grupo sudo. Mas esse grupo não existia na minha máquina. Eu criei esse grupo usando groupadd sudo e, em seguida, adicionei meu usuário a esse grupo usando o comando useradd -G sudo myuser .

Isso funcionou com sucesso, mas ainda assim quando tento executar qualquer comando com sudo , recebo a mensagem de erro:

$ sudo ls
[sudo] password for myuser:
myuser is not in the sudoers file.  This incident will be reported.
$

A mensagem de erro está correta. myuser pertence ao grupo chamado sudo , mas fui eu quem criou este grupo. É chamado apenas de sudo , isso não significa que os usuários que pertencem a esse grupo tenham permissões. Eu acredito que se eu puder adicionar linha como

myuser    ALL=(ALL) ALL

ou

sudo    ALL=(ALL) ALL

para /etc/sudousers Estou pronto, mas não posso fazer isso devido ao erro descrito acima ( terminal capability "cm" required )

Qual é a solução?

    
por AlexR 03.12.2015 / 14:44

1 resposta

1

Você iniciou um novo shell depois de instalar o pacote ncurses-term?

Se você tiver acesso root, poderá considerar copiar o arquivo /etc/sudoers para /root/sudoers.backup e adicionar a linha manualmente usando:

echo "myuser ALL=(ALL) ALL" >> /etc/sudoers

Se você quiser dar acesso a um grupo em vez de um usuário, precisará prefixar o nome do grupo com o caractere de porcentagem:

echo "%sudo ALL=(ALL) ALL" >> /etc/sudoers

Lembre-se de que a última regra correspondente será efetiva no arquivo sudoers, portanto, a edição do arquivo sudoers usando um editor ainda é aconselhada a ser a maneira recomendada.

EDITAR:

Outro ponto de reflexão, qual é o valor da sua variável $TERM ? Tente defini-lo usando TERM=vt100 antes de emitir visudo ou use um dos seguintes:

TERM=vt100 visudo
TERM=xterm visudo
TERM=dumb visudo
    
por 03.12.2015 / 15:04