ディレクトリのパーミッションが勝手に変更される

提供: Samba-JP
J106から転送)
移動先:案内検索
KB番号 J0106
最終更新日 2001/12/09
作成者 はせがわようすけ
最終更新者 たかはしもとのぶ

対象

この文書は、以下のプロダクトに付いて説明したものです。

  • Samba 2.0.x

現象

Samba サーバ上でパーミッションを 0555 にしたディレクトリを用意し、 Windows 上でプロパティを表示させると『読み取り専用』にチェックが入っているものの、 ここで『隠しファイル』『アーカイブ』等にチェックを入れると、ディレクトリのパーミッションが 0755 になってしまい、再び Windows 上でプロパティを表示させると『読取専用』のチェックが消えています。

原因

これは Samba の仕様になります。

MS-DOSやWindowsでは、『読み取り専用』属性のついたディレクトリ以下であっても、ユーザはファイルを作成できる必要があります。UNIXの場合、書き込み権のないディレクトリにファイルを作成することができないため、MS-DOSやWindows側の仕様を実現するためには、ディレクトリを読み取り専用にすることができません。

対処策

これは、UNIXとMS-DOSやWindowsの仕様の違いに起因する問題ですので、基本的にSambaの制限事項になります。 関連する情報として J0105: ディレクトリの属性を保持できない も参照してください。

この仕様が問題になる場合、Samba 2.0.10日本語版では、以下の暫定パッチを適用することにより、この動作を抑止することが可能になります。問題が発生している場合はこのパッチをソースに適用した上で、再コンパイルを行なってください。

samba-2.0.10-ja-1.2_dir-readonly.patch

また、その他のSamba 2.0系列および、Samba 2.2系列に対しても、同様のロジックを適用することで、この問題を修正することが可能です。 ただし、ソースのコメントに

/* We never make directories read only for the owner as under DOS a user 
       can always create a file in a read-only directory. */ 

と書かれているように、問題が発生する可能性があります。 このパッチを適用する場合は、発生しうる問題について充分理解した上で行なって下さい。

この技術情報は samba-jp:04905, samba-jp:10453, samba-jp:11356 からの一連のスレッドの議論を元に作成されています。