Como executar um aplicativo usando o sudo sem uma senha?

36

... mas ainda será necessário para aplicativos que precisam de privilégios de administrador?

Para permitir o seguinte:

$ apache2ctl restart
httpd not running, trying to start
(13)Permission denied: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs

$ sudo !!
sudo apache2ctl restart             #no password asked
$                                   #works!

Para referência, eu vi esta configuração nas instâncias e3 da amazon

Alguma ideia?

    
por tutuca 02.05.2011 / 17:42

6 respostas

47

Você precisa editar o arquivo sudoers. Esteja ciente de que o sucesso lhe dá um sistema menos seguro e a falha pode quebrar o sudo. SEMPRE edite o arquivo sudoers com sudo visudo , pois o visudo verifica se há erros e não salvará o arquivo se algum deles for encontrado.

É uma má ideia dar permissão a tudo para rodar como root sem uma senha, de modo a deixar passar o executável que você precisa (apache2ctl); acrescente o seguinte à parte inferior do arquivo:

YOURNAME ALL = NOPASSWD: /usr/bin/apache2ctl

Você pode substituir o caminho para um executável com "ALL", se você escolher, fornecendo a você um sudo completo sem senha.

Substitua YOURNAME pelo seu nome de usuário e pressione Ctrl + X para salvar e sair. Se ocorrer um erro, ele se oferecerá para reverter, editar ou salvar de qualquer maneira.

Certifique-se de usar o caminho completo para um executável:
ou seja. /usr/bin/apache2ctl em vez de apenas apache2ctl . Isto é importante porque sem declarar explicitamente o caminho, o sudo permitirá que qualquer programa chamado apachectl no caminho atual do usuário seja executado como root.

    
por Mark Paskal 02.05.2011 / 18:10
24

A verdadeira resposta a esta questão pode ser complicada porque o sudo é muito poderoso e pode ser configurado para fazer coisas legais. Isso é totalmente explicado na documentação .

A resposta curta é executada sudo visudo em um terminal. Se esta é a primeira vez que você executou o visudo, ele perguntará qual editor você prefere. Geralmente, o nano é considerado o mais fácil de usar, mas escolha o editor com o qual você esteja mais familiarizado. Você precisará decidir a quem você quer dar acesso; pode ser ALL para todos (uma muito má ideia) , um usuário ou um grupo de sistemas. Grupos são prefixados com um sinal%. Por exemplo, se você quisesse conceder a todos os privilégios de raiz do grupo steroid_users sem a necessidade de uma senha para todos os comandos, você adicionaria:

%steroid_users ALL=(ALL) NOPASSWD: ALL

até o final do arquivo, saia e salve o arquivo. Se tudo correr bem e você for um membro do grupo steroid_users, poderá emitir sudo *some-command* sem o incômodo de precisar digitar sua senha.

Tenha em mente que qualquer um que tenha acesso ao seu terminal enquanto você estiver logado - ou se você tiver a configuração ssh para autenticação baseada em chave, ou (ainda pior) ativaram a sessão livre de senha logins - acesso completo e sem restrições ao seu sistema inteiro . Se você tem vários usuários em seu sistema, ou se este é um servidor de arquivos, todos os arquivos de usuários podem estar em risco, pois o root pode fazer qualquer coisa!

Além disso, se você cometer um erro, o visudo exibirá uma mensagem de erro e não salvará as alterações no arquivo. Isso ajudará a evitar a quebra completa do sudo. Você deve realmente ler a documentação . O Sudo foi projetado para fornecer aos usuários acesso suficiente para realizar seu trabalho sem a necessidade de expor todo o sistema. Pode ser vantajoso dar somente acesso sem senha para determinados comandos.

Espero que isso ajude.

    
por Chris 12.05.2012 / 08:03
5

Você precisará editar o arquivo '/ etc / sudoers' (há um comando 'visudo' para isso.) para adicionar o NOPASSWD antes da lista de comandos permitidos para o seu usuário ou grupo. Se o seu usuário estiver no grupo 'admin' - você precisará seguir:

%admin ALL=(ALL) NOPASSWD: ALL

Verifique se link , btw.

    
por korjjj 12.05.2012 / 07:18
3

Você PODERIA adicionar o sinalizador nopasswd à lista de usuários, mas isso não elimina todas as senhas feitas. Apenas o primeiro será perguntado.

  1. Editar sudoers: sudo visudo (você precisa usar o sudo. Esse é um arquivo do administrador.)
  2. Adicione seu usuário com o sinalizador nopasswd após a Linha de administração (no final). Por exemplo: cyrex ALL = NOPASSWD: ALL ou cyrex ALL = (ALL) NOPASSWD: ALL
por Luis Alvarado 02.05.2011 / 17:52
2
sudo visudo
%<GROUP> ALL = NOPASSWD: apache2ctl

ou

sudo visudo
%<GROUP> ALL = NOPASSWD: /etc/init.d/apache2

Eu acho que isso faria isso.

Mas tenha cuidado ao remover as senhas do sudo.

    
por Alex 02.05.2011 / 17:59
0

Agora, a resposta simples! Nenhuma maneira possível de confundir qualquer coisa ou falsificar sua instalação.

Basta digitar sua senha algumas vezes e, em seguida, nunca mais precisará inseri-la novamente. Isso permitirá que você adicione uma conta de administrador local ao grupo "root", o qual será descompromissado de um modelo que permitirá privilégios de superusuário "root" do grupo inteiro. Você pode ler minha preocupação / solução de segurança para esse procedimento na parte posterior deste post.

% nome de usuário & amp; é a variável global do seu nome de usuário (substitua-o pelo nome de usuário desejado)

Passo 1: Abra uma janela de terminal e digite " sudo usermod -a -G root %username% "

Passo 2: Copie / cole isto ...

sudo sed -i 's/# auth       sufficient pam_wheel.so trust/auth       sufficient pam_wheel.so trust/g' /etc/pam.d/su'

Passo 2 OU digite

sudo nano /etc/pam.d/su'

Vá para a linha 19 e remova o "#" antes de # auth sufficient pam_wheel.so trust (pode ser um número de linha diferente para alguns)

* O primeiro comando adiciona seu% username% ao grupo "root"

O segundo / terceiro comando permite que todos os membros do grupo "root" sejam superusuários sem uma senha, ao invés de permitir apenas o usuário "root" su privilégios para autenticações.

Nota final:

Não mexa com /etc/sudoers ... Existem muitas verificações / balanços que a autenticação 'su' deve seguir. A autenticação de superusuário usa o mesmo procedimento pam.d que todas as outras autenticações de login. "/etc/security/access.conf" tem o layout para controle de acesso via comunicação tcp / ip (192.168.0.1) e através de serviços de telnet (tty1 & tty2 & tty3 ... etc) Isso permite uma filtragem mais precisa por aplicativo via transporte protocolo. Se a segurança é sua preocupação, então sua preocupação deve ser direcionada para ameaças remotas / código versus alguém realmente tocando seu computador quando você sair da sala !!!

Comida para paranoia (não digite este em apenas revê-lo):

sudo sed -i 's/#-:ALL EXCEPT (wheel) shutdown sync:LOCAL/-:ALL EXCEPT (wheel) shutdown sync:LOCAL/g' /etc/security/access.conf

^ Isso bloqueia o acesso ao console para qualquer pessoa que não seja membro do sistema ou do root. Às vezes, os programas instalam nomes de usuários / grupos que são explorados!

    
por Nathaniel F. Malm 13.04.2014 / 22:22