su para mim sem senha

3

Como é possível configurá-lo de forma que su para o mesmo usuário atualmente conectado, ou seja,

foo$ su -c 'something' foo

não requer uma senha? Isso não adicionaria nem removeria nenhuma segurança, como deveria ser noop.

O motivo para querer isso é que eu gostaria de ter uma classe de usuários "abaixo" de raiz que possa administrar alguns serviços específicos na máquina que é executada sob esse usuário, por exemplo, news ou mysql dados, altere a configuração, reinicie, etc.). Esses usuários receberão sudo direitos para essa conta, e isso geralmente funciona bem, exceto que os scripts de inicialização, em alguns casos, chamam

su -c 'start_daemon ...' daemonuser

e isso reduz esse esquema. É claro que posso alterar os scripts de inicialização ou adicionar permissões sudo adicionais, mas gostaria de evitar esse tipo de exceção, porque elas são uma bagunça para manter a longo prazo.

A configuração para su está no PAM, então a magia certa possivelmente está lá.

    
por Peter Eisentraut 08.01.2010 / 15:54

5 respostas

7

Você deve usar sudo para isso, não su . Com o sudo, você pode especificar NOPASSWD em /etc/sudoers :

username  ALL=/path/to/command  NOPASSWD: ALL
    
por 08.01.2010 / 16:13
3

Acho que há um mal-entendido básico aqui.

Those users would get sudo rights to that account, and that usually works well, except that the init scripts in some cases call su -c 'start_daemon ...' daemonuser and that brings down this scheme.

Quando um script de inicialização faz su -c <start_daemon> <daemon_user> , o que ele está fazendo é mudar o contexto no qual o daemon está sendo executado.

por exemplo, nossos scripts tomcat fazem exatamente isso para que o daemon possa ser executado com as permissões de usuário "tomcat".

Agora, se você for alterar os scripts de inicialização para fazer su -c <start_daemon> <your_user> , VAI DESAFIAR o daemon como ele espera que seja executado em um determinado ambiente.

Dar permissão de usuários para esses scripts, como todos já disseram, é a maneira correta de dar a eles a capacidade de gerenciar esses daemons.

    
por 08.01.2010 / 22:58
1

Você pode fazer isso editando o arquivo PAM do su em /etc/pam.d e usando o módulo pam_succeed_if. O arquivo já tem uma entrada para root, então copie essa linha e adicione outra depois dela.

conta suficiente pam_succeed_if.so uid = 0 use_uid quiet
conta suficiente pam_succeed_if.so uid = [seu UID aqui] use_uid quiet

    
por 11.01.2010 / 16:38
1

Execute visudo e adicione esta linha:

yourusername ALL = (TODOS) NOPASSWD: / bin / su - seu nome de usuário

e adicione isso ao início do script de inicialização:

alias su = 'sudo su'

    
por 13.01.2010 / 16:21
1

"Dar aos seus usuários sudo permissão para esses scripts, como todos os outros já disseram é a maneira correta de dar a eles a capacidade de gerenciar esses daemons." - Zypher

Isso é o que eu faria. Ele está dizendo que você deve permitir que os usuários executem os scripts (e somente os scripts) como root editando o arquivo sudoers. Desde root pode su em qualquer lugar sem senha, os scripts devem rodar bem. Eu estou fazendo exatamente isso agora, na verdade.

Tenha em mente que os initscripts são executados como root, é por isso que o su está lá (para descartar privilégios de root).

    
por 13.01.2010 / 22:49