É PermitRootLogin baseado em UID ou nome de usuário?

17

A página man afirma que PermitRootLogin

Specifies whether root can log in using ssh(1).

No entanto, não está claro se essa verificação é baseada no nome do usuário ( "root" ) ou no UID ( 0 ).

O que acontece se a conta root for renomeada para "admin" ? "admin" será capaz de logar quando PermitRootLogin=no ?

O que acontece se houver duas contas com UID = 0, ou seja, "root" e "admin" ? Algum deles poderá fazer o login?

    
por ge0rg 24.08.2016 / 14:00

2 respostas

16

Parece que a verificação é feita no UID (testado em OpenSSH_6.7p1 Debian-5+deb8u3, OpenSSL 1.0.1t 3 May 2016 ):

Defina PermitRootLogin como desativado:

mtak@pdv1:~$ grep PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin no

Certifique-se de que um usuário chamado admin seja criado com o UID 0:

mtak@pdv1:~$ sudo grep admin /etc/passwd
admin:x:0:0:Root User:/root:/bin/bash

Verifique se o usuário pode ser usado para fazer o login no sistema:

mtak@pdv1:~$ su - admin
Password: 
root@pdv1:~# 

Verifique se podemos fazer logon no sistema usando o SSH:

mtak@rubiks:~$ ssh admin@pdv1
admin@pdv1's password: 
Permission denied, please try again.

Se ativarmos o PermitRootLogin em:

mtak@pdv1:~$ grep PermitRootLogin /etc/ssh/sshd_config
PermitRootLogin yes

E tente fazer o login:

mtak@rubiks:~$ ssh admin@pdv1
admin@pdv1's password: 
Linux pdv1 4.4.8-1-pve #1 SMP Tue May 17 16:14:08 CEST 2016 x86_64
Last login: Wed Aug 24 12:05:28 2016 from xxx
root@pdv1:~# 
    
por 24.08.2016 / 14:10
19

Eu aprecio a abordagem de @mtak na outra resposta, mas a resposta é óbvia mesmo sem esses testes.

Ele é baseado no UID , como você pode ver no código-fonte do openssh:

if (authctxt->pw->pw_uid == 0 &&
            !auth_root_allowed(auth_method))
authenticated = 0;

Além disso, todos os métodos de autenticação mostram algo como

if (pw->pw_uid == 0 && options.permit_root_login != PERMIT_YES)
    ok = 0;

grep -ing mais no código, você pode notar, não há strcmp('root', pw->pw_name) ou alguma alternativa, se for o suficiente para você.

    
por 24.08.2016 / 16:07