From: WATANABE Hirofumi Date: 2002-09-08T00:07:09+09:00 Subject: [ruby-dev:18221] Re: [ruby-list:35875] Unsecure world writeabledir の警告 わたなべです。 "U.Nakamura" writes: > file.cも戻してみましたが、 > > * 戻さなくてもいいような気もする 微妙ですね。 > * 戻すとしても、他のDOSISH platformは? > Cygwinとdjgppは大丈夫、なんですよね CygwinはNTFSならntsecで制御可能なので問題ないはず。 djgppはstat()のソースを見ると /* Under MS-DOS, file access permissions are shared by all, except for Write permission. */ #define READ_ACCESS (S_IRUSR | S_IRGRP | S_IROTH) #define WRITE_ACCESS S_IWUSR #define EXEC_ACCESS (S_IXUSR | S_IXGRP | S_IXOTH) となってました。つまりgroupとotherのwrite permissionは触らな いというポリシー。というわけで絶対にそのビットが立つことはないです。 あとはOS/2とX68Kですね。面倒だから戻さないほうがいいかも。 > @@ -2523,4 +2524,9 @@ rb_w32_stat(const char *path, struct sta > strcat(buf1, "."); > - if (_fullpath(buf2, buf1, MAXPATHLEN)) > - return stat(buf2, st); > + if (_fullpath(buf2, buf1, MAXPATHLEN)) { > + ret = stat(buf2, st); > + if (ret == 0) { > + st->st_mode &= ~022; > + } > + return ret; > + } > else 022ってのもなんだし + st->st_mode &= ~(S_IWGRP|S_IWOTH) としたほうがいいかなと思ったらそんなマクロは存在しないし。 -- わたなべひろふみ