
Мне нужно войти в режим восстановления моего RedHat Box, который запущен удаленно на виртуальной машине.
Я использую RedHat 5 64-бит Enterprise Edition.
Я вошел в ящик с помощью SSH. Я могу перезапустить его с помощью команды restart, но мне нужно знать, смогу ли я подключиться к нему по SSH, так как я использую его удаленно и не могу войти через пользовательский интерфейс.
Настоящая проблема в том, что я сделал это chown -R $USER /
в корневом каталоге.
Я пытался сделать это в качестве эксперимента, не осознавая последствий, чтобы что-то заработало, но это почему-то не работало даже с использованием sudo.
Я убил его на полпути. Но из-за этой глупости я не могу использовать sudo.
Я читал, что могу что-то сделать в режиме восстановления, но не понимаю, как мне попасть в режим восстановления удаленно. Я не могу переустановить Linux, это невозможный вариант.
Можно ли как-то вернуть себе права sudo?
На данный момент это не работает:
chown root:root /usr/bin/sudo
chown: changing ownership of `/usr/bin/sudo': Operation not permitted
sudo chown root:root /usr/bin/sudo
sudo: must be setuid root
решение1
Вы не можете войти в режим восстановления по ssh, так как ssh не будет работать. Вам нужен способ попасть в консоль. Если это виртуальная машина и вы являетесь владельцем хоста, должен быть какой-то способ подключиться к хосту и попасть в консоль. Если это служба вроде AWS, то вам не повезло, и вам нужно восстановить его каким-то другим способом, например, создать новый экземпляр и отсоединить корневой том от плохого экземпляра и смонтировать его на новом, чтобы исправить это.
решение2
Redhat использует Systemd для запуска/остановки заданий.
Если вы находитесь в режиме спасения, он использует цели rescue
или emergency
.
Вам необходимо настроить sshd (и его зависимости) для работы также на этих уровнях выполнения (=целях, в терминологии systemd).
Здесьвы можете узнать больше о тонкой настройке systemd. Некоторые Redhatдокументытакже может быть пригоден для использования.
решение3
Проблема решена, и этот вопрос можно закрыть. Однако, мне не удалось сделать это через ssh. Мне пришлось выключить экземпляр на виртуалке и перезагрузить его. Выполнение этого через ssh остается открытым для обсуждения.
Как решить проблему путем перезагрузки экземпляра rhel5:
1.Boot the system into single user mode (do this by pressing esc on the boot screen. you will get a terminal on the boot screen after doing this)
2.do chmod 0440 /etc/sudoers
Which should look like -r--r----- 1 root root 5882 Nov 19 18:03 /etc/sudoers
3.chown root:root /usr/bin/sudo
4.chmod 4111 /usr/bin/sudo
5.chmod 0440 /etc/sudoers
6.chmod 0770 /var/bin/sudo/$USERNAME (note: you may have to use /var/run/sudo/$USERNAME if /var/bin does not exist)
7.Reboot the machine in runlevel-5. (type init 5)
Это установит uid на root и устранит ошибку sudo.