Почему я могу запустить корневую оболочку с помощью sudo даже с помощью! 'в его теневой записи?

9
$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 не может войти в систему, но почему я могу войти в корневой пользователь sudo su ?

Почему я не могу войти в root пользователя su root или su - ?

    
задан Sinoosh 12.02.2017 в 08:43
источник

2 ответа

15

. ! в зашифрованном пароле пароля 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).

Как говорится в руководстве, этот не означает , что вы не можете войти в систему как root. Это просто означает, что вы не можете войти в систему с правами root, используя пароль для учетной записи root. (Вы можете войти в систему с правами администратора через SSH с помощью SSH-ключей, например, если вы настроили его ранее, даже если учетная запись заблокирована.)

sudo обычно аутентифицируется с помощью вашего пароля, а не root. Это можно изменить, установив один из targetpw , rootpw или runaspw в sudoers . Если вы установите один из этих параметров и попытаетесь использовать пароль, когда пароль заблокирован, , который будет терпеть неудачу .

    
ответ дан muru 12.02.2017 в 11:01
источник
4

Теперь давайте посмотрим на команды соответственно:

  1. sudo su :

    • sudo запускает команду su (замените пользователя) привилегиями root, поэтому даже если /etc/shadow говорит или имеет root:!:17179:0:99999:7::: , она все равно будет запускать команды с привилегиями root.
  2. su - или su root :

    • Фактически переключает на пользователя root , который из файла /etc/shadow не может войти в систему, поэтому использование этих команд не будет работать. Если вы хотите, чтобы они работали, то учетная запись должна быть разблокирована, указав ей пароль.

Резюме:

su - 0r su root переключается на пользователя root , не существует, так что этого не может быть, но sudo su запускает команду switch с root привилегий, поэтому в этом случае он будет действовать, если вы находитесь в группе sudo . В этом случае вы не регистрируетесь как root, просто действуя как root , поэтому он будет идти.

Источник: В чем разница между «su» и «su root»?

    
ответ дан George Udosen 12.02.2017 в 09:27