"Проверка системных файлов" (sfc-like) для Linux

Я пытаюсь найти инструмент, похожий на команду "sfc" в Windows или команду "sysck" в AIX, которая может проверить правильность содержимого файла, владельцев и прав доступа. Функциональность "заменить поврежденные или отсутствующие файлы" в "sfc" - это не то, что мне нужно, а "проверить, что все нужные части находятся во всех нужных местах".

Задача, которую я пытаюсь выполнить, заключается в проверке того, что различные пути установки и обновления до определенного выпуска программного обеспечения во встроенном продукте Linux достигают одного и того же общего состояния файловой системы - все необходимые файлы и каталоги существуют, имеют правильное содержимое (как сказано md5sums или подобным), владелец, группа и разрешения.

Коллекция отдельных команд - find, stat, test и т. Д. - это не то, что я ищу. Я ищу ИНСТРУМЕНТ, такой как тот, который я упомянул выше.

Я искал высоко и низко, но так много поисков приводят к "fsck", что любые положительные попадания скрываются.

5 ответов

Решение

Вероятно, вы ищете IDS на основе хоста, например Tripwire - он способен проверять разрешения, владельца и контрольные суммы файловой системы на соответствие пользовательской политике. Windows SFC, по сути, делает то же самое, но периодически и с политикой, которая предопределена Microsoft и не может быть изменена системным администратором.

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

График Tripwire Из документов Red Hat

(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 будет лучше, но если вам нужно что-то более простое.

Другие вопросы по тегам