'sudo', 'gksu' e 'gksudo' sem senha

0

Em Fedora , estou surpreso que, se minha conta de administrador não tiver uma senha, sudo , gksu e gksudo não vai me pedir uma! (não é causado por /etc/sudoers ). No Ubuntu, eles vão me pedir uma senha e se Eu dou um vazio, eles não me deixam passar.

  1. Como o Fedora faz isso? (quais são os detalhes técnicos do design no Fedora que causam este comportamento?)
  2. Como posso fazer o Ubuntu se comportar assim? (como configurar o Ubuntu para agir como o Fedora a esse respeito?)

Questões semelhantes foram feitas muitas vezes antes, mas abordam apenas sudo e não gksu , gksudo nem qualquer outra ferramenta gráfica. Além disso, nem sudo -i nem edição /etc/sudoers são necessários; este é o comportamento padrão do Fedora.

É claro que isso provavelmente não é recomendado , é só pedir isso para que eu possa aprender mais sobre como o Linux funciona.

    
por ThePiercingPrince 23.08.2015 / 17:47

1 resposta

1

Primeiro, uma observação sobre os sistemas de segurança envolvidos: sudo e gksudo são regidos por sudoers , mas grande parte da GUI usa polkit , cuja configuração é independente de sudoers . Não há muitos fatores comuns:

  1. O Ubuntu usa o grupo sudo para conceder privilégios administrativos em ambos os sistemas.
  2. Ambos suportam PAM , portanto a configuração do PAM pode afetar os dois.

Em particular, a configuração padrão do PAM do Fedora tem:

$ grep 'auth.*pam_unix' /etc/pam.d -R
/etc/pam.d/password-auth-ac:auth        sufficient    pam_unix.so nullok try_first_pass
/etc/pam.d/system-auth-ac:auth        sufficient    pam_unix.so nullok try_first_pass
/etc/pam.d/system-auth:auth        sufficient    pam_unix.so nullok try_first_pass
/etc/pam.d/vmtoolsd:auth       sufficient       pam_unix2.so nullok
/etc/pam.d/vmtoolsd:auth       sufficient       pam_unix.so shadow nullok
/etc/pam.d/vmtoolsd:auth       required         pam_unix_auth.so shadow nullok
/etc/pam.d/password-auth:auth        sufficient    pam_unix.so nullok try_first_pass

Contrast Ubuntu:

$ grep 'auth.*pam_unix' /etc/pam.d -R
/etc/pam.d/common-account:account   [success=2 new_authtok_reqd=done default=ignore]    pam_unix.so 
/etc/pam.d/common-auth:auth [success=2 default=ignore]  pam_unix.so nullok_secure

O ponto importante é nullok_secure sendo definido para pam_unix no Ubuntu vs nullok no Fedora. De acordo com man pam_unix :

nullok
   The default action of this module is to not permit the user access
   to a service if their official password is blank. The nullok
   argument overrides this default and allows any user with a blank
   password to access the service.

nullok_secure
   The default action of this module is to not permit the user access
   to a service if their official password is blank. The nullok_secure
   argument overrides this default and allows any user with a blank
   password to access the service as long as the value of PAM_TTY is
   set to one of the values found in /etc/securetty.

Agora, /etc/securetty contém :0 e outros valores de comando para sessões gráficas, por isso gksudo , por exemplo, funcionará com senhas vazias.

# Local X displays (allows empty passwords with pam_unix's nullok_secure)
:0
:0.0
:0.1
:1
:1.0
:1.1
:2
:2.0
:2.1
:3
:3.0
:3.1
#...

O Polkit, por outro lado, parece deixar o PAM_TTY indefinido, então securetty não o afeta. sudo , obviamente, não funcionará, já que você sempre executa sudo de um terminal, e o pseudoterminal alocado a ele ( /dev/ptsX ) não será mencionado em /etc/securetty . Você pode, no entanto, usar sudo nos TTYs.

Então, como fazemos o Ubuntu como o Fedora? Basta alterar nullok_secure em common-auth para nullok :

sudo sed -i.bak '/pam_unix/s/nullok_secure/nullok' /etc/pam.d/common-auth
    
por muru 24.08.2015 / 16:46