Мой друг сделал chmod -R 777 /var
по ошибке. Теперь у него есть права доступа к папке / var, например:
drwxr-xr-x 15 root root 4096 Dec 29 17:36 .
drwxr-xr-x 23 root root 4096 Dec 10 11:15 ..
drwxrwxrwx 2 root root 4096 Dec 28 09:54 backups
drwxrwxrwx 22 root root 4096 Nov 9 11:06 cache
drwxrwsrwx 2 root whoopsie 4096 Dec 31 09:38 crash
drwxrwxrwx 2 root root 4096 Apr 23 2012 games
drwxrwxrwx 62 root root 4096 Dec 10 11:06 lib
drwxrwsrwx 2 root staff 4096 Apr 19 2012 local
lrwxrwxrwx 1 root root 9 Dec 29 17:36 lock -> /run/lock
drwxrwxrwx 19 root root 4096 Dec 31 09:54 log
drwxrwsrwx 2 root mail 4096 Apr 23 2012 mail
drwxrwxrwx 2 root root 4096 Apr 23 2012 opt
lrwxrwxrwx 1 root root 4 Dec 29 17:36 run -> /run
drwxrwxrwx 10 root root 4096 Jun 29 2012 spool
drwxrwxrwx 2 root root 4096 Dec 31 10:03 tmp
drwxrwsrwx 15 noufal www-data 4096 Dec 28 10:59 www
А у меня - как:
drwxr-xr-x 15 root root 4096 Dec 29 18:16 .
drwxr-xr-x 24 root root 4096 Dec 18 10:03 ..
drwxr-xr-x 2 root root 4096 Dec 31 10:00 backups
drwxr-xr-x 24 root root 4096 Nov 7 15:03 cache
drwxrwsrwt 2 root whoopsie 4096 Dec 31 09:55 crash
drwxr-xr-x 2 root root 4096 Apr 23 2012 games
drwxr-xr-x 74 root root 4096 Dec 29 17:30 lib
drwxrwsr-x 2 root staff 4096 Apr 19 2012 local
lrwxrwxrwx 1 root root 9 Dec 29 18:16 lock -> /run/lock
drwxr-xr-x 23 root root 4096 Dec 31 10:00 log
drwxrwsr-x 2 root mail 4096 Dec 31 10:39 mail
drwxr-xr-x 2 root root 4096 Apr 23 2012 opt
lrwxrwxrwx 1 root root 4 Dec 29 18:16 run -> /run
drwxr-xr-x 10 root root 4096 Jun 22 2012 spool
drwxrwxrwt 6 root root 4096 Dec 31 10:49 tmp
drwxrws--- 31 saji www-data 4096 Nov 27 15:05 www
У нас есть похожие системы. Как я могу сбросить разрешение /var
для файлов и папок в исходное состояние, не делая это отдельно для файла / папки.
Один из способов - установить другой компьютер или виртуальную машину с той же версией ОС, и на этом компьютере выполнить две команды:
find / -exec stat --format "chmod %a %n" {} \; > /tmp/restoreperms.sh
find / -exec stat --format 'chown %U:%G %n' {} \; >> /tmp/restoreperms.sh
команда «найти» находит корневой каталог и проверяет их разрешения используя 'chmod' и сохраните его во временном файле разрешений.
Или этот, который объединяет оба:
/usr/bin/find / -exec /usr/bin/stat --format="[ ! -L {} ] && /bin/chmod %a %n" {} \; -exec /usr/bin/stat --format="/bin/chown -h %U:%G %n" {} \; > /tmp/restoreperms.sh
, затем скопируйте файл /tmp/restoreperms.sh
на машину с нарушенными разрешениями:
scp /tmp/restoreperms.sh user@ip_address:/tmp/
scp надежно копирует разрешения, сохраненные для временный каталог / tmp / и выполните его оттуда.
попробуйте это find /var -name "*" | while read -r dir ; do echo "$dir"; stat -c %a "$dir"; done
, вы сможете найти имя файла с разрешением и записать его в файл и скопировать файл на компьютер вашего друга и сопоставить каждое имя файла, написав другой скрипт там. Обратите внимание, что chmod
имеет chmod --reference=RFile file
, так что вы можете искать каждый соответствующий файл и применять там ссылку.