Как восстановить утерянные метаданные разрешений в /etc? [дубликат]

Probablemente uses pulseaudio...

Por lo tanto, debe usar playen lugar de aplay.

Prueba:

* * * * * /usr/bin/play /tones/beep.wav > /home/user/cronlogs/cron.log
1
02.09.2018, 20:17
2 ответа

Если у вас есть резервная копия, даже если она старая -, используйтеstar:

cd /
star -xpU -meta pat=etc* < backup.tar

Это не восстанавливает содержимое, а только метаданные для файлов, например. владелец разрешений.... ).

Если у вас есть вторая установка с той же версией ОС, сделайте резервную копию метаданных из этой системы, используя:

cd /
star -c -meta etc > /tmp/backup.tar

и позже извлеките метаданные поврежденной системы, используя:

cd /
star -xpU -meta < backup.tar

Если к вам это не относится, вам необходимо переустановить...

Дополнительную информацию см. на справочной странице http://schilytools.sourceforge.net/man/man1/star.1.html.

Как упоминалось @dsstorefile1, копирование метаданных из другой системы будет полным решением только в том случае, если в поврежденной системе нет файлов, отсутствующих в эталонной системе, но вы можете проверить файлы в /etc/ после метаданных. восстановление данных для файлов, которые столь же молоды, как curruption, но старше, чем восстановление и все еще имеют 777.

Кстати,:starтакже можно использовать для сравнения разрешений, поскольку star -diffпозволяет сравнивать содержимое файла и все метаданные и, что более важно, starпозволяет настраивать то, что сравнивается, с помощью параметра diffopts=.

Так что, если у вас есть резервная копия из другой похожей системы, вы можете запустить:

cd /
star -diff -v diffopts=perm pat=etc* < backup.tar

для сравнения только разрешений. Если эта резервная копия была создана с помощью star -c -dump...,

cd /
star -diff -vv diffopts=perm,dir pat=etc* < backup.tar

также выводит список файлов, находящихся в локальной системе, но отсутствующих в резервной копии.

0
27.01.2020, 23:42

Этот ответ предполагает, что у вас нет резервной копии.

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

Это может быть другой Linux, в идеале тот же дистрибутив и выпуск, что и у вас.

Во-первых, установите права доступа: для всех каталогов — 755, а для всех файлов — 644. Вы можете сделать это в /etcс помощью следующего скрипта:

find -type d -print0|xargs -n 500 -P 1 -0 chmod 755
find -type f -print0|xargs -n 500 -P 1 -0 chmod 644

Во-вторых, выгрузите данные разрешений в текстовый файл в другой системе с помощью команды

find -print 0|xargs -0 -P 1 -n 500 ls -ld|sort -k +9 > permdata_ok.txt

Вы получите permdata.txtв удаленной системе. Нужна сортировка, позже объясню, зачем.Переместите этот файл из удаленной системы в локальную.

Выполните тот же сценарий в своей локальной системе, но вместо permdata_ok.txtиспользуйте permdata_bad.txt.

А теперь самое интересное. Сравните эти файлы вместе!

Команда:diff -urNw permdata_bad.txt permdata_ok.txt. Его синтаксис вывода будет не очень красивым для вас, если вы не разработчик, но вы можете его освоить.

Вы увидите различия в файловых режимах и в самом файле. Если разница слишком велика, установите ее обратно вручную.

Поскольку не все файлы существуют в обеих системах, вам потребуется рациональное мышление.

Если ваша система чувствительна к безопасности, лучше установить все на 700/ 600на первом шаге. Тогда у вас будет гораздо больше проблем, связанных с разрешением -, но вы не станете причиной нарушения безопасности.

1
27.01.2020, 23:42

Теги

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