Как я могу исправить недостающее / переименованное libc.so.6?

PC freeezes с высоким процессором (от вентилятора до макс.). У вас может быть небольшое предупреждение об ошибках об ошибке на некоторых процессорах, которые видны только на консоли. Замораживание может произойти в течение нескольких минут. На моем ПК он даже делает следующий старт (powercycle), который ведет себя странно: мне пришлось отключить питание, подождать несколько, затем снова включить питание. Удаление интеллектуального микрокода делает трюк!

7
задан 28 April 2018 в 21:34

6 ответов

Вам следует просто загрузиться с загрузочных USB (или CD/DVD) и переименовать [Ф3] обратно.[!dе д0]

[Ф4] не работать с setuid для исполняемых файлов. Но, если вы хотите, вы можете использовать [F5], чтобы сделать последнюю минуту резервных копий (которые не требуют выполнения команд с правами root) перед перезагрузкой. Это можно исправить без загрузочных USB/компакт-диск/DVD-диск, но вам все равно нужно перезагрузить, и я предлагаю использовать один.

[ф6] не работает с командами с setuid.

в данный момент вы пытаетесь сделать [ф7] использовать переименованный общей библиотеки путем установки нажать [F8]. Это не будет работать. Вы не можете изменить то, что разделяемые библиотеки [F9] и ссылки в с [ф10], и он не работает с любой из альтернатив [ф11] либо. Если Вы смогли сделать это, то это будет очень серьезной ошибки безопасности.

кстати [F12] и [от f13] (и [ф14]) работы позволяют повысить привилегии в том, что те исполняемые файлы имеют бит setuid set0, которая заставляет их работать, как пользователь, который ими владеет, что для тех, исполняемые пользователя root, а не пользователя, который фактически запускает их. Когда они бегут, они очень тщательно проверять то, что вы просите их сделать. Таким образом, при условии их разработчики были достаточно осторожны, они только позволяют пользователям выполнять действия, которые они уполномочены осуществлять.

[ф15] не влияет на функцию setuid исполняемые файлы запускать другие пользователи, чем их хозяева. Это абсолютно важно для безопасности. В противном случае, могли может сделать свою собственную библиотеку и сила такая программа, Как [ф16], чтобы использовать ее, и тогда кто угодно может получить привилегии суперпользователя. Вы можете использовать [f17 в] для битов setuid программ, и root может использовать ее для запуска просто ни о чем. Но как не-root пользователь, Вы не можете использовать его для запуска программ как [ф18], [зг19], и [ф20], что не установлен бит setuid корень.

