Классическая ошибка.
По ошибке мы сделали это sudo chown -R ubuntu:www-data /
на сервере Ubuntu 20.04 AWS EC2. Хотя есть много сообщений, которые указывают на то, что я не могу спасти машину и должен переустановить новую, я хочу сделать копию postgres, которая работает на этом сервере. В настоящее время мы не можем выполнить ни одной команды с помощью sudo. Следовательно, мы не можем запустить postgres или войти через phppgadmin.
Мы сделали следующее:
- Остановил экземпляр
- Отсоединил том
- Создан новый экземпляр
- Прикрепленный том
- Смонтировал том
- В новом экземпляре изменен на root
- сделал
chown -R root:root /mnt/rescue
(изменил это наroot:ubuntu
,ubuntu:ubuntu
, и т.д.) - сделал
chmod -R 4755 /mnt/rescue
(также сделал0755
,ug-s
и т.д.) - Вышел из корня
umount /mnt/rescue
- Закройте экземпляр спасателя.
- Отсоединить том
- Присоедините том к поврежденной машине. Машина указывает нового владельца, но sudo не работает.
- Мы попробовали создать новый экземпляр - прикрепили этот исправленный том, обновили /etc/fstab - перезагрузили экземпляр. Том был объединен с машиной. После перезагрузки - та же проблема - не удалось выполнить sudo.
Конечно, мы можем пересоздать машину или сделать резервную копию и восстановить. Однако некоторые критически важные данные находятся в postgres. Как мне выполнить sudo или извлечь файлы из мертвого postgres.
Мы постоянно сталкиваемся с ошибкой:
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
Однако когда я выполняю ls -l где угодно из /usr или /usr/bin - все права собственности на все файлы остаются у ubuntu:ubuntu или других комбинаций, которые мы пробовали.
решение1
Попробуйте установить бит setuid и сделать его исполняемым для root, что является разрешением по умолчанию (rws) для sudo.
chmod u+s /mnt/rescue/usr/bin/sudo
chmod +x /mnt/rescue/usr/bin/sudo
Хотя это может быть полезно для восстановления системы, существует множество других файлов и каталогов, которые имеют другие разрешения и владельца, и их индивидуальная настройка может быть утомительной.