Sambaのパーミッション設定がうまくいかない

https://teratail.com/questions/6s2bdr88w8bae9

Sambaのパーミッション設定がうまくいかない

解決したい課題
クライアント端末で生成したディレクトリやファイルのパーミッションが0775となるようにしたい。

環境
Ubuntu : 20.4
samba : 4.13.17 -Ubuntu

現状
/etc/samba/smb.conf には以下を追加しています。

create mode = 0775
directory mode = 0775
force create mode = 0775
force directory mode = 0775
windowsのクライアント端末からディレクトリを生成すると、パーミッションが0755となってしまいます。

また、Ubuntuのアカウントはプライマリグループを変更しています。
~/.bashrc でumaskを変更しているつもりで、ターミナル上ではumask 002となっています。

試したこと
tsparamを実行し、構文に間違いがないことを確認しています。
また、smb.confを書き換えるたびにsmbdをリスタートしています。

以下の設定とすると、パーミッションは0750となりました。

create mode = 0770
directory mode = 0770
force create mode = 0770
force directory mode = 0770

YT0014
YT0014
2022/03/07 17:47

create modeは、create maskが本来の記述で、「パーミッションに対するビットマスク」なので、設定されている値がそのままとなる訳ではないようです。
http://www.samba.gr.jp/project/translation/current/htmldocs/manpages/smb.conf.5.html
k5kkkkk

k5kkkkk
2022/03/07 19:52

コメントありがとうございます。

{(DOS AND create mode ) OR (force create mode)}
が作成したファイルのパーミッションとなるとの理解でした。
どうやらさらにUbuntu側のパーミッションがAND処理されるようです。

おそらく
/etc/login.defs
のumaskが最後にANDされているようです。
少し挙動をまとめたうえでclosedさせていただきたいと思います。
(Linuxに関しては素人のため、お詳しい方に追記していただけると嬉しいです)
回答1件

自己解決

{(DOS AND create mode ) OR (force create mode)}

がパーミッションとなるとの理解でしたが、

{(DOS AND create mode ) OR (force create mode)} AND (not UMask)

がパーミッションとなるようです。

sambaにUbuntuと同じアカウントでアクセスした場合も、~/.bashrc で設定したumaskは適応されていないようでした。
/etc/login.defs のumaskを変更することで意図した動作が行えました。

投稿2022/03/08 10:46

編集2022/03/16 01:18


 

http://manpages.ubuntu.com/manpages/focal/ja/man5/login.defs.5.html

/etc/login.defs – shadow パスワード機能の設定

 

       UMASK (数値)
              許可属性マスクをこの値に初期化する。  指定されていない場合は、許可属性マスクは  077
              に初期化される。

コメント