если вы уже имели оболочку с правами root, тогда вам не нужно перезагрузить. Но даже если у вас есть учетная запись root включен-то есть, даже если у вас был задан пароль для него, что вы могли бы использовать для входа в систему как root с помощью команды [клавиши f21] ... вы все равно не сможете устранить проблему без перезагрузки. Например, [ф22] в Ubuntu также требует [ф23], а также установлен бит setuid root, чтобы [ф24] не будет работать с ней.0 (См. также бит setuid[!с комментариями д7]'.)

проблема здесь заключается в том, что существующих механизмов для выполнения действий уже требуется запускать setuid исполняемые файлы, принадлежащие root, как самому себе, но [f25 привод датчика] не имеет никакого эффекта в этой ситуации. Если бы не необходимость выполнения действий как root, или если у вас уже есть корневой открытой оболочки--тогда вы могли бы переименовать его обратно без перезагрузки, а также без использования [ф26]. Это потому, что системы Ubuntu есть /bin/busybox, которая является статически. Это комментарии, включая [ф28] и cp команды. Вы можете запустить [f30 с] или вы можете запустить только [ф31], чтобы попасть снарядом в которых вы сможете выполнить команды. Запустить [f32 из] без аргументов, чтобы получить список поддерживаемых команд. У него даже есть версия dpkg!

Вы можете выполнять резервное копирование файлов (если вы хотите) и перезагрузки в рабочую среду.

я упоминаю busybox главным образом потому, что, хотя вы не сможете использовать его, чтобы получить привилегии суперпользователя и восстановления [ф35], вы или если у вас уже есть корневой открытой оболочки использовать его для резервного копирования любых файлов вы беспокоитесь о потере до перезагрузки в живой среде. [ф15] не влияет на функцию setuid исполняемые файлы запускать другие пользователи, чем их хозяева., но так как вас беспокоит, вы можете использовать [f36 в] скопировать все важные файлы-документы, как вы созданы или изменены с момента последнего резервного копирования--в другое место.

Перезагрузка в обычном режиме может и не очень далеко, потому что нормального завершения работы фактически связаны с запуском динамически связанные программы, которые зависят от [фунции f37]. Вы можете хотеть использовать Alt+SysRq+REISUB, чтобы спокойно перезагрузиться. Это не идеальный способ, чтобы закрыть, но это, наверное, лучше, чем в основном безрезультатны попытки перезагрузить затем жесткий сброс. Другой вариант заключается в попытке перезагрузиться, а затем попытаться использовать метод REISUB, чтобы взять его остальная часть пути. (Если вы хотите Выключить машину, а не перезагрузка, использовать REISUO вместо REISUB.)

[d43 см.]когда вы делаете загрузочный из живой среды, переименование файла будет легко. Вам не надо chroot или что-нибудь приглянется. Просто смонтировать корневую файловую систему (что обычно это можно сделать одним щелчком мыши в обозревателе файлов, хотя вы можете использовать команду [ф39] если вам нравится). Затем, в терминале, используйте [ф40] или команды [ф41] восстановить libc.so.6. Вам потребуется sudo, но это прекрасно работает в реальной среде.[!d43 см.]

я знаю, вы говорили, что нет спасения диска. Было бы трудно, пожалуй, невозможно, чтобы создать загрузочный Live USB на той системе, где Вы не сможете запустить большинство программ. (Вы можете использовать [пулемет f44] для копирования и перемещения файлов, и он даже имеет [f45 с] системы comand, но я не рекомендую пытаться использовать его для этого. Как правило, вы должны быть в состоянии работать dd root-правами чтобы создать Live-носителя.) Возможно, кто-то предложит способ. Если у вас есть другой компьютер поставить жесткий диск в, надеюсь, вы можете создать его с этой машиной. Если нет, то лучше всего попросить знакомого, чтобы сделать один.

есть способ без живой компакт-диск/DVD/USB, но вы все равно должны перезагрузиться.

однако, [dрайвер d41]о[!dрайвер d41] альтернативы загрузке с внешнего носителя.0 Вам все равно придется перезагрузить, но вам не нужна живая система. Я не особенно рекомендуем это, так как это громоздкое; использование интерактивной среде легче. Вы можете сделать это не один, если вы действительно хотите, хотя.

как , чтобы использовать Alt+SysRq+REISUB указывали ранее в комментариях, может не будет работать, потому что большинство программ нужно libc.6.so (например, /bin/bash, который обеспечивает оболочка, она нужна). Но вы можете загружать систему с /bin/busybox sh как init, передав [ф50] в качестве параметра загрузки ядра в grub.0 это по сути тот же метод, как более общие init=/bin/sh (или init=/bin/bash), чтобы получить корневой оболочки, но с /bin/busybox sh вместо обычного /bin/sh, потому что [f55, которая] является динамически связаны и требует libc.so.6.

[размером d57]если вы хотите сделать это таким образом, удерживая нажатой левую клавишу Shift при (пере)загрузке и появляется меню grub. (Если переход не работает, используйте клавишу ESC.) С помощью клавиш со стрелками выберите Дополнительные параметры для Ubuntu и нажмите Enter. После этого вы Б нажмите Enter, потому что это нормально загрузиться, а не с пользовательскими опциями загрузки. Выберите любое ядро и нажмите e для редактирования параметров загрузки временно. Если есть несколько линий, и курсор находится не на линии, которая начинается с linux, сдвинуть его оттуда с помощью клавиш со стрелками. Добавить init=/bin/busybox sh в конец строки и нажать F10 для загрузки.[!размером d57]

Вы должны получить busybox в командной строке. Вам придется перемонтировать корневой файловой системы чтение / запись и переименовать libc.so.6 так он имеет правильное имя, которое он использовал, чтобы иметь. Для этого выполните следующие команды в Shell из busybox (там, где другие читатели, которые [от f60] в другом месте придется изменить имя каталога передан команде [ф61]):

[Ф1]

, то я рекомендую тогда вам синхронизировать любые кэшированные записи в файловую систему, он только для чтения, перемонтировать, и перезагрузка:

[Ф2]

(без -f, команда reboot не работает вообще в этой ситуации, как не соответствующего демон init работает.)

[г70]0 для тех, кому интересно: когда эти программы (например, [64-го фокуса]) на самом деле выполнить вашу команду или создать размер или некоторые другие альтернативные пользователя, как ваш реальный и эффективный идентификаторы пользователя имеют значение целевого пользователя. Но когда вы запустите их, прежде чем они сделали это, в то время как они являются определяющими, если они позволяют вам выполнять действия, которые вы просили, их эффективный идентификатор пользователя совпадает с корнем, а их реальный идентификатор пользователя-это все еще твое. Я упоминаю об этом, чтобы устранить распространенное заблуждение о том, как реальные и эффективные идентификаторы пользователя, работа в программах, как [f65 в]; Если вы никогда не слышали реальный и эффективный идентификаторы пользователя, смело игнорируйте эту сноску.[!г70]

0 для тех, кому интересно: когда эти программы (например, [64-го фокуса]) на самом деле выполнить вашу команду или создать размер или некоторые другие альтернативные пользователя, как ваш реальный и эффективный идентификаторы пользователя имеют значение целевого пользователя. Но когда вы запустите их, прежде чем они сделали это, в то время как они являются определяющими, если они позволяют вам выполнять действия, которые вы просили, их эффективный идентификатор пользователя совпадает с корнем, а их реальный идентификатор пользователя-это все еще твое. Я упоминаю об этом, чтобы устранить распространенное заблуждение о том, как реальные и эффективные идентификаторы пользователя, работа в программах, как [f65 в]; Если вы никогда не слышали реальный и эффективный идентификаторы пользователя, смело игнорируйте эту сноску.

[кадрах, снятых D80]0 [о d54]инициализации[!о d54][!кадрах, снятых D80]

0 это удастся на прохождение sh к busybox хотя вы могли бы ожидать, что это будет истолковано как последующий вариант загрузки ядра. В том числе кавычки предотвращает его от работы. Отметим также, что, в Ubuntu, статически [f75 в Джей] исполняемый файл называется просто busybox, а не [f77 на английском языке] (хотя пакет, который обеспечивает его называют busybox-static). Если вы удалили статически слинкованный busybox и установлен динамически слинкованный busybox и, тогда этот метод не будет работать, но это очень маловероятно, что вы сделали это.

5
ответ дан 22 May 2018 в 11:10
  • 1
    Спасибо за ваш ответ. Это только я знаю пароль root, поэтому должен быть способ разрешить мне открывать корневую оболочку, но, похоже, я не могу. Я сделал именно то, что вы ответили, чтобы исправить это с помощью DVD. – Hao 28 April 2018 в 22:15
  • 2
    @Hao su также является setuid root, как sudo и pkexec, и подчиняется тем же ограничениям LD_PRELOAD, что и они. Но мне приходит в голову, что без CD / DVD / USB, хотя лучший подход, вероятно, все еще нужен, вы можете решить его, загрузившись с init=/bin/busybox sh в качестве опции ядра в GRUB. Конечно, это требует перезагрузки. Я попытаюсь что-то добавить. Если я неправильно понял то, что вы сказали, и вы еще не исправили его и хотите получить информацию о загрузке на busybox sh сейчас, сообщите мне, и я могу попытаться что-то добавить, прежде чем идти в аф. – Eliah Kagan 28 April 2018 в 22:23
  • 3
    @Hao: вы не можете использовать пароль root, потому что (переименовав libc) вы сломали все «нормальные». способы его использования, включая вход в getty на другой текстовой консоли. Если у вас есть статически связанная su или sudo , вы можете использовать LD_PRELOAD=whatever LD_LIBRARY_PATH=whatever static-su --preserve-environment, чтобы передать эту настраиваемую среду в bash, запущенную как root. Но если вы этого не сделаете, вы должны просто использовать свой физический доступ к машине для загрузки в режиме восстановления (в обычном меню GRUB) или с диска DVD или USB. – Peter Cordes 29 April 2018 в 00:00
  • 4
    @PeterCordes Да, / запускается только для чтения, но busybox имеет mount, а перезагрузка rw работает. Он может быть записан, синхронизирован (busybox имеет sync), если он захочет, перезагрузите ro, и хотя встроенный reboot модуль busybox без параметров не работает здесь, поскольку нет правильного init, reboot -f должен. Это одна из причин, почему я так долго занимаюсь редактированием, кстати. Я разговариваю с Занной, которая проверяет это; На данный момент у меня нет возможности для удобного тестирования, но я хотел бы расширить свой ответ, потому что в противном случае я не смогу до него добраться некоторое время. Тестирование в основном, но не полностью, завершено пока. – Eliah Kagan 29 April 2018 в 01:25
  • 5
    Отправил ответ. Я не пытался тщательно это проверить; ваш ответ должен стать для людей, которым нужен рецепт. Я только намеревался провести обзор других вещей, которые возможны и интересны для понимания. – Peter Cordes 1 May 2018 в 11:53

Вам следует просто загрузиться с загрузочных USB (или CD/DVD) и переименовать libc.so.6 обратно.[!dе д0]

LD_PRELOAD не работать с setuid для исполняемых файлов. Но, если вы хотите, вы можете использовать [F5], чтобы сделать последнюю минуту резервных копий (которые не требуют выполнения команд с правами root) перед перезагрузкой. Это можно исправить без загрузочных USB/компакт-диск/DVD-диск, но вам все равно нужно перезагрузить, и я предлагаю использовать один.

LD_PRELOAD не работает с командами с setuid.

в данный момент вы пытаетесь сделать sudo использовать переименованный общей библиотеки путем установки нажать [F8]. Это не будет работать. Вы не можете изменить то, что разделяемые библиотеки [F9] и ссылки в с LD_PRELOAD, и он не работает с любой из альтернатив sudo либо. Если Вы смогли сделать это, то это будет очень серьезной ошибки безопасности.

кстати [F12] и [от f13] (и su) работы позволяют повысить привилегии в том, что те исполняемые файлы имеют бит setuid set0, которая заставляет их работать, как пользователь, который ими владеет, что для тех, исполняемые пользователя root, а не пользователя, который фактически запускает их. Когда они бегут, они очень тщательно проверять то, что вы просите их сделать. Таким образом, при условии их разработчики были достаточно осторожны, они только позволяют пользователям выполнять действия, которые они уполномочены осуществлять.

LD_PRELOAD не влияет на функцию setuid исполняемые файлы запускать другие пользователи, чем их хозяева. Это абсолютно важно для безопасности. В противном случае, могли может сделать свою собственную библиотеку и сила такая программа, Как sudo, чтобы использовать ее, и тогда кто угодно может получить привилегии суперпользователя. Вы можете использовать [f17 в] для битов setuid программ, и root может использовать ее для запуска просто ни о чем. Но как не-root пользователь, Вы не можете использовать его для запуска программ как sudo, [зг19], и su, что не установлен бит setuid корень.

если вы уже имели оболочку с правами root, тогда вам не нужно перезагрузить. Но даже если у вас есть учетная запись root включен-то есть, даже если у вас был задан пароль для него, что вы могли бы использовать для входа в систему как root с помощью команды [клавиши f21] ... вы все равно не сможете устранить проблему без перезагрузки. Например, su в Ubuntu также требует libc.so.6, а также установлен бит setuid root, чтобы LD_PRELOAD не будет работать с ней.0 (См. также бит setuid[!с комментариями д7]'.)

проблема здесь заключается в том, что существующих механизмов для выполнения действий уже требуется запускать setuid исполняемые файлы, принадлежащие root, как самому себе, но [f25 привод датчика] не имеет никакого эффекта в этой ситуации. Если бы не необходимость выполнения действий как root, или если у вас уже есть корневой открытой оболочки--тогда вы могли бы переименовать его обратно без перезагрузки, а также без использования LD_PRELOAD. Это потому, что системы Ubuntu есть /bin/busybox, которая является статически. Это комментарии, включая mv и cp команды. Вы можете запустить [f30 с] или вы можете запустить только /bin/busybox sh, чтобы попасть снарядом в которых вы сможете выполнить команды. Запустить [f32 из] без аргументов, чтобы получить список поддерживаемых команд. У него даже есть версия dpkg!

Вы можете выполнять резервное копирование файлов (если вы хотите) и перезагрузки в рабочую среду.

я упоминаю busybox главным образом потому, что, хотя вы не сможете использовать его, чтобы получить привилегии суперпользователя и восстановления libc.so.6, вы или если у вас уже есть корневой открытой оболочки использовать его для резервного копирования любых файлов вы беспокоитесь о потере до перезагрузки в живой среде. LD_PRELOAD не влияет на функцию setuid исполняемые файлы запускать другие пользователи, чем их хозяева., но так как вас беспокоит, вы можете использовать [f36 в] скопировать все важные файлы-документы, как вы созданы или изменены с момента последнего резервного копирования--в другое место.

Перезагрузка в обычном режиме может и не очень далеко, потому что нормального завершения работы фактически связаны с запуском динамически связанные программы, которые зависят от [fунции f37]. Вы можете хотеть использовать Alt+SysRq+REISUB, чтобы спокойно перезагрузиться. Это не идеальный способ, чтобы закрыть, но это, наверное, лучше, чем в основном безрезультатны попытки перезагрузить затем жесткий сброс. Другой вариант заключается в попытке перезагрузиться, а затем попытаться использовать метод REISUB, чтобы взять его остальная часть пути. (Если вы хотите Выключить машину, а не перезагрузка, использовать REISUO вместо REISUB.)

[d43 см.]когда вы делаете загрузочный из живой среды, переименование файла будет легко. Вам не надо chroot или что-нибудь приглянется. Просто смонтировать корневую файловую систему (что обычно это можно сделать одним щелчком мыши в обозревателе файлов, хотя вы можете использовать команду mount если вам нравится). Затем, в терминале, используйте mv или команды cp восстановить libc.so.6. Вам потребуется sudo, но это прекрасно работает в реальной среде.[!d43 см.]

я знаю, вы говорили, что нет спасения диска. Было бы трудно, пожалуй, невозможно, чтобы создать загрузочный Live USB на той системе, где Вы не сможете запустить большинство программ. (Вы можете использовать [пулемет f44] для копирования и перемещения файлов, и он даже имеет [f45 с] системы comand, но я не рекомендую пытаться использовать его для этого. Как правило, вы должны быть в состоянии работать dd root-правами чтобы создать Live-носителя.) Возможно, кто-то предложит способ. Если у вас есть другой компьютер поставить жесткий диск в, надеюсь, вы можете создать его с этой машиной. Если нет, то лучше всего попросить знакомого, чтобы сделать один.

есть способ без живой компакт-диск/DVD/USB, но вы все равно должны перезагрузиться.

однако, [dрайвер d41]о[!dрайвер d41] альтернативы загрузке с внешнего носителя.0 Вам все равно придется перезагрузить, но вам не нужна живая система. Я не особенно рекомендуем это, так как это громоздкое; использование интерактивной среде легче. Вы можете сделать это не один, если вы действительно хотите, хотя.

как , чтобы использовать Alt+SysRq+REISUB указывали ранее в комментариях, может не будет работать, потому что большинство программ нужно libc.6.so (например, /bin/bash, который обеспечивает оболочка, она нужна). Но вы можете загружать систему с /bin/busybox sh как init, передав init=/bin/busybox sh в качестве параметра загрузки ядра в grub.0 это по сути тот же метод, как более общие init=/bin/sh (или init=/bin/bash), чтобы получить корневой оболочки, но с /bin/busybox sh вместо обычного /bin/sh, потому что [f55, которая] является динамически связаны и требует libc.so.6.

[размером d57]если вы хотите сделать это таким образом, удерживая нажатой левую клавишу Shift при (пере)загрузке и появляется меню grub. (Если переход не работает, используйте клавишу ESC.) С помощью клавиш со стрелками выберите Дополнительные параметры для Ubuntu и нажмите Enter. После этого вы Б нажмите Enter, потому что это нормально загрузиться, а не с пользовательскими опциями загрузки. Выберите любое ядро и нажмите e для редактирования параметров загрузки временно. Если есть несколько линий, и курсор находится не на линии, которая начинается с linux, сдвинуть его оттуда с помощью клавиш со стрелками. Добавить init=/bin/busybox sh в конец строки и нажать F10 для загрузки.[!размером d57]

Вы должны получить busybox в командной строке. Вам придется перемонтировать корневой файловой системы чтение / запись и переименовать libc.so.6 так он имеет правильное имя, которое он использовал, чтобы иметь. Для этого выполните следующие команды в Shell из busybox (там, где другие читатели, которые [от f60] в другом месте придется изменить имя каталога передан команде cd):

mount -o remount,rw / cd /lib64 mv libc.so.6.bak libc.so.6

, то я рекомендую тогда вам синхронизировать любые кэшированные записи в файловую систему, он только для чтения, перемонтировать, и перезагрузка:

sync mount -o remount,ro / reboot -f

(без -f, команда reboot не работает вообще в этой ситуации, как не соответствующего демон init работает.)

[г70]0 для тех, кому интересно: когда эти программы (например, [64-го фокуса]) на самом деле выполнить вашу команду или создать размер или некоторые другие альтернативные пользователя, как ваш реальный и эффективный идентификаторы пользователя имеют значение целевого пользователя. Но когда вы запустите их, прежде чем они сделали это, в то время как они являются определяющими, если они позволяют вам выполнять действия, которые вы просили, их эффективный идентификатор пользователя совпадает с корнем, а их реальный идентификатор пользователя-это все еще твое. Я упоминаю об этом, чтобы устранить распространенное заблуждение о том, как реальные и эффективные идентификаторы пользователя, работа в программах, как [f65 в]; Если вы никогда не слышали реальный и эффективный идентификаторы пользователя, смело игнорируйте эту сноску.[!г70]

0 для тех, кому интересно: когда эти программы (например, [64-го фокуса]) на самом деле выполнить вашу команду или создать размер или некоторые другие альтернативные пользователя, как ваш реальный и эффективный идентификаторы пользователя имеют значение целевого пользователя. Но когда вы запустите их, прежде чем они сделали это, в то время как они являются определяющими, если они позволяют вам выполнять действия, которые вы просили, их эффективный идентификатор пользователя совпадает с корнем, а их реальный идентификатор пользователя-это все еще твое. Я упоминаю об этом, чтобы устранить распространенное заблуждение о том, как реальные и эффективные идентификаторы пользователя, работа в программах, как [f65 в]; Если вы никогда не слышали реальный и эффективный идентификаторы пользователя, смело игнорируйте эту сноску.

[кадрах, снятых D80]0 [о d54]инициализации[!о d54][!кадрах, снятых D80]

0 это удастся на прохождение sh к busybox хотя вы могли бы ожидать, что это будет истолковано как последующий вариант загрузки ядра. В том числе кавычки предотвращает его от работы. Отметим также, что, в Ubuntu, статически [f75 в Джей] исполняемый файл называется просто busybox, а не [f77 на английском языке] (хотя пакет, который обеспечивает его называют busybox-static). Если вы удалили статически слинкованный busybox и установлен динамически слинкованный busybox и, тогда этот метод не будет работать, но это очень маловероятно, что вы сделали это.

5
ответ дан 17 July 2018 в 15:52

Вам следует просто загрузиться с загрузочных USB (или CD/DVD) и переименовать libc.so.6 обратно.[!dе д0]

LD_PRELOAD не работать с setuid для исполняемых файлов. Но, если вы хотите, вы можете использовать [F5], чтобы сделать последнюю минуту резервных копий (которые не требуют выполнения команд с правами root) перед перезагрузкой. Это можно исправить без загрузочных USB/компакт-диск/DVD-диск, но вам все равно нужно перезагрузить, и я предлагаю использовать один.

LD_PRELOAD не работает с командами с setuid.

в данный момент вы пытаетесь сделать sudo использовать переименованный общей библиотеки путем установки нажать [F8]. Это не будет работать. Вы не можете изменить то, что разделяемые библиотеки [F9] и ссылки в с LD_PRELOAD, и он не работает с любой из альтернатив sudo либо. Если Вы смогли сделать это, то это будет очень серьезной ошибки безопасности.

кстати [F12] и [от f13] (и su) работы позволяют повысить привилегии в том, что те исполняемые файлы имеют бит setuid set0, которая заставляет их работать, как пользователь, который ими владеет, что для тех, исполняемые пользователя root, а не пользователя, который фактически запускает их. Когда они бегут, они очень тщательно проверять то, что вы просите их сделать. Таким образом, при условии их разработчики были достаточно осторожны, они только позволяют пользователям выполнять действия, которые они уполномочены осуществлять.

LD_PRELOAD не влияет на функцию setuid исполняемые файлы запускать другие пользователи, чем их хозяева. Это абсолютно важно для безопасности. В противном случае, могли может сделать свою собственную библиотеку и сила такая программа, Как sudo, чтобы использовать ее, и тогда кто угодно может получить привилегии суперпользователя. Вы можете использовать [f17 в] для битов setuid программ, и root может использовать ее для запуска просто ни о чем. Но как не-root пользователь, Вы не можете использовать его для запуска программ как sudo, [зг19], и su, что не установлен бит setuid корень.

если вы уже имели оболочку с правами root, тогда вам не нужно перезагрузить. Но даже если у вас есть учетная запись root включен-то есть, даже если у вас был задан пароль для него, что вы могли бы использовать для входа в систему как root с помощью команды [клавиши f21] ... вы все равно не сможете устранить проблему без перезагрузки. Например, su в Ubuntu также требует libc.so.6, а также установлен бит setuid root, чтобы LD_PRELOAD не будет работать с ней.0 (См. также бит setuid[!с комментариями д7]'.)

проблема здесь заключается в том, что существующих механизмов для выполнения действий уже требуется запускать setuid исполняемые файлы, принадлежащие root, как самому себе, но [f25 привод датчика] не имеет никакого эффекта в этой ситуации. Если бы не необходимость выполнения действий как root, или если у вас уже есть корневой открытой оболочки--тогда вы могли бы переименовать его обратно без перезагрузки, а также без использования LD_PRELOAD. Это потому, что системы Ubuntu есть /bin/busybox, которая является статически. Это комментарии, включая mv и cp команды. Вы можете запустить [f30 с] или вы можете запустить только /bin/busybox sh, чтобы попасть снарядом в которых вы сможете выполнить команды. Запустить [f32 из] без аргументов, чтобы получить список поддерживаемых команд. У него даже есть версия dpkg!

Вы можете выполнять резервное копирование файлов (если вы хотите) и перезагрузки в рабочую среду.

я упоминаю busybox главным образом потому, что, хотя вы не сможете использовать его, чтобы получить привилегии суперпользователя и восстановления libc.so.6, вы или если у вас уже есть корневой открытой оболочки использовать его для резервного копирования любых файлов вы беспокоитесь о потере до перезагрузки в живой среде. LD_PRELOAD не влияет на функцию setuid исполняемые файлы запускать другие пользователи, чем их хозяева., но так как вас беспокоит, вы можете использовать [f36 в] скопировать все важные файлы-документы, как вы созданы или изменены с момента последнего резервного копирования--в другое место.

Перезагрузка в обычном режиме может и не очень далеко, потому что нормального завершения работы фактически связаны с запуском динамически связанные программы, которые зависят от [fунции f37]. Вы можете хотеть использовать Alt+SysRq+REISUB, чтобы спокойно перезагрузиться. Это не идеальный способ, чтобы закрыть, но это, наверное, лучше, чем в основном безрезультатны попытки перезагрузить затем жесткий сброс. Другой вариант заключается в попытке перезагрузиться, а затем попытаться использовать метод REISUB, чтобы взять его остальная часть пути. (Если вы хотите Выключить машину, а не перезагрузка, использовать REISUO вместо REISUB.)

[d43 см.]когда вы делаете загрузочный из живой среды, переименование файла будет легко. Вам не надо chroot или что-нибудь приглянется. Просто смонтировать корневую файловую систему (что обычно это можно сделать одним щелчком мыши в обозревателе файлов, хотя вы можете использовать команду mount если вам нравится). Затем, в терминале, используйте mv или команды cp восстановить libc.so.6. Вам потребуется sudo, но это прекрасно работает в реальной среде.[!d43 см.]

я знаю, вы говорили, что нет спасения диска. Было бы трудно, пожалуй, невозможно, чтобы создать загрузочный Live USB на той системе, где Вы не сможете запустить большинство программ. (Вы можете использовать [пулемет f44] для копирования и перемещения файлов, и он даже имеет [f45 с] системы comand, но я не рекомендую пытаться использовать его для этого. Как правило, вы должны быть в состоянии работать dd root-правами чтобы создать Live-носителя.) Возможно, кто-то предложит способ. Если у вас есть другой компьютер поставить жесткий диск в, надеюсь, вы можете создать его с этой машиной. Если нет, то лучше всего попросить знакомого, чтобы сделать один.

есть способ без живой компакт-диск/DVD/USB, но вы все равно должны перезагрузиться.

однако, [dрайвер d41]о[!dрайвер d41] альтернативы загрузке с внешнего носителя.0 Вам все равно придется перезагрузить, но вам не нужна живая система. Я не особенно рекомендуем это, так как это громоздкое; использование интерактивной среде легче. Вы можете сделать это не один, если вы действительно хотите, хотя.

как , чтобы использовать Alt+SysRq+REISUB указывали ранее в комментариях, может не будет работать, потому что большинство программ нужно libc.6.so (например, /bin/bash, который обеспечивает оболочка, она нужна). Но вы можете загружать систему с /bin/busybox sh как init, передав init=/bin/busybox sh в качестве параметра загрузки ядра в grub.0 это по сути тот же метод, как более общие init=/bin/sh (или init=/bin/bash), чтобы получить корневой оболочки, но с /bin/busybox sh вместо обычного /bin/sh, потому что [f55, которая] является динамически связаны и требует libc.so.6.

[размером d57]если вы хотите сделать это таким образом, удерживая нажатой левую клавишу Shift при (пере)загрузке и появляется меню grub. (Если переход не работает, используйте клавишу ESC.) С помощью клавиш со стрелками выберите Дополнительные параметры для Ubuntu и нажмите Enter. После этого вы Б нажмите Enter, потому что это нормально загрузиться, а не с пользовательскими опциями загрузки. Выберите любое ядро и нажмите e для редактирования параметров загрузки временно. Если есть несколько линий, и курсор находится не на линии, которая начинается с linux, сдвинуть его оттуда с помощью клавиш со стрелками. Добавить init=/bin/busybox sh в конец строки и нажать F10 для загрузки.[!размером d57]

Вы должны получить busybox в командной строке. Вам придется перемонтировать корневой файловой системы чтение / запись и переименовать libc.so.6 так он имеет правильное имя, которое он использовал, чтобы иметь. Для этого выполните следующие команды в Shell из busybox (там, где другие читатели, которые [от f60] в другом месте придется изменить имя каталога передан команде cd):

mount -o remount,rw / cd /lib64 mv libc.so.6.bak libc.so.6

, то я рекомендую тогда вам синхронизировать любые кэшированные записи в файловую систему, он только для чтения, перемонтировать, и перезагрузка:

sync mount -o remount,ro / reboot -f

(без -f, команда reboot не работает вообще в этой ситуации, как не соответствующего демон init работает.)

[г70]0 для тех, кому интересно: когда эти программы (например, [64-го фокуса]) на самом деле выполнить вашу команду или создать размер или некоторые другие альтернативные пользователя, как ваш реальный и эффективный идентификаторы пользователя имеют значение целевого пользователя. Но когда вы запустите их, прежде чем они сделали это, в то время как они являются определяющими, если они позволяют вам выполнять действия, которые вы просили, их эффективный идентификатор пользователя совпадает с корнем, а их реальный идентификатор пользователя-это все еще твое. Я упоминаю об этом, чтобы устранить распространенное заблуждение о том, как реальные и эффективные идентификаторы пользователя, работа в программах, как [f65 в]; Если вы никогда не слышали реальный и эффективный идентификаторы пользователя, смело игнорируйте эту сноску.[!г70]

0 для тех, кому интересно: когда эти программы (например, [64-го фокуса]) на самом деле выполнить вашу команду или создать размер или некоторые другие альтернативные пользователя, как ваш реальный и эффективный идентификаторы пользователя имеют значение целевого пользователя. Но когда вы запустите их, прежде чем они сделали это, в то время как они являются определяющими, если они позволяют вам выполнять действия, которые вы просили, их эффективный идентификатор пользователя совпадает с корнем, а их реальный идентификатор пользователя-это все еще твое. Я упоминаю об этом, чтобы устранить распространенное заблуждение о том, как реальные и эффективные идентификаторы пользователя, работа в программах, как [f65 в]; Если вы никогда не слышали реальный и эффективный идентификаторы пользователя, смело игнорируйте эту сноску.

[кадрах, снятых D80]0 [о d54]инициализации[!о d54][!кадрах, снятых D80]

0 это удастся на прохождение sh к busybox хотя вы могли бы ожидать, что это будет истолковано как последующий вариант загрузки ядра. В том числе кавычки предотвращает его от работы. Отметим также, что, в Ubuntu, статически [f75 в Джей] исполняемый файл называется просто busybox, а не [f77 на английском языке] (хотя пакет, который обеспечивает его называют busybox-static). Если вы удалили статически слинкованный busybox и установлен динамически слинкованный busybox и, тогда этот метод не будет работать, но это очень маловероятно, что вы сделали это.

5
ответ дан 23 July 2018 в 16:49
Я знаю пароль root, поэтому должен быть способ разрешить мне открывать корневую оболочку, но, похоже, я не могу.

Вы не можете использовать пароль root, потому что (переименовав libc) вы сломали все «обычные» способы, которыми вы можете его использовать, включая вход в getty на другой текстовой консоли. Если у вас есть статически связанное su или sudo, вы можете использовать его для запуска busybox mv или (в общем случае получения рабочей корневой оболочки), используйте

LD_PRELOAD=whatever LD_LIBRARY_PATH=whatever static-su --preserve-environment, чтобы передать этот обычай среда для bash, выполняемая как root

. Сами двоичные файлы Setuid не могут доверять среде, предоставляемой пользователем, выполняющим их, но (если они работают) могут передавать среду, если вы просили об этом, и знаете правый пароль для аутентификации этой операции.

Если у вас есть статически связанное su или sudo , вы должны просто использовать свой физический доступ для перезагрузки в среду, которая позволяет изменять корневой FS , например DVD или USB-накопитель или загрузите свою обычную систему с помощью init=/bin/busybox sh (см. ответ @ Eliah).

Если у вас нет средств для резервного копирования, создайте что-то загрузочное на другом компьютере, используя либо Живое изображение Ubuntu или одно из нескольких изображений с восстановительной загрузкой, которые подходят для ремонта различных операционных систем и диагностики аппаратного обеспечения (вот обзор 5 различных). (Это часто меньше, чем живой Ubuntu, например, для загрузки всего около 700 МБ на USB-накопителе.)

Вы можете настроить USB-накопитель для загрузки с одним из них (или Ubuntu) возможность использовать его для нормального хранения файлов; вам не нужно выделять весь USB-накопитель на загрузочный образ. (Простейшие способы создания живого USB-накопителя будут удалять предыдущее содержимое, а иногда даже не оставлять его пригодным для хранения файлов.)

Другой вариант - получить initramfs, чтобы перейти в оболочку перед выполнением pivot_root и выполнить команду init=, переданную в командной строке ядра. Это не зависит от содержания самого корневого FS. У вас может не быть редактора вообще, но у вас есть cat и перенаправление, а также mv и ln. ([F9]). Если проблема, которую вам нужно исправить, нетривиальна, вы, вероятно, должны загрузить что-то более мощное!

Это происходит автоматически в некоторых случаях сбоя при загрузке, например. если обнаружение RAID не удается или что-то такое, что root fs не монтируется в первую очередь (даже для чтения). [[10])

Вы можете сделать так, чтобы break=bottom в командной строке ядра переместился в оболочку busybox в initramfs, после выполнения большинства (загрузка модулей и установка только корневого FS), но перед выполнением реального init. break=premount останавливается раньше; см. эту ссылку или /usr/share/initramfs-tools/init для более подробной информации.

1
ответ дан 22 May 2018 в 11:10
я знаю пароль, так что там должен быть способ, чтобы позволить мне открыть командную оболочку с правами суперпользователя, но это, кажется, я не могу.

Вы не можете использовать пароль root так (путем переименования библиотеки libc) ты разбила все "нормальные" пути, что вы можете использовать его, включая регистрацию на [F1] на другой текстовой консоли. Если у вас статически SU или sudo, вы могли бы использовать это, чтобы запустить busybox mv, или (в общем случае получение рабочей корневой оболочки), использовать

LD_PRELOAD=whatever LD_LIBRARY_PATH=whatever static-su --preserve-environment, чтобы передать этот обычай среды в баш-под root[!сами Д4]

setuid двоичные файлы не могут доверять среды поступает пользователь, работающий с ними, но (если они работают) могут проходить на окружающую среду если вы просили, и вы знаете правильный пароль для проверки подлинности этой операции.

если у вас статически SU или sudo, вы должны просто использовать свой физический доступ к перезагрузки в среде, которая позволяет изменять корневую ФС. например, DVD-диска или USB-флешки или загрузки обычной системы с init=/bin/busybox sh (см. @Илии ответ).

если у вас нет носителя для восстановления, сидя вокруг, что-то создавать загрузочный на другом компьютере, используя Ubuntu в Live-образа или одной из нескольких восстановления-загрузочные образы, которые подходят для ремонта различных ОС и запуска аппаратную диагностику (вот отзыв 5 разных). (Часто это меньше, чем живет в Ubuntu, например, занимая лишь около 700МБ на USB-накопителе).

Вы можете создать USB-накопитель для загрузки системы с одной из этих (или Ubuntu) еще будучи в состоянии использовать его для нормального хранения файлов; вам не нужно посвятить всю флешку в загрузочный образ. (Самых простых способов создания загрузочных USB Stick будет сдуть содержимое и иногда даже не покидают его, хотя пригодных для хранения файлов).

другой вариант-получить в initramfs уронить в раковину, прежде чем делать pivot_root и выполняющейся в init= вы передали в командной строке ядра. Это не зависит от какого-либо содержимое корневой ФС. Вы не могли бы редактором на всех, но у вас есть [F8] и перенаправления, а также МВ и ln. (cat > /mnt/root/etc/something). Если проблема вам нужно исправить нетривиальное, вы, вероятно, следует загрузиться что-то более мощное!

это происходит автоматически, в некоторых сбоя загрузки случаях, например, в случае обнаружение налета или что-то не так с корневой ФС не подключается в первую очередь (даже только для чтения). (вот обзор 5 разных)

[dиода d17]Вы можете сделать это с break=bottom на ядре командной строке, чтобы зайти в busybox и раковины в initramfs, после того, как делают большинство вещей (загрузка модулей и монтирование корневой ФС только для чтения), но перед тем, выполняющейся в реальном init. break=premount остановок раньше; см., что ссылка или [от f13] для более подробной информации.[!dиода d17]
1
ответ дан 17 July 2018 в 15:52
Я знаю пароль root, поэтому должен быть способ разрешить мне открывать корневую оболочку, но, похоже, я не могу.

Вы не можете использовать пароль root, потому что (переименовав libc) вы сломали все «обычные» способы, которыми вы можете его использовать, включая вход в getty на другой текстовой консоли. Если у вас есть статически связанное su или sudo, вы можете использовать его для запуска busybox mv или (в общем случае получения рабочей корневой оболочки), используйте

LD_PRELOAD=whatever LD_LIBRARY_PATH=whatever static-su --preserve-environment, чтобы передать этот обычай среда для bash, выполняемая как root

. Сами двоичные файлы Setuid не могут доверять среде, предоставляемой пользователем, выполняющим их, но (если они работают) могут передавать среду, если вы просили об этом, и знаете правый пароль для аутентификации этой операции.

Если у вас есть статически связанное su или sudo , вы должны просто использовать свой физический доступ для перезагрузки в среду, которая позволяет изменять корневой FS , например DVD или USB-накопитель или загрузите свою обычную систему с помощью init=/bin/busybox sh (см. ответ @ Eliah).

Если у вас нет средств для резервного копирования, создайте что-то загрузочное на другом компьютере, используя либо Живое изображение Ubuntu или одно из нескольких изображений с восстановительной загрузкой, которые подходят для ремонта различных операционных систем и диагностики аппаратного обеспечения (вот обзор 5 различных). (Это часто меньше, чем живой Ubuntu, например, для загрузки всего около 700 МБ на USB-накопителе.)

Вы можете настроить USB-накопитель для загрузки с одним из них (или Ubuntu) возможность использовать его для нормального хранения файлов; вам не нужно выделять весь USB-накопитель на загрузочный образ. (Простейшие способы создания живого USB-накопителя будут удалять предыдущее содержимое, а иногда даже не оставлять его пригодным для хранения файлов.)

Другой вариант - получить initramfs, чтобы перейти в оболочку перед выполнением pivot_root и выполнить команду init=, переданную в командной строке ядра. Это не зависит от содержания самого корневого FS. У вас может не быть редактора вообще, но у вас есть cat и перенаправление, а также mv и ln. ([F9]). Если проблема, которую вам нужно исправить, нетривиальна, вы, вероятно, должны загрузить что-то более мощное!

Это происходит автоматически в некоторых случаях сбоя при загрузке, например. если обнаружение RAID не удается или что-то такое, что root fs не монтируется в первую очередь (даже для чтения). [[10])

Вы можете сделать так, чтобы break=bottom в командной строке ядра переместился в оболочку busybox в initramfs, после выполнения большинства (загрузка модулей и установка только корневого FS), но перед выполнением реального init. break=premount останавливается раньше; см. эту ссылку или /usr/share/initramfs-tools/init для более подробной информации.

1
ответ дан 23 July 2018 в 16:49

Другие вопросы по тегам:

Похожие вопросы: