私はOSXとWindowsクライアントとのネットワーク上にFreeNASサーバーを持っています。 OSXクライアントがサーバー上のSMB/CIFS共有と対話する場合、他のすべてのクライアントのアクセス許可の問題が発生します。
更新:プロジェクトを中止したため、回答を確認できなくなりましたが、今後の訪問者のために遠慮なくヘルプを投稿してください。
この動作の詳細は、クライアントが実行しているOSXのバージョンにも依存しているようです。この質問では、10.8.2を実行しているクライアントを想定します。
CIFS共有をOSXクライアントにマウントし、その上に新しいディレクトリを作成すると、ディレクトリはdrwxr-x-rx
権限で作成されます。これは、私以外の誰もがディレクトリに書き込むことができないため、望ましくありません。私のグループには、書き込み権限も必要な他のユーザーがいます。この動作は、サーバーのsmb.conf
に次の設定が存在する場合でも発生します。
[global]
create mask
= 0666
directory mask
= 0777
[share]
force directory mode
= 0775
force create mode
= 0660
これらの設定により、ディレクトリが少なくともrwxrwxr-x
権限で作成されていることを確認する必要があるという印象を受けました。しかし、それはクライアントがディレクトリを作成することから変更権限後を停止しないと思います。
Windowsクライアントから同じ共有にフォルダーを作成すると、新しいフォルダーに必要なアクセス許可(rwxrwxrwx
)が割り当てられるため、現在、問題はOSXクライアントにあると想定しています。
作成したディレクトリのアクセス許可を簡単に変更できれば、これはそれほど問題にはならないと思いますが、できません。 Finderでディレクトリ情報を開くと、変更を加えることができない古い「カスタムアクセスがあります」という通知が表示されます。
これは、共有でWindows ACLを使用しているために発生していると思いますが、これは単なる推測です。
ターミナルを介してグループの書き込み権限を変更することは問題なく機能しますが、これは展開には実用的ではなく、誰からも期待するのは無理です。
これは完全なsmb.conf
です:
[global]
encrypt passwords = yes
dns proxy = no
strict locking = no
read raw = yes
write raw = yes
oplocks = yes
max xmit = 65535
deadtime = 15
display charset = LOCALE
max log size = 10
syslog only = yes
syslog = 1
load printers = no
printing = bsd
printcap name = /dev/null
disable spoolss = yes
smb passwd file = /var/etc/private/smbpasswd
private dir = /var/etc/private
getwd cache = yes
guest account = nobody
map to guest = Bad Password
obey pam restrictions = Yes
# NOTE: read smb.conf.
directory name cache size = 0
max protocol = SMB2
netbios name = freenas
workgroup = COMPANY
server string = FreeNAS Server
store dos attributes = yes
hostname lookups = yes
security = user
passdb backend = ldapsam:ldap://ldap.company.local
ldap admin dn = cn=admin,dc=company,dc=local
ldap suffix = dc=company,dc=local
ldap user suffix = ou=Users
ldap group suffix = ou=Groups
ldap machine suffix = ou=Computers
ldap ssl = off
ldap replication sleep = 1000
ldap passwd sync = yes
#ldap debug level = 1
#ldap debug threshold = 1
ldapsam:trusted = yes
idmap uid = 10000-39999
idmap gid = 10000-39999
create mask = 0666
directory mask = 0777
client ntlmv2 auth = yes
dos charset = CP437
unix charset = UTF-8
log level = 1
[share]
path = /mnt/zfs0
printable = no
veto files = /.snap/.windows/.zfs/
writeable = yes
browseable = yes
inherit owner = no
inherit permissions = no
vfs objects = zfsacl
guest ok = no
inherit acls = Yes
map archive = No
map readonly = no
nfs4:mode = special
nfs4:acedup = merge
nfs4:chown = yes
hide dot files
force directory mode = 0775
force create mode = 0660
OS Xクライアントがアクセス許可を変更しないようにするには、追加する必要があります
unix extensions = no
smb.confの[グローバル]セクションに移動します
および/または次のようなものを追加します
force security mode = 0660
force directory security mode = 02770
グループ書き込み権限を保持するために共有定義に追加します。
共有定義を変更して、次のものだけを含めます。
path = /path/to/folder
browseable = yes
writeable = yes
inherit permissions = yes
次に、フォルダのアクセス許可を直接変更します。
# chown user:group -R /path/to/folder
# chmod 2770 -R /path/to/folder (or 2775 for public read only)
上記のCHMODコマンドには「特別な」アクセス許可が適用され、フォルダーにドロップされたフォルダーが親のアクセス許可を自動的に引き継ぐことができます。これを有効にするには:
/etc/init.d/samba reload
reload
スイッチはsambaを再起動しません(現在のユーザーをキックオフします)が、構成ファイルを再ロードします。
同様に、 FreeNAS Wiki に文書化されています:
アクセス許可がWindowsユーザーに対して機能するが、OS Xユーザーに対しては機能しない場合は、Unix拡張機能を無効にして、CIFSサービスを再起動してみてください。
terminal.app内にこれらのフォルダーを作成する場合は、システム全体のumaskを022ではなく002(777-umask =実行可能ファイルとフォルダーのマスク666-umask =ファイルのマスク)に設定する可能性があります。