Configure o RHEL / CentOS 5 para usar o SUDO na linha de comando e X

2

Como faço para que o CentOS / RHEL me indique a senha my (e não as raízes) quando executo um comando privilegiado. Eu encontrei muitos guias que detalham como fazer isso para a linha de comando, mas eu quero que ele funcione também para aplicativos X windows.

Ou, em outras palavras: Como faço o RHEL / CentOS se comportar como o Ubuntu?

    
por ErebusBat 29.11.2010 / 17:17

1 resposta

6

Configuração do terminal

Como root, precisamos editar o arquivo /etc/sudoers executando visudo (OBSERVAÇÃO: Você pode export EDITOR=vim para obter realce de sintaxe ou usar o editor de sua escolha). Em torno das linhas 83,86 você deve ver duas linhas que são semelhantes (no vim você pode executar :set number para mostrar números de linha):

83 # %wheel  ALL=(ALL)       ALL
84
85 ## Same thing without a password
86 # %wheel  ALL=(ALL)       NOPASSWD: ALL

A diferença é que a linha # 83 exigirá que o usuário insira a senha their para autenticar, enquanto a linha # 86 permitirá ao usuário sudo sem solicitar novamente sua senha. As melhores práticas de segurança afirmam que o # 83 é mais seguro; no entanto, dependendo da sua situação # 86 pode ser apropriado (por exemplo, eu geralmente uso # 86 durante a configuração de um servidor, em seguida, mude para # 83).

Saia e salve esse arquivo.

Agora, precisamos informar ao sistema quais usuários podem escalonar suas permissões por meio de sudo . Isso é feito adicionando-os ao grupo wheel , que é o que o %wheel indicou no arquivo sudoers que editamos anteriormente. Veja man sudoers para mais informações sobre esse formato de arquivo.

$ usermod -a -G wheel erebusbat

Esse comando adicionará o usuário erebusbat ao grupo wheel, combinado com a nossa alteração anterior, todos eles para executar qualquer comando como root:

erebusbat@centos$ sudo whoami
root
erebusbat@centos$

Configuração X / GNOME

No CentOS / RHEL 5 e abaixo, a autenticação X é gerenciada por um conjunto de programas chamados consolehelper e userhelper . Basicamente, o que acontece é o seguinte: quando um usuário executa um programa (digamos, pirut ) ele verifica se há arquivos chamados pirut na pasta /etc/security/console.apps/ , se olharmos para um desses arquivos, parece:

USER=root
PROGRAM=/usr/sbin/pirut
SESSION=true
KEEP_ENV_VARS=http_proxy,ftp_proxy

Isso diz a consolehelper / userhelper para permitir que o usuário autentique e execute o programa como root. Se nósman userhelper, vemos que podemos adicionar uma diretiva UGROUPS= para que, se um usuário estivesse nesse grupo, eles tivessem permissão para autenticar como eles mesmos, mas executassem o aplicativo como o usuário especificado na diretiva USER= . Então, o arquivo pirut precisa ser parecido com:

USER=root
UGROUPS=wheel
PROGRAM=/usr/sbin/pirut
SESSION=true
KEEP_ENV_VARS=http_proxy,ftp_proxy

Assim que fizermos essa alteração sempre que tentarmos executar pirut como usuário normal (Adicionar / Remover Programas no Menu do GNOME), uma das duas coisas acontecerá:

  1. Será solicitada a NOSSA senha e o programa será iniciado como root .
  2. Será solicitada a senha de root se o usuário atual não estiver no grupo wheel .

No entanto, alterar todos esses arquivos manualmente pode ser um PIA, por isso trabalhamos de maneira inteligente e não mais difícil:

$ cd /etc/security/console.apps/
$ sudo su -
$ pcregrep -ML '^UGROUPS=' * | xargs sed -i 's/^USER=root/USER=root\nUGROUPS=wheel/' 

O comando sudo su - não é necessário se você estiver atualmente root . O comando não irá 'consertar' qualquer arquivo, de modo que ele possa ser chron ed ou configurado para ser executado na inicialização, para garantir que seus arquivos estejam ok. Atualizações e instalações podem substituí-las ou criar novas que não tenham a diretiva UGROUPS= .

Desabilitando o usuário root

Uma vez que tudo esteja configurado e testado, você deve desativar o usuário root:

$ sudo passwd -l root

Esse é um L minúsculo, como em LOCK.

Em seguida, você deve definir ou alterar PermitRootLogin no no seu arquivo /etc/ssh/sshd_config . Isso é útil mesmo se você bloquear a conta root, caso alguém a habilite no futuro. O sudo su - continuará funcionando mesmo se você definir isso, veja abaixo, então não há motivo para não configurá-lo.

Se você decidir não bloquear a conta root, isso não é o ideal, já que qualquer pessoa pode acessar o console de texto / X / GNOME como root e quando coisas ruins acontecem (o console permanece logado ou você acidentalmente apaga um monte de arquivos do sistema operacional [pergunte-me como eu sei], melhor para bloquear a conta.

Executando como root por períodos prolongados

Às vezes, como o software instala, é necessário executar muitos comandos como root e não é desejável ter que prefixar cada um com sudo . Você tem duas opções neste caso:

  1. Altere temporariamente para a conta root : $ sudo su - Esse comando fornecerá o mesmo shell de comando como se você tivesse efetuado login na conta como raiz.
  2. Desbloqueie a conta root: $ sudo passwd root Isso permitirá que você defina uma senha e desbloqueie a conta; no entanto, não é temporário e você deve se lembrar de bloquear a conta de usuário depois de terminar.
por 29.11.2010 / 17:17