Я пытаюсь найти инструмент, похожий на команду «sfc» в Windows или команду «sysck» в AIX, которая может проверить правильность содержимого файла, прав собственности и разрешений. Функциональность «заменить поврежденные или отсутствующие файлы» в «sfc» - это не то, что я ищу, это возможность «убедиться, что все нужные части находятся во всех нужных местах».
Задача, которую я пытаюсь выполнить, - это проверить, что ряд различных путей установки и обновления для конкретной версии программного обеспечения во встроенном продукте Linux достигают одинакового общего состояния файловой системы - все необходимые файлы и каталоги существуют, имеют правильное содержимое ( как указано md5sums или аналогичным), владельцем, группой и разрешениями.
Набор отдельных команд - find, stat, test и т. Д. - не то, что я ищу. Я ищу ИНСТРУМЕНТ, такой как любой из упомянутых выше.
Я искал везде и всюду, но так много запросов приводят к "fsck", что любые положительные результаты похоронены.
Вы, вероятно, ищете IDS на основе хоста, например Tripwire - он способен проверять разрешения, права собственности и контрольные суммы файловой системы на соответствие настраиваемой политике. Windows SFC делает то же самое, но периодически и с политикой, которая предопределена Microsoft и не может быть изменена системным администратором.
К сожалению, вам, по сути, придется вручную изменять хэш файла и базу данных разрешений каждый раз, когда вы обновляете свою систему, поскольку основные дистрибутивы не предоставляют вам предварительно заполненные базы данных для проверки целостности системы:
(взято из http://www.centos.org/docs/2/rhl-rg-en-7.2/ch-tripwire.html)
Самое близкое, что я могу придумать (в системах на основе Redhat), - это об / мин -ав. Это часть проверки rpm, которая будет пытаться проверять суммы md5, режимы файлов и права собственности для файлов, перечисленных как часть проверяемого пакета, с -a вы можете выполнить каждый пакет, составляющий систему.
rpm -aV
Если вы хотите исправить разрешения и режимы пакетов (возможно, все немного опасно).
rpm --setperms --setugids -a
Но лучший способ выполнить эту работу - запустить об / мин -ав, проверьте вывод и убедитесь / учитывайте любые аномальные результаты, которые производит каждый пакет / файл. Затем для файлов / пакетов, которые вызывают ошибки, вы можете либо переустановить пакет (если файлы отличаются), либо сбросить uids / gids / mode в пакете, указанном в выходных данных проверки.
Используйте комбинацию find + stat, чтобы получить желаемые результаты.
Например: find / path -type f -exec stat {} \;
# stat RTM_hpc.txt
File: `RTM_hpc'
Size: 2361 Blocks: 8 IO Block: 4096 regular file
Device: 822h/2082d Inode: 1059093 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 500/ chakri) Gid: ( 100/ users)
Access: 2011-12-08 14:07:42.028802069 -0600
Modify: 2011-05-31 08:18:46.000000000 -0500
Change: 2011-07-19 09:09:03.952958097 -0500
Как определяется «все в нужном месте»?
rsync -av --dry-run, возможно, с -c и --numeric-ids для эталонной копии файловой системы, может подойти для некоторых случаев использования.
Может быть, вы могли бы использовать rkhunter для того, что вам нужно. Он проверяет разрешения и хеши для базы данных, но больше предназначен для поиска руткитов. Tripwire был бы лучше, но если вам нужно что-то более простое.