Если Вы имеете root
затем можно выполнить взломщика пароля против /etc/shadow
(принимающий локальные пароли и не LDAP или Kerberos, и т.д.). Это не может быть эффективно, если они выбирают хорошие пароли, и система настроена для использования хеширования сильного пароля. Но системные пароли не хранятся в простом тексте; пароли не непосредственно доступны даже root
.
Мне только что нужно было придумать ответ на этот вопрос, потому что последнее обновление apt-get
на сервере Debian сделало это невозможным чтобы загрузить самое последнее ядро за пределами busybox, не смонтируя корневой раздел zfs.По крайней мере, более старое ядро все еще могло загружаться, но было несовместимо с другим программным обеспечением. Отсюда необходимость отката.
Краткий ответ - вы можете использовать следующую команду:
$ apt-get -s install $(apt-history rollback | tr '\n' ' ')
если она делает то, что вы хотите, удалите -s
и запустите ее снова. Вот шаги, которые я предпринял, чтобы это работало правильно:
Я временно обрезал свой /var/log/dpkg.log
, чтобы оставить только сегодняшнее обновление
Я установил крошечный скрипт apt -history
из здесь в ~ / .bashrc
и запустил
$ apt-history rollback> rollback.txt
... {{1} } libzfs2: amd64 = 0.6.4-4 ~ wheezy
zfsutils: amd64 = 0.6.4-4 ~ wheezy
zfs-initramfs: amd64 = 0.6.4-4 ~ wheezy {{1} } ...
Это предоставляет красиво отформатированный список пакетов с версией для отката, загружая его в apt-get install
. При необходимости обрежьте этот список в текстовом редакторе, а затем запустите (сначала с помощью -s
для пробного запуска):
$ apt-get -s install $ (cat rollback.txt | tr '\ n '' ')
$ apt-get install $ (cat rollback.txt | tr' \ n '' ')
Apt предупредит об ожидаемом понижении версии. Чтобы предотвратить перезапись этого отката при следующем обновлении, пакеты необходимо закрепить до тех пор, пока исходная проблема не будет решена. Например, с: apt-mark hold zfsutils libzfs2 ...
function apt-history(){
case "$1" in
install)
cat /var/log/dpkg.log | grep 'install '
;;
upgrade|remove)
cat /var/log/dpkg.log | grep $1
;;
rollback)
cat /var/log/dpkg.log | grep upgrade | \
grep "$2" -A10000000 | \
grep "$3" -B10000000 | \
awk '{print $4"="$5}'
;;
*)
cat /var/log/dpkg.log
;;
esac
}
Файлы журнала /var/log/apt/history.log
и /var/log/apt/term.log
самые близкие вещи, доступные Вашему описанию:
Я предполагаю, что мог быть некоторый сценарий, который мог сохранить список недавно установленного пакета и их предыдущего номера версии
history.log
дает сводный список каждого действия это apt
берет в следующем формате:
Start-Date: 2013-06-21 16:05:05
Commandline: apt-get install rdiff-backup
Install: python-pyxattr:i386 (0.5.0-3, automatic), rdiff-backup:i386 (1.2.8-6), python-pylibacl:i386 (0.5.0-3, automatic
), librsync1:i386 (0.9.7-7, automatic)
End-Date: 2013-06-21 16:05:42
В частности, это дает список недавно установленных пакетов, или удаленных пакетов. Кроме того, term.log
шоу, что на самом деле появилось на терминале во время действия, так, чтобы показал старые и новые версии пакетов. Случайная выборка от моего history.log
:
Preparing to replace gnupg 1.4.10-4 (using .../gnupg_1.4.10-4+squeeze1_i386.deb) ...
Unpacking replacement gnupg ...
Processing triggers for install-info ...
Processing triggers for man-db ...
Processing triggers for doc-base ...
Processing 1 changed doc-base file(s)...
Registering documents with scrollkeeper...
Setting up gnupg (1.4.10-4+squeeze1)
Попытка откатывать apt
автоматически не рекомендуется, но если Вы используете журналы, затем должно быть возможно сделать это вручную, если неудавшееся действие не повредило что-то, что вмешивается в apt
действия, например, непоследовательная dpkg база данных. В этом случае необходимо будет решить проблему перед продолжением.
Нет, склонный не делает это легким.
Наилучшим вариантом является некоторый тип снимка. Или файловая система создает снимки через lvm/zfs/btrfs или снимки экземпляра при использовании VM некоторого вида.
Единственная другая опция состоит в том, чтобы взять материально-технические ресурсы установленных пакетов (dpkg-l) прежде и после. Если бледный для "откатывания" Вас необходимо явно установить предыдущую версию.