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:
- O Ubuntu usa o grupo
sudo
para conceder privilégios administrativos em ambos os sistemas. - 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