Как исправить нарушенное владение "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
и выполняет проверки работоспособности перед сохранением.