web-dev-qa-db-ja.com

Sambaのデフォルトのファイル作成マスクの計算

こんにちは私は関連する答えを見つけられないように見える質問があります。状況は私がsambaサーバーを設定し、Windowsマシンからファイルとフォルダーを作成しようとしていることです。すべてが期待どおりに機能しますが、sambaがファイルのグループおよびその他からxビットを削除するという小さな問題があります。簡単なコード例:

drwx--x--x.   4 root root  4096 Dec 13 20:01 smb
drwxrwx--x. 2 root amikon 4096 Dec 15 22:17 pokus

[pokus]
path = /smb/pokus
public = no
writable = yes
valid users = @amikon

[root@wserver pokus]# ls -l
drwxr-xr-x. 2 vanek amikon 4096 Dec 21 10:14 dir
-rwxr--r--. 1 vanek amikon    0 Dec 21 10:14 file.txt

多くの実験から、Windowsからエントリ(ファイルまたはディレクトリ)を作成している間、SambaはデフォルトのマスクとWindowsマシンからの権限から論理ANDを実行することがわかりました。この動作は、作成マスクと強制作成モード(およびその他のdirsのセット)を使用することにより、多少影響を受ける可能性があります-まったく問題なく期待どおりに動作します。

私は、作成マスク755を使用して0011パーシステントを欠落させる問題を発見しました-xビットはまだファイルから削除されています。唯一のオプションは、強制作成モード755を使用することです。その後、ビットは残りますcuz OR広告します。

私は他の作成マスクオプションをテストしましたが、ファイルから0011が毎回削除されるようです。 755、777、333 ...グループからxを削除するいくつかの保護メカニズムのようである可能性があります。

しかし、私の質問は上記の正確な例についてです。なぜd755があるのですか-結果として-744。 0011を失う魔法がどこで起こったのか?

ヒントをありがとうございました。

4
user203267

0011を失うという魔法は、それがデフォルトのSamba動作であるためです。

ドキュメントから抽出:

マスクの作成:このパラメーターのデフォルト値は、グループおよびその他の書き込みビットと実行ビットをUNIXモードから削除します

デフォルト:マスクの作成= 0744

ここにリンクがあります: http://www.samba.org/samba/docs/man/manpages-3/smb.conf.5.html

create mask (S)を検索します

このドキュメントでは、Sambaチームはなぜこのデフォルトの振る舞いを実装するのかを説明していませんが、私にとってはセキュリティメカニズムを考えるのは簡単です(前述のとおり)。

inherit permissions = yesディレクティブを使用して、新しいファイルに親フォルダーのアクセス許可を継承させることができますが、これはxビットには影響しません。したがって、あなたの場合、これはレンダリングされます:

-rwxrw-r--. 1 vanek amikon    0 Dec 21 10:14 file.txt

また、前述のように、この動作を変更するには、独自のマスクを明示的に定義する必要があります。ここで、「作成」と「強制作成」の主な違いは次のとおりです。

  • create maskは権限を削除します(ANDマスク)
  • force create modeはその後に追加します(ORマスク)

また、create maskは、グループやその他のxビットを処理できません。

したがって、いくつかの目標を達成するには、両方のディレクティブに対処する必要がある場合があります。


いくつかのサンプルを試してみましょう:

1)グループとその他のxビットのみが必要な場合は、組み合わせる必要があります。

create mask = 0700 #Remove r bit from group and others 
force create mode = 0711 #Add x bit only to group and others

結果:-rwx--x--x 1 kris kris 0 Dec 21 14:20 file.txt


2)グループとその他のrおよびxビットが必要な場合は、create maskディレクティブを削除し(デフォルトはすでに0744であるため)、次のように追加します。

    ;create mask = 0700 #remove r bit from group and others (commented)
    force create mode = 0711 #Add x bit only to group and others

結果:-rwxr-xr-x 1 kris kris 0 Dec 21 14:17 file.txt


等々...

Sambaの動作を理解するのに少し役立つことを願っています。

4
krisFR