17

Страница руководства утверждает, что PermitRootLogin

Указывает, может ли root войти в систему с помощью ssh(1) .

Однако неясно, основана ли эта проверка на имени пользователя ("root") или UID (0).

Что произойдет, если учетная запись root будет переименована в "admin"? Сможет ли "admin" войти в систему, когда PermitRootLogin=no?

Что произойдет, если есть две учетные записи с UID = 0, то есть "root" и "admin"? Сможет ли кто-нибудь из них войти в систему?

2 ответа2

19

Я ценю подход @mtak в другом ответе, но ответ очевиден даже без этих испытаний.

Он основан на UID , как вы можете видеть в исходном коде openssh:

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

Также каждый метод аутентификации показывает что-то вроде

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

grep -ный далее в коде, вы можете заметить, что нет strcmp('root', pw->pw_name) или какой - либо альтернативы, если это будет достаточно для вас.

16

Похоже, что проверка выполняется по UID (проверено на OpenSSH_6.7p1 Debian-5+deb8u3, OpenSSL 1.0.1t 3 May 2016):

Отключите PermitRootLogin:

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

Убедитесь, что пользователь с именем admin создан с UID 0:

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

Убедитесь, что пользователь может быть использован для входа в систему:

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

Проверьте, можем ли мы войти в систему, используя SSH:

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

Если мы включим PermitRootLogin:

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

И попробуйте войти в систему:

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:~# 

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .