tweeeetyのぶろぐ的めも
アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/
2014-10-10
macからCentOSに入れたSamba経由でファイルを作成・編集すると勝手にパーミッション(permission)が変更されてしまう対応(umask、chmod、create mask、directory maskへんのおさらい)
mac linux samba
はじめに
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などで適当にファイルを作って保存します。
f:id:tweeeety:20141010101804p:plain
ここまでの確認
やろーとしてることと作った3つのファイルの確認です。
file1.txt:ゲストOS(centos)で新規作成したファイル
file2.txt:ゲストOS(centos)で新規作成したファイル&後でsamba経由で編集してみる
file3.txt:ホストOS(mac)で新規作成したファイル
現象を確認する
やっとここからが確認です
ゲスト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)
mac側からはsamba経由でfile6.txtを作成する
ゲスト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!ヾ(´ρ`)ノ゛

コメント