[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:30226] Re: repair permission of directories



池田@オレンジです。

On Mon, 15 Oct 2001 00:10:51 +0900
In repair permission of directories
HIRAMOTO Kouji <HGF03317@xxxxxxxxxxx> Wrote
> 平本と申します。
> 
> find / -type d -exec chown a+rx {} \;

chmod ?

> #ついでにいうと、htdocs を / 以下にコピーされた。(;_;)

Makefile.tmplのrootが空だから、これをoverrideせずにそのまま実行しちゃう
と/をインストール先にしちゃうみたいですねぇ。

>   せめて Debian のパッケージからインストールしたものに関しては、ディ
> スクトリのパーミッションを元に戻したいのですが、何か方法があります
> でしょうか?

setuidされているもの以外のパーミッション情報を保持しているデータベースは
無いと思います。

力技なら、インストール済みのパッケージを持ってきて、arで開いて
data.tar.gzからパーミッションを拾い、現状と食い違っている場合は修正する
スクリプトを作るとか...

#!/usr/bin/perl

open(IN, "dpkg --get-selections |);
while(<IN>) {
	chop;
	( $pkg, $dmy ) = split;
	&check( $pkg );
}
close IN;

sub check() {
	my( $okg ) = @_;
	my( $line ) = `apt-get --reinstall --print-uris install $pkg`;
	my( $url, $deb ) = split( /\s*/, $line );
	`wget $url`;
	`ar x $deb`
	open(TAR, "tar tvfz data.tar.gz |");
	while(<TAR>) {
		next if( $_ !~ /^d/ );
		# ディレクトリチェック & 修正
	}
	close TAR;
}

こんな感じかなぁ?

あと、preinst/postinstで修正される場合もありますね。
とりあえず私の手元のPCでは
$ cd /var/lib/dpkg/info
$ grep chmod *inst | wc -l
     98
でした。ちなみに
$ dpkg --get-selections | wc -l
    499

ファイルのパーミッション変更しているのも含まれるので、ディレクトリの変更
だけだったらそんなに無いと思います。

--

Masaki Ikeda <masaki@xxxxxxxxxxxx>
    Orange System Co.