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 mask | 744 | 744 | 644 | 644 |
map archive | yes | no | yes | no |
Linuxに無いファイルをWindowsからコピー | 744 | 644 | 644 | 644 |
Linuxにある755なファイルにWindowsから上書きコピー | 755 | 755 | 755 | 755 |
Linuxにある644なファイルにWindowsから上書きコピー | 744 | 644 | 644 | 644 |
Linux上で755なファイルをWindowsから別名にコピー | 744 | 644 | 644 | 644 |
Linux上で644なファイルをWindowsから別名にコピー | 744 | 644 | 644 | 644 |
Linux上で755なファイルをWindowsから編集 | 744 | 644 | 644 | 644 |
Linux上で644なファイルをWindowsから編集 | 744 | 644 | 644 | 644 |
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 属性はプログラムの動作上に致命的な影響をおよぼさないため、管理者の判断に任されている。
と説明があった。
■ やること
請求書見積書- クリーニング
- 請書