我正在设置家用摄像头以录制到 NAS 服务器(CentOS 8 Stream)。我正在使用 FTP 进行传输。我安装了 vsftpd 并创建了一个专用用户(ftpuser)。我希望将文件传输到 /data/recordings,这也是 Samba 共享:\mynas\recordings。
当我从相机的 UI 设置 FTP 传输的目的地时,它始终假设我从用户的主目录开始。因此 /data/recordings/camera1 变为 /home/ftpuser/data/recordings/camera1。没有办法改变这种行为。
作为解决方法,我将 ftpuser 的主目录更改为 /data/recordings。仅当我将录音文件夹的标签设置为 user_home_dir_t 时,这才有效:
semanage fcontext -a -t user_home_dir_t /data/recordings
restorecon -F -R -v /data/recordings
问题是破坏了 Samba 共享,因为标签最初是 samba_share_t。
如果我关闭 SELinux,一切都会正常工作,所以问题 100% 是文件夹的标签。
我已经做了一些谷歌搜索,看起来使用布尔值可能是解决方案,但我不知道该使用哪一个。我尝试了几个,但似乎没有什么区别。任何帮助都会很棒。
谢谢!
答案1
这应该可以解决这个问题,而无需更改文件的安全上下文:
sudo setsebool -P samba_export_all_ro=1
sudo setsebool -P samba_export_all_rw=1
(可能单独第二个命令就足够了,我没有测试过)。