1

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

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

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

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

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

2 ответа2

2

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

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

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

1

Хотя ознакомление с документацией 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 , благодаря этому ответу https://serverfault.com/a/632906 / 356372).

    • Если это пойдет хорошо, теперь вы должны быть в состоянии CD в этот /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 !

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .