После исчерпывающего поиска я не удался найти любой способ решить это и должен был восстановить сервер.
(повторение моего ответа SE)
Вы работаете на объеме EBS? Можно ли позволить себе завершить работу экземпляра в течение нескольких минут?
Если Вы делаете, то можно временно остановить текущий экземпляр, запустите другой экземпляр, смонтируйте объем EBS первой инстанции и исправьте ее полномочия, то размонтируйте его и перезапустите первую инстанцию.
Если у Вас есть какие-либо сценарии, которые работают через крон как корень, и у Вас все еще есть способность отредактировать их, Вы могли добавить следующее.
# chown root.root /usr/bin/sudo
# chmod u+s /usr/bin/sudo
Иначе, когда Вы выясняете, как получить корень на поле, необходимо сделать те команды.
(перефразирующий это, так как, по-видимому, это не было понято под некоторыми людьми),
Ядра Linux рекламируют _POSIX_CHOWN_RESTRICTED
как верный, который определяется для значения этого только root
может использовать chown()
. Если бы это было установлено ложь, то это означало бы, что существует способ для обычных пользователей изменить владение их файлов.
chown(3)
имеет формулировку, которая предполагает, что возможно измениться _POSIX_CHOWN_RESTRICTED
на уровне ядра; Linux на самом деле не позволяет этому быть измененным, тем не менее, таким образом, нет просто никакого пути к не -root
кому: chown
их собственные файлы.
Перезагрузите компьютер и удерживайте F8 после заставки BIOS, чтобы открыть меню загрузки GRUB. Если вы используете один из популярных дистрибутивов Linux (что-то вроде Ubuntu), должна быть возможность запустить Linux в режиме восстановления (этот параметр можно найти в подменю «Дополнительные параметры», если вы используете GRUB 2). Запустите Linux в режиме восстановления, и (если вы используете популярный дистрибутив) в конечном итоге вам должно быть представлено короткое меню параметров восстановления. Сначала выберите параметр восстановления fsck, чтобы перемонтировать / в режиме чтения-записи и смонтировать все остальные файловые системы в fstab. Затем выберите вариант, который даст вам приглашение root. Поскольку оболочка входит в систему как root, все команды будут запускаться как root без необходимости использования команды sudo. Вы можете использовать это для восстановления разрешений на / usr / bin / sudo:
chown root:root /usr/bin/sudo
chmod u+s /usr/bin/sudo
exit
После того, как вы это сделаете, вы можете выбрать вариант «возобновить нормальную загрузку» (или просто перезагрузить компьютер, если у вас его нет) и войдите в систему в обычном режиме и воспользуйтесь командой sudo для восстановления остальных ваших разрешений. Для этого вам обычно нужно скопировать разрешения с другого компьютера, у которого есть «достаточно близкие» разрешения. Я столкнулся с этой проблемой на своем рабочем столе, когда вручную установил кросс-компилятор, который я только что создал, используя rsync с флагом -a. После того, как я понял, что хочу, чтобы файлы кросс-компилятора были привязаны к root, а не ко мне, я по глупости запустил chown -R root: root / usr и случайно отключил мои разрешения. К счастью, у меня был ноутбук с таким же дистрибутивом и почти такой же набор установленных пакетов.