はじめに
Mac(OS X)にVMWare Fusion7(CentOS5.3)入れてます。
ゲストOSのcentosにsambaも入れて
ホストOSのmacからファイルアクセスできるようにもしました。
しかしmacからsamba経由でsublime textなどのエディタを通して
ファイルを作る&編集するとファイルのアクセス権限が変わってしまう。
これを解消したいとゆーはなし
ちなみにsamba入れたのはこんな感じ
→Mac(OS X)とVMWare Fusion7(CentOS5.3)で開発環境を作る-Sambaの設定(smb.conf)でシンボリックリンクにもアクセスできるように設定する
ながれ
- 現象確認
- 対応
- なおせた確認
1. 現象確認
フォルダとファイル両方に起こることなんですが、
現象の確認って意味でファイルだけにしぼって確認します。
現象を確認する用意をする
ゲストOS側(vmwareのcentos)
一応デフォルトのアクセス権を確認する
# umask 0002 # umask -S u=rwx,g=rwx,o=rx
ファイルのデフォルトアクセス権は666を基準としてumaskの値を引いた値となります。
なので、こんな感じ
0666 - 0002 = 664
フォルダは777を基準にumaskの値を引いたものになります。
0777 - 0002 = 775
この辺りはこちらがすごく詳しく説明してくれています
→デフォルトのアクセス権 - umask
用意をする
# pwd home/hoge ※ テストするためのフォルダを作って移動しておく # mkdir modtest # cd modtest ※ まずはファイルを2つ作る # touch file1.txt # touch file2.txt ※ 今の権限を確認。umaskの値通り664で作成されている # ls -al -rw-rw-r-- 1 hoge hoge 0 10月 9 21:02 file1.txt -rw-rw-r-- 1 hoge hoge 0 10月 9 21:02 file2.txt
ホストOS側(mac)
mac側からはsamba経由なのでsublime textなどで適当にファイルを作って保存します。
ここまでの確認
やろーとしてることと作った3つのファイルの確認です。
現象を確認する
やっとここからが確認です
ゲストOS側(vmwareのcentos)
おもむろにlsで確認。
この時点でmacで作ったfile3.txt
のアクセス権は744
になってしまっています。
sublime textが._file3.txt
を作ってますが、これはバックアップ用でしょうか。
今回は特に気にしません。
# ls -al -rwxr--r-- 1 hoge hoge 4096 10月 9 21:42 ._file3.txt -rw-rw-r-- 1 hoge hoge 0 10月 9 21:02 file1.txt -rw-rw-r-- 1 hoge hoge 0 10月 9 21:02 file2.txt -rwxr--r-- 1 hoge hoge 5 10月 9 21:42 file3.txt
ホストOS側(mac)
今度はmac側からsamba経由でsublime textでfile2.txt
を開いて適当に編集保存。
中にaiueo
とか書いただけなので特にキャプチャはありません。w
ゲストOS側(vmwareのcentos)
再度lsで確認。
# ls -al -rwxr--r-- 1 hoge hoge 4096 10月 9 21:42 ._file3.txt -rw-rw-r-- 1 hoge hoge 0 10月 9 21:02 file1.txt -rwxrw-r-- 1 hoge hoge 5 10月 10 10:26 file2.txt -rwxr--r-- 1 hoge hoge 5 10月 9 21:42 file3.txt
この時点でアクセス権限が3パターンになってしまいました。
- file1.txt:
-rw-rw-r--
= 664- file2.txt:
-rwxrw-r--
= 764- file3.txt:
-rwxr--r--
= 744
原因を推測
これは2進数で表すと良くわかります。
デフォルトは666、umaskは002のビットマスクとして表すとこんな感じになります
666 = 0110 0110 0110 (default)
002 = 0000 0000 0010 (umask)
↓ 引く
644 = 0110 0110 0100 (新規作成ファイル)
これを元に今回の現象を考えてみると、
ゲストOSで作ったファイル(file1.txt)、ホストOSで作ったファイル(file3.txt)と
ゲストOSで作ったファイルをsamba経由でホストOS側から編集したファイル(file2.txt)
の関係はOR演算
になってるようです
664 = 0110 0110 0100
744 = 0111 0100 0100
↓ OR(上か下どちらかが1なら1)
764 = 0111 0110 0100
664と744のままでも数値が高いほうが優先されると考えても良いかもですね。
(もし違ったら教えてください(><))
2. 対応
ここまでわかったところで対応です。
前回のsambaの設定はてきとーすぎたのでcreate maskとcreate modeの設定をします
ゲストOS側(vmwareのcentos)
# sudo vi /etx/samba/smb.cnf ---- vi追記 ---- # file permission create mask = 0644 force create mode = 0 security mask = 0644 force security mode = 0 # directory permission directory mask = 0755 force directory mode = 0 directory security mask = 0755 force directory security mode = 0 --------------- ※ sambaを再起動 # sudo /etc/init.d/smb restart SMB サービスを停止中: [ OK ] NMB サービスを停止中: [ OK ] SMB サービスを起動中: [ OK ] NMB サービスを起動中: [ OK ]
smb.confの編集はcentosのほうのデフォルトに合わせて
create maskは664
directory maskは775
でも良いかもしれません。
3. なおせた確認
ということで同じ手順で確認してみます
ゲストOS側(vmwareのcentos)
用意をする
# pwd home/hoge/modtest ※ ファイルを2つ作る # touch file4.txt # touch file5.txt ※ 権限を確認 # ls -al -rw-rw-r-- 1 hoge hoge 0 10月 10 11:42 file4.txt -rw-rw-r-- 1 hoge hoge 0 10月 10 11:42 file5.txt
ホストOS側(mac)
ゲストOS側(vmwareのcentos)
おもむろにlsで確認。
file6.txtは先ほど設定した644
で作成されています
# ls -al -rwxr--r-- 1 hoge hoge 4096 10月 9 21:42 ._file3.txt -rw-r--r-- 1 hoge hoge 4096 10月 10 11:42 ._file6.txt -rw-rw-r-- 1 hoge hoge 0 10月 9 21:02 file1.txt -rwxrw-r-- 1 hoge hoge 5 10月 10 10:26 file2.txt -rwxr--r-- 1 hoge hoge 5 10月 9 21:42 file3.txt -rw-rw-r-- 1 hoge hoge 0 10月 10 11:42 file4.txt -rw-rw-r-- 1 hoge hoge 0 10月 10 11:42 file5.txt -rw-r--r-- 1 hoge hoge 5 10月 10 11:42 file6.txt
ホストOS側(mac)
mac側からsamba経由のsublime textでfile5.txt
を開いて適当に編集保存。
中身はやっぱり適当にw
ゲストOS側(vmwareのcentos)
再度lsで確認。
file5.txtは664
のままになりました!
# ls -al -rwxr--r-- 1 hoge hoge 4096 10月 9 21:42 ._file3.txt -rw-r--r-- 1 hoge hoge 4096 10月 10 11:42 ._file6.txt -rw-rw-r-- 1 hoge hoge 0 10月 9 21:02 file1.txt -rwxrw-r-- 1 hoge hoge 5 10月 10 10:26 file2.txt -rwxr--r-- 1 hoge hoge 5 10月 9 21:42 file3.txt -rw-rw-r-- 1 hoge hoge 0 10月 10 11:42 file4.txt -rw-rw-r-- 1 hoge hoge 5 10月 10 11:46 file5.txt -rw-r--r-- 1 hoge hoge 5 10月 10 11:42 file6.txt
ちなみにsmb.confで設定した644
じゃないのは上述した理由で
数値が高い方が優先されてるからです。
補足
windowsの場合はcreate modeらを設定しても直らないという記事もみかけました。
その場合はこちらで対応されてる方がいるので参考にしてみると良いかもしれません。
map archive = no
で直るらしいです
対応記事 →Sambaのパーミッション設定で小ハマリ
map archiveについて →Sambaサーバーのチューニング!
ついでに基本的なアクセス権について →chmod 〔オプション〕 属性 ファイル名
まとめ
前回の記事みたいに手抜きして設定するとこうなるよ
っていうアレのたまものでもありますねw
とにかく直せたのでenjoy!ヾ(´ρ`)ノ゛