Как восстановить поврежденный файл sudoers, не имея возможности использовать sudo?

Когда я это сделал:

iptables -I INPUT 4 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

Я получил ошибку:

iptables: Index of insertion too big.

Причина в том, что у меня нет никаких политик, и поэтому часть «INPUT 4» пытается вставить в индекс 4, когда он должен быть index = 1. Чтобы просмотреть ваши правила, выполните:

sudo iptables --list-rules

Затем вставьте по соответствующему индексу. (В большинстве случаев):

sudo iptables -I INPUT 1 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

Наконец-то это заработало!

  • My virtualbox settings are:

    • host port 8080,
    • guest IP 10.0.2.15
    • guest port 80

Файл конфигурации nginx::

server {
  listen 0.0.0.0:80;

  location / {
      proxy_pass http://localhost:9000;
      }
}
29
15.11.2021, 09:24
2 ответа

Загрузитесь в живую среду и исправьте ее оттуда.

Это, очевидно, требует либо физического доступа, либо «физического -эквивалентного» доступа (при работе с виртуальной машиной или VPS ), но это почти всегда работает, не заботится о том, какая у вас система инициализации, и не заботится о том, есть ли у вас пароль root.

Общий подход относительно прост:

  1. Подготовьте live CD (или другой загрузочный носитель ), совместимый с используемой вами ОС (В основном это сводится к поддержке определенной комбинации драйверов хранилища и файловых систем, необходимых для монтирования корня файловая система ).
  2. Загрузите уязвимую систему с этого загрузочного носителя.
  3. Где-нибудь смонтируйте корневую файловую систему уязвимой системы.
  4. Отредактируйте и сохраните файл.
  5. Перезагрузка.

Такое исправление работает, потому что оно полностью обходит средства управления доступом уязвимой системы, позволяя вам делать практически все, что вы хотите. Этот уровень неограниченного доступа к системе является частью того, почему физическая безопасность так важна.

Обратите внимание, что при таком подходе вам может потребоваться сделать что-то особенное при перезагрузке обратно в «нормальную» систему, чтобы все заработало правильно. При стандартной установке Ubuntu в этом нет необходимости, но если вы используете SELinux (или, что менее вероятно, IMA и EVM ), вам может потребоваться добавить дополнительные параметры загрузки, а затем запустить команду из загруженной системы. исправить защитные метки.


Для тех, у кого есть пароль root, просто используйте однопользовательский -режим.

Systemd называет это «режимом спасения», но все остальные просто называют его однопользовательским -режимом.По сути, это загружает корневую оболочку, в которой почти ничего не работает, кроме критически важных служб. Он традиционно используется для устранения именно проблем такого типа.

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

6
16.11.2021, 17:20

Всякий раз, когда вы планируете экспериментировать с конфигурацией sudo, рекомендуется держать открытым еще один корневой терминал :на случай, если вы что-то сломаете, у вас уже будут права исправить это.

Если невозможно держать клемму открытой (, т.е. ваши эксперименты включают перезагрузку ), установите фактический пароль для пользователя root. Затем, если sudoне работает, вы можете просто войти в систему как root(, открыть новую консоль или запуститьsu)и исправить вашу систему.

-1
18.11.2021, 13:45

Теги

Похожие вопросы