Назад | Перейти на главную страницу

«Проверка системных файлов» (подобная sfc) для Linux

Я пытаюсь найти инструмент, похожий на команду «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 был бы лучше, но если вам нужно что-то более простое.