尝试配置 samba 以共享我的驱动器(本地到虚拟机)。使用 Fedora。
共享与 兼容sudo setenforce 0
,因此这是 SELinux 问题
这是我的 SELinux 规则。
sudo semanage fcontext -l | grep samba
/home/hanuman(/.*)? all files system_u:object_r:samba_share_t:s0
/run/media/hanuman(/.*)? all files system_u:object_r:samba_share_t:s0
以下是日志
type=AVC msg=audit(1718035536.971:480): avc: denied { getattr } for pid=7754 comm="smbd[192.168.1." path=2F72756E2F6D656469612F68616E756D616E2F53746F726167652D6E7466732F4D6F73742042656175746966756C204368696E65736520536F6E6720596F752077696C6C20457665722048656172203230313020323031352E6D7033 dev="sda1" ino=228609 scontext=system_u:system_r:smbd_t:s0 tcontext=system_u:object_r:fusefs_t:s0 tclass=file permissive=0
我错过了什么?
我注意到smbd_t
vs samba_share_t
,那有什么区别?
audit2allow -w -a
建议setsebool -P samba_export_all_rw 1
虽然可行,但不是最好的解决方案。
聊天 GPT 回答:
这实际上解决了这个问题;重新标记整个驱动器。
我第一次从那东西上得到有用的答案。
编辑:实际上它摧毁了我的系统,我无法再登录。Restorecon 似乎对文件共享来说是必要的,但在整个家中这样做会直接破坏您的系统!
所以这不是解决方案。
日志说明了一切:您需要一个 SELINUX 规则来允许从 smb_t 到 fusefs_t 上下文的调用。
因为,您可能会发现从头开始构建自己的 SELinux 策略可能并不简单,所以最好考虑使用可用的布尔值之一
semanage boolean -l
。即使它不是“量身定制的”,它也有存在的优点,并将为您节省大量时间。此外,SELINUX 只是其他安全措施中的一层,所以我不明白为什么您认为这不是一个可接受的解决方案……
正如本文 ( https://selinuxproject.org/page/SambaRecipes ) 所述,您可能会发现各种与 SMB 相关的布尔值。只需选择最适合您需求的一个:
setsebool -P samba_export_all_ro=1
setsebool -P samba_export_all_rw=1
setsebool -P allow_smbd_anon_write=1
setsebool -P samba_enable_home_dirs=1
setsebool -P use_samba_home_dirs=1