メモの日々


2010年04月29日(木) [長年日記]

[soft][unix][windows] sambaを使うと実行ビットがセットされてしまう (2)

Sambaを使っていて、WindowsからLinuxへテキストファイルをコピーすると、Linuxで見たときにそのファイルの実行ビットがオンになってしまう。この動作をなんとかしたいと思って調べていたら、以前にも同じことを書いていることを知った。このときは、create maskを0644に設定することで解決としていた。

が、今手元のSamba 3.4.0で create mask = 644 を試すと、Linux上でアクセス権を755に設定したファイルをWindowsから編集するとアクセス権が644に変わってしまう。これはこれで困る。

調べると、map archveというパラメータがあり、これがおれの求めていたものかと思ったが、試してみるとこれもうまくいかない。

動作をまとめてみる。表は、上2行のように設定すると下6行のようになるという意味。

create mask744744644644
map archiveyesnoyesno
Linuxに無いファイルをWindowsからコピー744644644644
Linuxにある755なファイルにWindowsから上書きコピー755755755755
Linuxにある644なファイルにWindowsから上書きコピー744644644644
Linux上で755なファイルをWindowsから別名にコピー744644644644
Linux上で644なファイルをWindowsから別名にコピー744644644644
Linux上で755なファイルをWindowsから編集744644644644
Linux上で644なファイルをWindowsから編集744644644644

744,yesの組み合わせ以外では、どれも同じ結果になるみたい。

おれの望みは、

  • WindowsからLinux上に新規ファイルを作成した場合、Linux上でのアクセス権が644になって欲しい。
  • WindowsからLinux上のファイルを編集したとき、Linux上でのアクセス権を変更しないで欲しい。

なんだけど、後者を実現できていない。できないのかなあ。

map archiveのデフォルト値はなぜyesなのか

実行ビットがオンになるのは不便なので、map archiveのデフォルト値はnoにした方がいいと思うのに。検索すると、古いUsing Samba翻訳の5.3 MS-DOS と UNIX におけるファイルのアクセス権と属性に、

map archive オプションのデフォルト値だけが yesであり、他の二つのオプションのデフォルト値 noとは異なっていることに注意してほしい。これは、archive ビットが DOS や Windows のファイルに正しく設定されていないと、多くのプログラムが正しく動作しないためである。しかし、system と hidden 属性はプログラムの動作上に致命的な影響をおよぼさないため、管理者の判断に任されている。

と説明があった。

やること

  • 請求書
  • 見積書
  • クリーニング
  • 請書