Sambaのパーミッション設定で小ハマリ
Sambaのパーミッションの設定で小ハマリしたのでメモ。
Sambaでファイルのパーミッションをコントロールするには、以下のような設定がある。
create mask force create mode
通常は、これらの設定でパーミッションをコントロールするのだが、以下の様に設定した状態で…
create mask = 0644 force create mode = 0000
ファイルをSamba上でリネームをすると、オーナーの実行権のみが落ちるという現象が解決できずにいた。
たとえば、以下のような、パーミッションが 0755 のファイルがあったとする。
$ ls -l *.pl -rwxr-xr-x. 1 *** *** 0 7月 3 11:16 2014 test.pl
このファイルを、Samba上でリネームすると、なぜかパーミッションが 0655 になってしまう。
$ ls -l *.pl -rw-r-xr-x. 1 *** *** 0 7月 3 11:16 2014 test2.pl
つまり、リネームすると u-x になってしまう。
a-x が発生するなら、まだわからないでもないが、なぜ、u-x(オーナーの実行権のみが落ちる)になるのだろう?
もちろん、Samba上からではなく、sshでログインして mv しても、当然の事ながらパーミッションは変化しない。
Samba上でリネームすると、パーミッションが勝手に変化してしまう。
「create mask」「force create mode」の設定をいろいろ変更しても、この現象が発生する。
しかし、そもそも現状の設定では、a-x な設定をしているのだから、u-x だけが発生するという事は理屈の上でもおかしい。これらの設定が原因とは思えない。
「security mask」「force security mode」なども調べてみたが、関係ないと思われるし、「create mask」などの設定と同様、u-x な状態になるのは理屈の上でもおかしい。これらの設定も原因とは思えない。
「Samba リネーム パーミッション」などで検索してみるが、なかなか情報が出てこない。
ピンポイントで「Samba オーナー 実行権」と検索してみたら…あった!
何ですと?
「map archive」?
まったくノーマークだった伏兵が登場した。
さっそく設定を変えてみる。
create mask = 0644 force create mode = 0000 map archive = no
$ chmod a+x *.pl $ ls -l *.pl -rwxr-xr-x. 1 *** *** 0 7月 3 11:16 2014 test2.pl
Samba上でリネームしてみる。
$ ls -l *.pl -rwxr-xr-x. 1 *** *** 0 7月 3 11:16 2014 test3.pl
おぉ! u+x が維持された。
何でデフォルトがこんな設定なのだろう?