我一直在尝试为 NAS 上的某些目录设置 Samba 共享,但我似乎无法让它工作。
我的最小化版本smb.conf
归结为
[global]
dns proxy = no
create mask = 0664
force create mode = 0664
directory mask = 0775
force directory mode = 0775
[Media]
path = /srv/Media
writeable =yes
/srv/Media
及其后代属于用户和组samba
,模式为 775。我尝试访问共享的用户user
在组中samba
,即他对相关路径具有读写权限。我已经通过su
ing intouser
和cd
ing to验证了这一点/srv/Media
,在那里我可以毫无问题地列出和修改文件。
为了验证我的 Samba 密码(设置为smbpasswd -a user
)是否正确,我尝试连接 smbclient,同时提供了一个故意错误的密码,该密码NT_STATUS_LOGON_FAILURE
按预期得到了回答,而使用正确的密码连接时,我进入了 smbclient shell。然而,一旦进入外壳,如果我尝试ls
,我会得到NT_STATUS_ACCESS_DENIED listing \*
. 通过 CIFS 或 gvfs 挂载也不起作用。
我研究了许多具有类似问题的问题和文章,但我发现的几乎所有内容都是由于共享目录上的权限问题。确认有问题的用户确实可以在本地访问有问题的目录但不能通过 Samba 访问,我迷路了。
它是 AppArmor。当我在测试时跟踪日志时,我只使用
journalctl -fu smb
. 最重要的是,我在 systemd-nspawn 容器中运行 Samba,并且也在从内部跟踪日志,所以无论如何我都无法找到错误,但是在查看了主机上的审计日志之后一时兴起,我在 /srv/Media 上看到了一堆拒绝公开调用配置文件 smbd。只是为了完整起见,我最后使用(在主机上)关联日志的完整命令是
journalctl -m _SYSTEMD_UNIT=smb.service _HOSTNAME=nas + _AUDIT_FIELD_PROFILE='"smbd"'
. 这要求客人日记与主机链接,这是使用时的默认设置machinectl start
。