我一直尝试为 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
和user
验证cd
了这一点/srv/Media
,我可以在其中列出和修改文件而不会出现问题。
为了验证我的 Samba 密码(使用 设置smbpasswd -a user
)是否正确,我尝试使用 smbclient 连接,同时故意输入错误的密码,结果如NT_STATUS_LOGON_FAILURE
预期一样得到了 ,而使用正确的密码连接时,系统会将我带入 smbclient shell。但是,一旦进入 shell,如果我尝试ls
,就会得到NT_STATUS_ACCESS_DENIED listing \*
。通过 CIFS 或 gvfs 进行挂载也不起作用。
我研究过许多有类似问题的问题和文章,但我发现几乎所有问题都是由于共享目录的权限问题造成的。在确认相关用户确实可以在本地访问相关目录但不能通过 Samba 访问后,我迷茫了。
答案1
是 AppArmor。当我在测试时跟踪日志时,我只跟踪了 Samba 日志journalctl -fu smb
。最重要的是,我在 systemd-nspawn 容器中运行 Samba,并且也在容器内部跟踪日志,因此无论如何我都无法找到错误,但在心血来潮查看主机上的审计日志后,我看到 /srv/Media 上针对配置文件 smbd 的大量拒绝打开调用。
出于完整性考虑,我(在主机上)最后用来关联日志的完整命令是journalctl -m _SYSTEMD_UNIT=smb.service _HOSTNAME=nas + _AUDIT_FIELD_PROFILE='"smbd"'
。这要求客户机日志与主机链接,这是使用 时的默认设置machinectl start
。