Вопрос Случайно перемещенные каталоги под root


Я случайно выполнил эту команду

sudo mv /* /applications/minced/

вместо

sudo mv ./* /applications/minced/

Это все, что осталось в корневом каталоге

$ /
applications/ dev/          proc/         run/          sys/          tmp/       

У меня все еще есть активное ssh-соединение с сервером. Я попробовал позвонить mv, sudo а также chmod... непосредственно из /applications/minced/bin/ или /applications/minced/usr/bin/, но ничего не работает, хотя я могу найти их там, используя автозаполнение пути.

$ /applications/minced/bin/ls
-bash: /applications/minced/bin/ls: No such file or directory

я прочел Рекурсивное перемещение корневого каталога, но установка системы под LiveCD для меня не вариант, поскольку это VPS, а не физическая машина. Есть идеи?

Обновить

Я понял, что это связано с проблемами с библиотечными связями, поэтому я сделал это

$ export LD_LIBRARY_PATH=/applications/minced/lib/x86_64-linux-gnu/
$ /applications/minced/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /applications/minced/bin/mv /applications/minced/* /

Очевидно, я столкнулся с проблемами разрешения. призвание sudo с компоновщиком выбрасывает эту ошибку

$ /applications/minced/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /applications/minced/usr/bin/sudo ...
sudo: effective uid is not 0, is /applications/minced/usr/bin/sudo on a file system with the 'nosuid' option set or an NFS file system without root privileges?

Как предложил Барафу Альбино, я попытался позвонить su с busybox (.../bin/busybox su -), но он бросает su: must be suid to work properly, Я думаю, это происходит потому, что su не может найти /etc/passwd а также /etc/shadow, Похоже, я полностью испортил систему.


6
2017-09-30 09:42


происхождения


Нет, su и sudo беспорядочны, потому что mv, вероятно, нарушил свои права. Вам необходимо сбросить разрешение suid на su и sudo, чтобы заставить их работать. - casey
@casey Я считаю, что нет никакого способа сделать это, не будучи root в первую очередь, есть ли? - Eli Korvigo
загрузите живое DVD-диск или изображение для спасения, а затем исправьте свою файловую систему. - casey
@casey Я упомянул об этом в моем вопросе. Я не могу этого сделать, поскольку машина является VPS. - Eli Korvigo


ответы:


Ваши приложения не могут запускаться из-за того, что они хотят найти библиотеки, и они тоже не подходят. Попробуйте использовать busybox непосредственно.

bin/busybox ls

должны работать как ls и так далее.


8
2017-09-30 09:52



Я попробовал аналогичный подход, экспортируя путь компоновщика, т. Е. export LD_LIBRARY_PATH=/applications/minced/lib/x86_64-linux-gnu/ и вызов команд вручную /applications/minced/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 /applications/minced/bin/mv /applications/minced/* /, Но я больше не могу sudo, - Eli Korvigo
Так что же о busybox? В нем есть su в нем тоже. - Barafu Albino
su: must be suid to work properly - Eli Korvigo
Я обновил сообщение, чтобы показать, что происходит. - Eli Korvigo
Да, этот вариант сработал бы, если бы у меня остались права root. В следующий раз я войду в систему как root, если это произойдет. спасибо - Eli Korvigo


Давайте сделаем еще один подход. Я предполагаю, что вы не знаете настоящего пароля root. Вот список библиотек, которые нужны sudo:

linux-vdso.so.1 =>  (0x00007ffea6be9000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fbbad17b000)
libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fbbacf78000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fbbacd74000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbbac9aa000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fbbac73d000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbbad5c5000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fbbac51f000)

Вот список файлов в пакете sudo (только соответствующие):

/lib
/lib/systemd
/lib/systemd/system
/lib/systemd/system/sudo.service
/usr
/usr/lib
/usr/lib/sudo
/usr/lib/sudo/system_group.so
/usr/lib/sudo/sudo_noexec.so
/usr/lib/sudo/sudoers.so
/usr/lib/sudo/group_file.so
/usr/lib/sudo/sesh
/usr/bin
/usr/bin/sudoreplay
/usr/bin/sudo

Попробуйте переместить библиотеки в двоичный файл в одну папку. Может быть, это сработает. su имеет меньше зависимостей, но требует знания реального пароля root.


4
2017-09-30 10:43



sudo а также su не будут работать, потому что они потеряли /etc/passwd а также /etc/shadow, Спасибо вам за вашу помощь, но, похоже, я слишком сильно прикрутил все, чтобы справиться с этим. - Eli Korvigo
@EliKorvigo: Они не потеряли /etc/что-нибудь. Они потеряли бит setuid, когда вы их перемещали. Они нуждаются в этом, потому что вы не можете дать пользователю root, если у вас нет корня для начала. - Kevin