Evite perguntar a senha se 'su -m user command' for usado em 'user'?

0

Se eu executar o script que contém su -m user service userservice start no usuário root, não preciso inserir a senha. Mas quando eu o executo sob user user, ele pede senhas o tempo todo. Isso realmente me incomoda. É para pedir senhas por motivos de segurança? Existe alguma maneira que eu poderia evitar pedir senha se su -m user command for executado em user ?

Editar1: O motivo pelo qual preciso evitar a inserção de senha no su do usuário atual é /etc/init.d/scripts , que tem su -m user declaração para muitos serviços que instalei. E parece estúpido digitar a senha toda vez que estou reiniciando o serviço que deve ser executado no usuário atual. Na verdade, preciso digitar a senha duas vezes enquanto estou reiniciando algum serviço. Eu posso concordar que é uma característica de alguns scripts init.d e tudo que eu preciso fazer é ajustar a fonte um pouco, mas eu pensei que ela poderia ser consertada de alguma forma no nível su para evitar a mudança do código fonte dos scripts init.d.

    
por altern 04.10.2012 / 11:33

2 respostas

4

Sim, a segurança é o motivo e não, su não tem como contornar isso. Mas há sudo , que pode ser usado para o que você quer e tem um arquivo de configuração onde você pode desativar a necessidade de digitar uma senha.

Ele também permite configurações complexas para que você possa desativar a necessidade de uma senha apenas para um comando muito específico, para não anular totalmente a segurança.

su usa principalmente o pam para autenticação e você pode modificar seu /etc/pam.d/su e adicionar uma linha

auth sufficient pam_succeed_if user = <put username here> quiet

Com essa linha adicionada, você não precisa digitar uma senha ao executar su como o usuário especificado.

    
por 04.10.2012 / 12:05
2

Primeiro, que você queira fazer um su para si mesmo é realmente estranho. Isso me deixa preocupada porque você entendeu mal alguma coisa fundamental, já que estou tendo dificuldades para descobrir o motivo pelo qual você precisaria fazer isso.

Em segundo lugar, o prompt de senha do su é realmente controlado pelo PAM (como a maioria dos pedidos de senha) se o seu sistema usa o PAM. Certamente, todas as principais distribuições do Linux fazem. Por exemplo, aqui está o topo de /etc/pam.d/su da minha máquina Debian:

#
# The PAM configuration file for the Shadow 'su' service
#

# This allows root to su without passwords (normal operation)
auth       sufficient pam_rootok.so

Essa primeira linha não comentada é a razão pela qual o root não precisa de uma senha. Se você comentou, root seria solicitado por uma senha (e você provavelmente quebraria muitos scripts!).

Eu não sei de um módulo pam padrão destinado a comparar o usuário atual e de destino, mas você poderia usar o pam_exec.so para fazê-lo. Algo como isso (que, confesso, não tenho certeza das implicações de segurança):

auth       sufficient pam_exec.so seteuid quiet /usr/local/sbin/pam-same-user

onde /usr/local/sbin/pam-same-user é um script como:

#!/bin/sh

[ "$PAM_USER" = "$PAM_RUSER" ]

Mais uma vez, gostaria de enfatizar que não tenho certeza das implicações de segurança disso.

    
por 04.10.2012 / 20:23