RPMパッケージでインストールしたファイルの権限修正


chmod -R 777 /
とか仮にやってしまったとして、Red HatLinux ではそれを修正できんのかなぁとか思って調べてみた。
RPM は、インストールしたパッケージの情報やファイルリストや mtime なんかをパッケージデータベースとして持ってるので、クエリオプションで引っこ抜けそう。
man や rpm.org のドキュメントを読んで試してみたら、どうにか権限の一覧を取り出せた。

rpm -qa --queryformat '[%{FILEMODES}\t%{FILENAMES}\n]'
%{FILEMODES} の値がなんか 16877 とか 33188 みたいな数字で、なにこれポカーンとさせられたが、どうやらこれは10進数表記かなにかっぽい。
%{FILEMODES:perms} あるいは %{FILEMODES:octal} とかやると見慣れた形式になるので( octal の先頭二文字の "10" は何を表してるんだろ?)、

chmod `rpm -q --queryformat '[%{FILEMODES:octal} %{FILENAMES}\n]' redhat-release | cut -b 3-`
とかやれば、直るような気がしなくも無い。
でも、コマンドやデーモンが生成したファイル(ログとかデータベースとか)や、ソースコードからインストールしたり、FTP なんかでアップロードしたコンテンツなんかの権限は知りようが無いので、そういったものは直すのが難しい。
インストーラ ( Anaconda ) の仕様もあんまり知らないのだけども、インストーラがインストールメディアからコピーするとかそんな操作は通常は( kickstart で POSTINSTALL 操作とかさせない限り) 有り得ないんだろか?
潰せる仮想環境ってあったかなぁ。実際に試してみたいような、どうでもいいような。