Как исправить нарушенное владение "etc/sudoers" на EC2?

Предыстория: я пытался заставить PHP выполнить узел, но в итоге изменил права доступа / владельца для, вероятно, большего количества файлов и папок, чем нужно.

Однажды я наткнулся на чье-то предложение изменить /etc/sudoers/ так что устанавливает Defaults requiretty, Я пытался nano в это и не смог. Итак, у меня есть идея sudo chown ec2-user /etc/sudoers и с тех пор я застрял с этой проблемой.

Я смог вернуться в nano и отменить изменения в тексте, но именно владелец файла является причиной проблемы.

Я думаю, что он наиболее близко соответствует ответу на вопрос вот этот:
Сломанный sudo на веб-сервисах amazon ec2 linux centOS (но этот относится к ошибке разбора, опечатка в файле, который я предполагаю).

Как я могу это исправить? Я навсегда испортил этот экземпляр EC2?

2 ответа

Решение

Хотя ознакомление с документацией Amazon было полезным (согласно ответу @Ouroborus), я наконец-то понял, как исправить этот беспорядок, в который я попал.

Посмотрим, смогу ли я вспомнить все шаги...

  • Подготовьте новый экземпляр

    • Самый простой способ максимально приблизиться к существующему экземпляру - это перейти в раздел "Мои AMI" и выбрать тот же образ AMI, который использовался вашим проблемным экземпляром.


    • Поскольку это просто экземпляр для восстановления, выберите тип экземпляра Free:

    • Этот шаг очень важен! Убедитесь, что маска подсети в этом экземпляре восстановления соответствует вашему проблемному экземпляру (в противном случае вы не сможете подключить проблемный EBS к своему экземпляру восстановления! Я нашел это трудным путем...)

    • Вы можете нажать "Далее: Добавить хранилище", оставить эту страницу как есть и нажать "Далее: Экземпляр тега".

    • В поле Значение введите что-то вроде "Восстановление" (подойдет любое имя, в моем случае это просто отметка цели этого экземпляра).

    • Должен быть один последний шаг / всплывающее окно, в котором вам предлагается создать входящую / исходящую группу безопасности. Убедитесь, что выбрали тот же, который у вас уже есть для вашей проблемы. Это означает, что вы можете повторно использовать тот же файл ключей SSH для входа в этот экземпляр (через Putty или любую другую программу, которую вы предпочитаете).

Как только этот экземпляр восстановления создан...

  • Обязательно следите за именами томов EBS (поскольку вам нужно будет смонтировать / размонтировать проблемный том между этим Временным экземпляром и обратно в исходный экземпляр).
  • Отметьте, по какому пути ваш экземпляр проблемы обращается к тому (например: /dev/xvda).
  • Хорошо, теперь остановите (не завершайте!!!) ваш проблемный экземпляр.
  • Вам может потребоваться обновить браузер, чтобы подтвердить его остановку (это может занять несколько секунд / минут).
  • Теперь перейдите к разделу томов EBS:

  • Размонтируйте том, который в данный момент подключен к экземпляру проблемы (вы увидите, что состояние вашего экземпляра помечено как остановленное в одном из крайних правых столбцов).

  • Обновите, чтобы подтвердить, что объем "доступен".
  • Подключите том к новому экземпляру восстановления (если вы не видите свой экземпляр восстановления в списке, возможно, вы пропустили шаг "подсеть", о котором я упоминал выше), и вам нужно будет заново повторить ваш экземпляр восстановления, чтобы соответствовать этой подсети. установка).

  • Обновите, подтвердите, что он теперь "используется" в вашем экземпляре восстановления.

  • Теперь перейдем к забавным шагам командной строки!

    • Войдите в систему / введите SSH в окне восстановления (вы можете найти IP-адрес / адрес хоста экземпляра восстановления в разделе " Экземпляры " в AWS).

    • Установите текущий рабочий каталог в корень:
      cd /

    • Создайте каталог для хранения вашего проблемного тома EBS:
      sudo mkdir bad

    • Смонтировать это: sudo mount /dev/xvdf /bad

      (ПРИМЕЧАНИЕ. Если это не работает, возможно, вы столкнулись с той же проблемой, что и я, поэтому попробуйте выполнить следующее: sudo mount /dev/xvdf1 /bad Спасибо за этот ответ /questions/143087/terminalnyij-host-izmenen/143091#143091).

    • Если все идет хорошо, вы должны быть в состоянии /bad директории и увидите ту же структуру файлов, которую вы обычно видите, когда она монтируется на исходный (в настоящее время проблемный) экземпляр.

    • ОЧЕНЬ ВАЖНО Обратите внимание на следующие пару шагов, как я использую ./etc и не /etc указать, чтобы изменить разрешения / право собственности на /bad/etc/sudoers файл, а не этот том восстановления EBS! Достаточно одного сломанного тома, верно?

    • Пытаться:
      cd /bad
      ls -l ./etc/sudoers
      ... затем следуйте этому:
      stat --format %a ./etc/sudoers

    • Подтвердите право собственности на этот файл и / или chmod значение на самом деле неверно.

Чтобы исправить его chown владение, сделайте это:

sudo chown root:root ./etc/sudoers

Чтобы исправить его chmod значение, сделайте это:

sudo chmod 0755 ./etc/sudoers

Теперь нужно просто поменять местами шаги!

  • Как только это будет сделано, пора размонтировать: cd /
    sudo umount /bad

  • Вернуться на страницу конфигурации AWS, перейти в раздел EBS Volume.

  • Размонтируйте фиксированный том из экземпляра Recovery.
  • Обновить, подтвердить это available,
  • Смонтируйте его обратно на оригинальный экземпляр (НЕ ЗАБУДЬТЕ - используйте тот же /dev/whatever/ путь к тому, который использовался вашим исходным экземпляром до всех этих шагов).
  • Обновить, подтвердить это in-use,
  • Теперь перейдите в раздел " Экземпляры " и снова запустите исходный экземпляр. (Для перезагрузки может потребоваться несколько секунд / минут).
  • Если все хорошо, теперь вы сможете войти в систему и использовать SSH в своем экземпляре EC2 и использовать sudo снова!

Поздравляю, если это сработало и для вас!

Если нет.... Я так.... очень жаль, что это происходит с вами:(

Да, ты сломал это очень хорошо. Вы не можете выполнить sudo из-за права собственности, а экземпляры Amazon настроены так, чтобы запретить root без доступа sudo.

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

После того, как вы исправили это, но прежде чем пытаться редактировать /etc/sudoers снова читайте дальше visudo, инструмент, который помещает вас в редактор с предустановленным /etc/sudoers и выполняет проверки работоспособности перед сохранением.

Другие вопросы по тегам