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
に初期化される。

コメント