Пытаясь отладить почтовый сервер, я набрал:
chmod -R 777 /
вместо:
chmod -R 777 .
и вишенка на торте, из-за того, что я забыл, что изменил скрипт, который я использую для входа, чтобы что-то исправить, я сделал все это как root. У меня нет резервных копий большей части системы (плохой выбор, я знаю).
В отличие от вопросов «Восстановление после chmod -R -777 /» и «Что делать после „chmod -R 777 /“?» я все еще вошел как root, и не вся система была изменена, так что у меня есть некоторый контроль над системой. Я также ^C d вышел из команды в течение одной секунды, чтобы минимизировать ущерб. С тех пор я физически отключил сервер от интернета.
Я считаю, что скрипт мог бы это исправить, если бы он восстановил разрешения файловой системы на основе данных из менеджера пакетов, но я не знаю, как бы я это сделал. Если это невозможно, как бы я сохранил данные с сервера, чтобы переустановить ОС?
Я осознаю потенциальные риски потери файла, но, несмотря на них, предпочел бы восстановление переустановке.
это текущий вывод ls -la /
:
drwxrwxrwx 22 root root 4096 Sep 7 2016 .
drwxrwxrwx 22 root root 4096 Sep 7 2016 ..
drwxr-xr-x 2 root root 4096 May 18 07:55 bin
drwxr-xr-x 3 root root 4096 Sep 21 07:53 boot
drwxr-xr-x 19 root root 3180 Sep 11 20:54 dev
drwxrwxrwx 92 root root 4096 Aug 23 07:50 etc
drwxr-xr-x 4 root root 4096 May 23 2016 home
lrwxrwxrwx 1 root root 31 Feb 24 2016 initrd.img -> /boot/initrd.img-3.16.0-4-amd64
drwxrwxrwx 18 root root 4096 Feb 24 2016 lib
drwxr-xr-x 2 root root 4096 Jun 20 07:00 lib64
drwx------ 2 root root 16384 May 19 2016 lost+found
drwxrwxrwx 2 root root 4096 May 5 2015 media
drwxr-xr-x 2 root root 4096 May 5 2015 mnt
drwxr-xr-x 3 root root 4096 May 28 2016 opt
dr-xr-xr-x 148 root root 0 Sep 3 21:55 proc
drwxrwxrwx 10 root root 4096 Aug 19 17:58 root
drwxr-xr-x 22 root root 800 Sep 21 17:09 run
drwxrwxrwx 3 root root 4096 Jun 20 07:00 sbin
drwxr-xr-x 4 root root 4096 Sep 20 23:18 sftp
dr-xr-xr-x 13 root root 0 Sep 3 21:55 sys
drwxrwxrwx 8 root root 4096 Sep 21 17:17 tmp
drwxrwxrwx 11 root root 4096 Feb 24 2016 usr
drwxr-xr-x 14 root root 4096 Jun 25 06:21 var
lrwxrwxrwx 1 root root 27 Feb 24 2016 vmlinuz -> boot/vmlinuz-3.16.0-4-amd64
только что заметил, что в панике я нажал на форум Ubuntu, а не Debian... я знаю, что так почтовый сервер не починишь. Это был небрежный хакерский ремонт, чтобы посмотреть, что сломалось
iv перепостил это на правильном форуме сейчас
решение1
Исправление ошибки разрешения
Как восстановить права доступа к корневому каталогу по умолчанию?
Правило №1: Если вы не уверены в себе при работе с командной строкой, не запускайте никакие команды от имени пользователя root.
Запуск chmod -R 777 /
от имени rootсломает вашу систему.
Запуск rm -rf /
от имени rootприведет к катастрофе!.
Если вы работали chmod -R 777 /
как root, выполните следующие действия, чтобы восстановить его:
Шаг 1:
Скопируйте следующий скрипт, вставьте его в консоль, чтобы сгенерировать скрипт fixpermission.
echo '
chmod -R 755 /bin /boot /dev /etc/ /home /lib /lib64 \
/media /mnt /opt /run /sbin /srv /usr /var
chmod -R 777 /initrd.img /vmlinuz
chmod -R 1777 /tmp
chmod -R 555 /sys
chmod -R 555 /proc
chmod -R 700 /root
' > fixpermission
chmod +x fixpermission
./fixpermission
Приведенный выше код создаст скрипт с именем fixpermission и запустит его, ./fixpermission
если он еще не вызван.
Шаг 2:
Запустите stat -c '%A %a %n' /*
, чтобы отобразить ваш правильный каталог и восстановленные разрешения.
Пример: Структура прав доступа к вашему каталогу должна выглядеть примерно так:
root@plab:~# stat -c '%A %a %n' /*
drwxr-xr-x 755 /bin
drwxr-xr-x 755 /boot
drwxr-xr-x 755 /dev
drwxr-xr-x 755 /etc
drwxr-xr-x 755 /home
lrwxrwxrwx 777 /initrd.img
lrwxrwxrwx 777 /initrd.img.old
drwxr-xr-x 755 /lib
drwxr-xr-x 755 /lib64
drwx------ 700 /lost+found
drwxr-xr-x 755 /media
drwxr-xr-x 755 /mnt
drwxr-xr-x 755 /opt
dr-xr-xr-x 555 /proc
drwx------ 700 /root
drwxr-xr-x 755 /run
drwxr-xr-x 755 /sbin
drwxr-xr-x 755 /srv
dr-xr-xr-x 555 /sys
drwxrwxrwt 1777 /tmp
drwxr-xr-x 755 /usr
drwxr-xr-x 755 /var
lrwxrwxrwx 777 /vmlinuz
lrwxrwxrwx 777 /vmlinuz.old
Шаг 3:
Перезагрузите систему!
Надеюсь это поможет.