Как восстановить/восстановить человечность 10.04 после 'sudo chmod / 777'

Похоже, что Ваш оператор экспорта допустим, но я видел это при попытке смешивать/соответствовать версии экспорта/импорта и базы данных.

Вы используете двоичные файлы экспорта, которые идут с версией базы данных, которую Вы используете? Если Вы просто введете 'exp', то он скажет Вам версию.

Версия Вашего exp.exe должна совпасть с версией базы данных, которую Вы пытаетесь экспортировать. exp.exe полагается на структуры в базе данных, и они могут измениться от выпуска до выпуска. Таким образом, если Ваша база данных 9.2.0.8.0, затем удостоверяются, что Вы используете двоичный файл exp.exe, который является 9.2.0.8.0.

Можно хотеть читать Используя Различные Выпуски и Версии Экспорта для большего количества детали.

Если Вы думаете, Ваша база данных и binarie могут соответствовать, и у Вас все еще есть проблемы затем, у Вас, возможно, была проблема при запущении catpatch скриптов после 9.2.0.8.0 патчей.

- Dave

12
задан 13 April 2017 в 15:14
8 ответов

Вы смотрите на проигранное дело. Сохраните данные, в которых Вы нуждаетесь и переустанавливаете операционную систему.

23
ответ дан 2 December 2019 в 21:29

Я знаю, что dpkg хранит полномочия в базах данных, и я нашел следующий сценарий Google, который может помочь.

Править: У меня на самом деле был беглый взгляд на сценарий, и выглядит, как будто он пропускает немного волшебства, которое идет от ПЕРМСКИХ до РЕЖИМА, например, dpkg-c дает, например, "-rw-r - r -", но Вы хотите 0644, я работаю прямо сейчас, таким образом, я не уверен, что у меня есть время, чтобы сделать преобразование в сейчас же, но я могу возвратиться позже, если никто больше не вскочил для добавления того бита.

Существует сценарий здесь, который является интересными взглядами

#!/bin/bash
# Restores file permissions for all files on a debian system for which .deb
# packages exist. 
#
# Author: Larry Kagan <me at larrykagan dot com>
# Since 2007-02-20

ARCHIVE_DIR=/var/cache/apt/archives/
PACKAGES=`ls $ARCHIVE_DIR`
cd /

function changePerms()
{
    CHOWN="/bin/chown"
    CHMOD="/bin/chmod"
    PERMS=$1
    OWN=`echo $2 | /usr/bin/tr '/' ':'`
    PATHNAME=$3

    echo -e "$CHOWN $OWN $PATHNAME"
    #`$CHOWN $OWN $PATHNAME`
    #`$CHMOD $MODE $PATHNAME`

}

for PACKAGE in $PACKAGES;
do
    echo -e "Getting information for $PACKAGE\n"
    FILES=`/usr/bin/dpkg -c "${ARCHIVE_DIR}${PACKAGE}"`

    for FILE in "$FILES";
    do
        FILE_DETAILS=`echo "$FILE" | awk '{print $1"\t"$2"\t"$6}'`
        changePerms $FILE_DETAILS
    done
done
4
ответ дан 2 December 2019 в 21:29

Согласитесь с blueben, просто переустановка могла бы быть быстрее, чем анализ который потребности файла/каталога который разрешение. Но если переустановка не является опцией, вот идея:

  1. Установите установку Ubuntu по умолчанию на другой машине
  2. Выполните эту команду для получения полномочий каждого файла/каталога в системе: find / | xargs stat -c 'chmod %a "'%n'"' > /tmp/chmod.sh
  3. Скопируйте файл chmod.sh к компьютеру с неправильными полномочиями
  4. Выполните тот файл chmod +x /tmp/chmod.sh && /bin/bash /tmp/chmod.sh
  5. Надеюсь большинство вещей работа (не, все будет работать, я верю),
3
ответ дан 2 December 2019 в 21:29

Есть возможность вернуться из такой запутанной ситуации без переустановки системы. Что ж, точнее говоря, запуск новой новой системы либо с USB-ключа, либо в Virutal Box (или около того), если у вас система с двойной загрузкой.

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

Во-первых, мою ситуацию было легче решить, потому что у меня была система с двойной загрузкой (ubuntu и моя старая установка Fedora), но запуск системы для USB-ключа (или, возможно, CD / DVD) должен сделать то же самое.

MPOINT = / mount / ubuntu

Сначала я смонтировал свои файловые системы следующим образом (не забудьте создать точки монтирования): mount / dev / ubuntu / root $ MPOINT mount / dev / ubuntu / home $ MPOINT / home

Затем я выполнил следующую команду (моя проблема была только в нескольких - критических - каталогах), чтобы скопировать разрешения из запущенного систему в беспорядочную (на самом деле, в моем случае я установил систему ubuntu в Virtual Box под Fedora и получил там разрешения):

find / etc / usr / bin -exec stat --format "chmod% a $ {MPOINT}% n "{} \; > /tmp/restoreperms.sh

И затем я запустил сценарий restoreperms.sh.

Я снова смог загрузиться на ubuntu.

Содержимое restoreperms.sh будет примерно таким:

