$cat /etc/passwd |grep -i root
root:x:0:0:root:/root:/bin/bash
$sudo cat /etc/shadow |grep -i root
root:!:17179:0:99999:7:::
Во втором поле теневого файла, !
пользователь root средств не может войти в систему, но почему я могу войти в пользователя root sudo su
?
Почему я не могу войти в пользователя root su root
или su -
?
!
в shadow
поле зашифрованного пароля записи означает, что никакой пароль не может пройти проверку подлинности против него. От man shadow
:
If the password field contains some string that is not a valid
result of crypt(3), for instance ! or *, the user will not be able
to use a unix password to log in (but the user may log in the
system by other means).
Как в руководстве говорится, это не означает, что Вы не можете войти в систему как корень. Это просто означает, что Вы не можете войти в систему как корень с помощью пароля для корневой учетной записи. (Можно войти в систему как корень через SSH, использующий ключи SSH, например, при конфигурировании его ранее даже если учетная запись заблокирована.)
sudo
обычно проходит проверку подлинности с Вашим паролем, не корень. Это может быть изменено путем установки одного из targetpw
, rootpw
или runaspw
в sudoers
. Если Вы устанавливаете эту опцию и пытаетесь использовать пароль, когда пароль заблокирован, который перестанет работать.
Теперь давайте посмотрим на команды соответственно:
sudo su
:
sudo
выполняет команду su
(замените пользователем) с полномочиями пользователя root поэтому, даже если /etc/shadow
говорит или имеет root:!:17179:0:99999:7:::
это будет все еще команды выполнения с полномочиями пользователя root.su -
или su root
:
/etc/shadow
файл не может войти в систему настолько использующий эти команды, не будет работать. Если Вы хотите, чтобы они работали затем, корневая учетная запись должна быть разблокирована путем предоставления ему пароля.Сводка:
su -
0r su root
переключатели к пользовательскому корню, не существует так, этого не может произойти, но sudo su
выполнения переключают команду с root
полномочия, так в этом случае это пойдет, если Вы будете в sudo
группа. Вы на самом деле не входите в систему как корень в этом случае, просто действуя как корень, таким образом, он пойдет.