"Проверка системных файлов" (sfc-like) для Linux
Я пытаюсь найти инструмент, похожий на команду "sfc" в Windows или команду "sysck" в AIX, которая может проверить правильность содержимого файла, владельцев и прав доступа. Функциональность "заменить поврежденные или отсутствующие файлы" в "sfc" - это не то, что мне нужно, а "проверить, что все нужные части находятся во всех нужных местах".
Задача, которую я пытаюсь выполнить, заключается в проверке того, что различные пути установки и обновления до определенного выпуска программного обеспечения во встроенном продукте Linux достигают одного и того же общего состояния файловой системы - все необходимые файлы и каталоги существуют, имеют правильное содержимое (как сказано md5sums или подобным), владелец, группа и разрешения.
Коллекция отдельных команд - find, stat, test и т. Д. - это не то, что я ищу. Я ищу ИНСТРУМЕНТ, такой как тот, который я упомянул выше.
Я искал высоко и низко, но так много поисков приводят к "fsck", что любые положительные попадания скрываются.
5 ответов
Вероятно, вы ищете IDS на основе хоста, например Tripwire - он способен проверять разрешения, владельца и контрольные суммы файловой системы на соответствие пользовательской политике. Windows SFC, по сути, делает то же самое, но периодически и с политикой, которая предопределена Microsoft и не может быть изменена системным администратором.
К сожалению, вам, по сути, придется выполнять ручные изменения для файловой хеш-функции и базы данных разрешений каждый раз, когда вы обновляете свою систему, поскольку основные дистрибутивы не предоставляют вам предварительно заполненные базы данных для проверки целостности системы:
(taken from http://www.centos.org/docs/2/rhl-rg-en-7.2/ch-tripwire.html)
Самая близкая вещь, которую я могу придумать (в системах на основе Redhat) - это rpm -aV. Это проверяющая часть rpm, которая будет пытаться проверить, правильно ли размещены суммы md5, режимы файлов и владельцы для файлов, перечисленных как часть проверяемого пакета, с -a вы можете сделать каждый пакет, составляющий систему.
rpm -aV
Если вы хотите исправить разрешения и режимы пакетов (возможно, все немного опасно).
rpm --setperms --setugids -a
Но лучший способ сделать эту работу - запустить rpm -aV, проверить вывод и убедиться / учесть любые аномальные результаты, которые дает каждый пакет / файл. Затем в файлах / пакетах, которые выдают ошибки, вы можете либо переустановить пакет (если файлы различаются), либо сбросить режим uids/gids/ для пакета, предоставленного в выходных данных проверки.
Как определяется "все в нужном месте"?
rsync -av --dry-run, возможно, с -c и --numeric-ids для эталонной копии файловой системы, может подойти для некоторых случаев использования.
Используйте комбинацию 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
Может быть, вы могли бы использовать rkhunter для того, что вам нужно. Он проверяет разрешения и хэши для базы данных, но он больше предназначен для поиска руткитов. Tripwire будет лучше, но если вам нужно что-то более простое.