Чому я можу почати кореневу оболонку з 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 не може увійти, але чому я можу увійти до користувача root sudo su?

Чому я не можу увійти до користувача root від su rootабо su -?


1
"У другому полі файлу тіні !, означає, що користувач root не може увійти" Ні, це не так. Де ти це чув?
Гонки легкості по орбіті

@LightnessRacesinOrbit, що це означає?
Джордж Удосен

@George: Муру цитував посібник у своїй відповіді та детально пояснив його. Ви повинні прочитати документацію!
Гонки легкості по орбіті

Відповіді:


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. Якщо встановити один із цих параметрів і спробувати використовувати пароль, коли пароль заблокований, це не вдасться .


Чудово, це означає, що я можу перейти на будь-якого користувача на sudo з моїм паролем або це активний користувач, або блокує користувача, правда?
Сінуш

1
@Sinoosh не передбачає інших обмежень, так
муру

4

Тепер давайте розглянемо команди відповідно:

  1. sudo su:

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

    • Це фактично переходить на кореневого користувача, який з /etc/shadowфайлу не може увійти, тому використання цих команд не буде працювати. Якщо ви хочете, щоб вони працювали, кореневий обліковий запис потрібно розблокувати, вказавши пароль.

Підсумок:

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

Джерело: Яка різниця між "su -" та "su root"?


Дякую, це означає, sudo suщо не бачить поля пропуску у тіньовому файлі?
Синуш

1
@Sinoosh sudo su- неправильний спосіб запуску sudo shабо sudo bash.
Бакуріу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.