今までにインストールした、インストールマニアックス 2009 のための OSS で発生していた不具合について、何となく原因が分かったような気がする。
起こっている不具合は、Web アプリケーション (OSS) でファイルに書き込めないというもの。
結論を一言で言えば、ファイルやフォルダのアクセス権の設定がおかしかったというだけのことだが、ここにちょっとした問題が隠れていた。
IIS で Web アプリケーションからあるファイルやフォルダに書き込みが必要なとき、そのファイルやフォルダに対して、変更の権限を与えておく必要があることは周知の事実とされている (変更の権限には書き込みの権限が含まれている。)
Web アプリケーションで基本認証を行う場合は認証したユーザーアカウントに対して、匿名認証の場合は IIS_IUSRS グループアカウント (IIS 7.0 の場合) に対して権限を割り当てるとされている。
’2009.9 月 27 日追記
匿名認証の場合は IUSR ユーザアカウントに権限を割り当てるのが正解であるため、以下でいくら IIS_IUSRS グループアカウントに変更の権限を割り当ててもうまくいかないのは当然。
なお、この件についての補足を「IIS 7.0 でファイルアクセス権を割り当てるべきアカウント」に記載している。
今回インストールしている OSS は全て匿名認証しかしていないので、IIS_IUSRS グループアカウントに変更の権限を与えれば良いはずだ。
実際、OSS をインストールしたフォルダには全て、「Inatall Maniax 2009 作業開始」で述べているように、IIS_IUSRS グループアカウントに変更の権限を与えてある。
それにも関わらず、書き込みができないといったエラーが頻発しているのが現状だ。
何度もアクセス権を見直したり、途中で IUSR というアカウントでアクセスしている雰囲気を見つけ、この IUSR に変更の権限を与えてみたり (IUSR 絡みでうまくいかなかったのは勘違いだった可能性大) したが、どうにも解決しない。
三日三晩思い悩んだ末にふと思いついたのが、USERS グループアカウントに変更の権限を与えたらどうなるか。
今朝、さっそく試してみたところ、エラーが出なくなった気がする。(IUSR アカウントに権限を割り当てるのが正解)
そうとわかれば、「Inatall Maniax 2009 作業開始」の作業で行った、c:\var\www\InstallManiax フォルダへの IIS_USRS のアクセス権から「変更」と「書き込み」のアクセス権を削除してしまうことにする。
そして、今までにインストールしたそれぞれの OSS の、以下に挙げるファイルやフォルダに対して、USERS グループアカウントIUSR アカウントに「変更」の権限を与える。
| WordPress | wordpress フォルダ | wp-content フォルダ |
|---|---|---|
| Drupal | drupal フォルダ | sites\default\setting.php ファイル |
| sites\default\files フォルダ | ||
| PukiWiki | pukiwiki フォルダ | attach フォルダ |
| backup フォルダ | ||
| cache フォルダ | ||
| counter フォルダ | ||
| diff フォルダ | ||
| trackback フォルダ | ||
| wiki フォルダ | ||
| SugarCE | SugarCE フォルダ | config.php ファイル |
| cache フォルダ | ||
| custom フォルダ | ||
| data フォルダ | ||
| modules フォルダ |
厳密に適用するのであれば、PukuWiki はアクセス権を変更するそれぞれのフォルダ内の .htaccess、index.html ファイルに対しては、「変更」、「書き込み」の権限を削除して、「読み取りと実行」、「読み取り」の権限だけにするのが望ましいようだが、良しとしておく。
‘09.5月13日追記
USERS グループアカウントにアクセス権の割り当てを行うと書いたが、実は IUSR アカウントに割り当てれば良いことが分かった。
上で IUSR アカウントに権限を割り当ててもうまく動かないと書いたが、何かの気の迷いだったということにしておこう。これはJoomla! をインストールしたときにはっきりと分かった。
Joomla! はインストール時に設定した情報を configration.php ファイルに書き込んで保存するのだが、このファイルはインストール前には存在しておらず、インストール処理中に Joomla! 自身によって作成されるようになっている。元々、Windows のファイルシステムは全てのドライブ、フォルダに対して USERS グループでのファイルやフォルダの作成が許可されるようなアクセス権が割り当てられている。
このため、Joomla! のインストール処理中に Joomla! 自身がファイルを作成することは、規定の状態のままで何の問題もなく実行できる。
そこで、作成された configuration.php ファイルのプロパティを見たところ IUSR アカウントが所有者になっており、また IUSR アカウントに「フルコントロール」のアクセス権が割り当てられていることが確認できた。つまり、IIS がファイルやフォルダにアクセスする際に使用するアカウントは IUSR だということになる。
IIS_IUSRS グループアカウントにアクセス権を割り当ててあっても、IIS 経由での書き込みができない件については、IUSR アカウントが IIS_IUSRS グループに属していないためだと思われる。
しかし何故、IUSR アカウントが IIS_IUSRS グループに属していないのか、その理由はよく分からないし、名称だけをみると間違いを誘っているようにしか思えない。
関連する記事 (Related posts):



最近のコメント