作成 2017.04.03
更新 2017.04.03
Samba4 の共有フォルダーにあるアプリケーションが起動できない事象の対処
現象
Samba3(CentOS6) で利用していた設定を Samba4(CentOS7) に引き継いだところ、共有フォルダーの実行プログラムが起動できなくなった。
/etc/samba/smb.conf より抜粋
[sampleshare]
    comment = Sample Share
    path = /sampleshare
    browseable = No
    create mask = 0600
    directory mask = 0700
    force create mode = 0600
    read only = No
本設定ではSMB経由でファイルを保存した場合、ACL が rw-------(0600) と設定される。
ただし ACL を都度変更して実行権限を付与すると起動可能。
また、create mask = 0700 および force create mode = 0700 へ変更しても可能。
原因
Samba 3.6 以前では ACL の実行権限がチェックされないため、クライアントは実行権限が付与されていないファイルであっても実行できた。
Samba 4.0.10 で仕様が変わり、実行権限が無いファイルに対して "open for execution リクエスト" を受け取ると拒否するようになった。
対策
acl allow execute always = Yes を [global] セクション もしくは個別の共有設定内に追加することで実行を許可できる。
/etc/samba/smb.conf より抜粋(修正)
[sampleshare]
    comment = Sample Share
    path = /sampleshare
    browseable = No
    create mask = 0600
    directory mask = 0700
    force create mode = 0600
    read only = No
    acl allow execute always = Yes
調べ方
いくらググっても見つからなかった。
  1. testparm -v で有望そうなオプションを見つける
  2. 最新のマニュアルを読む
タグ: Samba

©2004-2017 UPKEN IPv4