(...)
chmod 755 /mount/ubuntu//etc/ppp
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up
chmod 2750 /mount/ubuntu//etc/ppp/peers
chmod 640 /mount/ubuntu//etc/ppp/peers/provider
chmod 755 /mount/ubuntu//etc/ppp/ipv6-up.d
chmod 777 /mount/ubuntu//etc/ppp/resolv.conf
(...)

I не тестировал, но он должен работать и для владельцев, и для групп владельцев. Примерно так:

find / etc / usr / bin -exec stat --format 'chown% U:% G $ {MPOINT}% n' {} \; > /tmp/restoreperms.sh^

(...)
chown root:root /mount/ubuntu//etc/obex-data-server/imaging_capabilities.xml
chown root:root /mount/ubuntu//etc/obex-data-server/capability.xml
chown root:dip /mount/ubuntu//etc/ppp
chown root:root /mount/ubuntu//etc/ppp/ipv6-up
chown root:dip /mount/ubuntu//etc/ppp/peers
chown root:dip /mount/ubuntu//etc/ppp/peers/provider
chown root:root /mount/ubuntu//etc/ppp/ipv6-up.d
chown root:root /mount/ubuntu//etc/ppp/resolv.conf
(...)

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

0 12 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chmod %a %n" {} \; |/bin/bzip2 -c > /tmp/restore_chmod.$(/bin/date +%w).sh.bz2

0 13 * * * /usr/bin/find / -exec /usr/bin/stat --format="/bin/chown %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_chown.$(/bin/date +%w).sh.bz2

EDIT: для поддержки ссылок объединенная команда:

/ usr / bin / find / -exec / usr / bin / stat --format = "[! -L {} ] && / bin / chmod% a% n "{}

4
ответ дан 2 December 2019 в 21:29

Я изменил сценарий выше, и он выглядит следующим образом:

#!/bin/bash
# Restores file permissions for all files on a debian system for which .deb
# packages exist. 
#
# Author: Larry Kagan <me at larrykagan dot com>
# Since 2007-02-20

ARCHIVE_DIR=/var/cache/apt/archives/
PACKAGES=`ls $ARCHIVE_DIR`
cd /

function changePerms() {
    CHOWN="/bin/chown"
    CHMOD="/bin/chmod"
    PERMS=`echo $1 | sed -e 's/--x/1/g' -e 's/-w-/2/g' -e 's/-wx/3/g' -e 's/r--/4/g'  -e 's/r-x/5/g' -e 's/rw-/6/g' -e 's/rwx/7/g' -e 's/---/0/g'`
    PERMS=`echo ${PERMS:1}`
    OWN=`echo $2 | /usr/bin/tr '/' '.'`
    PATHNAME=$3
    PATHNAME=`echo ${PATHNAME:1}`

#    echo -e "CHMOD: $CHMOD $PERMS $PATHNAME"    

#    result=`$CHOWN $OWN $PATHNAME`
#    if [ $? -ne 0 ]; then
#   echo -e $result
#        exit 123;
#    fi

    echo -e "CHOWN: $CHMOD $PERMS $PATHNAME"
    result=`$CHMOD $PERMS $PATHNAME`
    if [ $? -ne 0 ]; then
    echo -e $result
    fi
}

for PACKAGE in $PACKAGES;
do
    if [ -d $PACKAGE ]; then
    continue;
    fi
    echo -e "Getting information for $PACKAGE\n"
    FILES=`/usr/bin/dpkg -c "${ARCHIVE_DIR}${PACKAGE}"`

    for FILE in "$FILES";
    do
        #FILE_DETAILS=`echo "$FILE" | awk '{print $1"\t"$2"\t"$6}'`
    echo "$FILE" | awk '{print $1"\t"$2"\t"$6}' | while read line;
        do
            changePerms $line
        done
        #changePerms $FILE_DETAILS
    done
done
4
ответ дан 2 December 2019 в 21:29

ОШИБКА в моем сообщении, опубликованном от имени пользователя user100740: для поддержки ссылок объединенная команда:

/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {} \; -exec /usr/bin/stat --format="/bin/chown -h %U:%G %n" {} \; |/bin/bzip2 -c > /tmp/restore_fileperms.$(/bin/date +%w).sh.bz2
2
ответ дан 2 December 2019 в 21:29

Если вы все еще можете запустить / usr / sbin / synaptic , это часто можно исправить.

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

Однако не все может быть исправлено.
Другое дело, если вы войдете в / var / cache , вы можете вызвать dpkg -x <имя пакета> / для каждого установленного пакета, а затем вызвать dpkg --reconfigure -a . Кроме того, если вы используете Ubuntu, вы можете выполнить обновление dist, которое часто исправляет множество ошибок (при условии, что вы еще не используете последнюю версию). Обычно, когда я пытаюсь исправить такую ​​ошибку, я пробую эти простые исправления, и если они не заставят ее снова работать, то пора переустановить.

2
ответ дан 2 December 2019 в 21:29

загрузка с Live CD. затем запустите оболочку, затем sudo -s. Затем chmod 777 / *, затем chmod 600 / etc / passwd. ядро запаникует, если инициализация завершится неудачно, что произойдет, если скрипты / lib / init не будут исполняться. загрузитесь в однопользовательский режим для Lilo Linux 1 и запустите сценарий user102453, указанный выше. Это заставляет загрузку системы запрашивать. Все еще нужно запустить X.

-2
ответ дан 2 December 2019 в 21:29

Теги

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