У меня сервер CentOS 6.9.
Весь /etc
каталог находился под контролем версий.
Я случайно запустил на нем 'git rm -R'. Сервер сразу же перестал работать, моя ssh-сессия потерялась.
Мне удалось подключить IP-консоль к серверу и, загрузив с USB-накопителя Live Linux, я запустил 'git reset --hard'
.
Теперь index/working dir чист. Я перезагрузил систему, но она все еще не работает. Она отвечает на ping, но я все еще не могу подключиться к ней по ssh.
На IP-консоли я даже не могу войти в систему, после ввода любого пользователя система снова запрашивает имя пользователя.
Из восстановления Linux я проверил ошибки /var/log/boot.log
— первая ошибка касается iptables-restore
error while loading shared libraries libip4tc.so.0 : cannot open shared object file: No such file or directory
Далее следует rsyslog.d
CONFIG ERROR: could not interpret master config file '/etc/rsyslog.conf'
Файл явно там, если я проверю из recovery live linux. Я подозреваю, что какая-то проблема с правами доступа, но на самом деле понятия не имею.
Любая помощь приветствуется. Спасибо.
решение1
Вероятно, права собственности и разрешения неверны. Поскольку вы их не отслеживали, вам придется исправить их вручную для каждого файла.
Сам по себе git не отслеживает владельца и права доступа к файлам. Он не для этого. Эти метаданные вообще не отслеживались и поэтому были утеряны.
Это то, что нравится системамetckeeperдля. Они оборачивались вокруг git, чтобы поддерживать /etc
контроль версий, а также сохраняли метаданные, которые git не хранит, и восстанавливали их при необходимости. Чтобы предотвратить это в будущем, рассмотрите возможность использования etckeeper или аналогичного инструмента.
Вы также можете захотеть создать своего рода резервные копии. В настоящее время у вас, похоже, нет никаких резервных копий, и это рецепт катастрофы. Вам повезло, что вы отделались такой незначительной потерей данных. В следующий раз вам может не повезти.
решение2
Да, у вас проблема с разрешением и владением файлом. К сожалениюgit хранит только содержимое и исполняемый фрагмент файла, поэтому разрешения на чтение/запись, права собственности пользователей и групп, а также списки управления доступом (ACL), если таковые имеются, теряются при восстановлении из git reset --hard
. Этого более чем достаточно, чтобы сломать ваш хост, если восстанавливаемый каталог — /etc.
Лучшим вариантом восстановления является полная резервная копия файловой системы, которая будет включать в себя все права собственности на файлы и разрешения.
Если у вас нет ни одного из них, вы можете попробовать перестроить владельца и разрешения вручную, сравнив их с аналогичным хостом CentOS. Но может оказаться, что переустановить ОС с нуля будет проще. Извините.