配置 vsftpd 允许访问已挂载的 ISO 文件

配置 vsftpd 允许访问已挂载的 ISO 文件

我在允许匿名 FTP 访问装载 ISO 文件的目录时遇到问题。

  • 没有改变/etc/vsftpd/vsftpd.conf
  • RHEL 6.5 DVD ISO 文件保存到/var/ftp/pub/ISO/rhel6_5.iso
  • 匿名用户可以看到这个ISO文件
  • 创建了一个目录/var/ftp/pub/rhel
  • 挂载的iso文件,mount -o loop,ro /var/ftp/pub/ISO/rhel6_5.iso /var/ftp/pub/rhel

rhel但是匿名 ftp 用户由于某种原因看不到目录,有什么想法吗?

我按照这个说明进行操作vsftpd 符号链接,但它对我不起作用。/var/ftp/pub/rhel如果我挂载 ISO 文件,该目录将从匿名 FTP 用户中消失。

这里是ls -lZ输出。我还注意到,一旦挂载 ISO 文件,SELinux 上下文就会发生变化。

[root@citest pub]# ls -lZ
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 ISO
drwxr-xr-x. root root unconfined_u:object_r:public_content_t:s0 rhel

答案1

大约 3 小时后,我想我明白了为什么它不起作用。

public_content_t通过 FTP 服务器共享的文件需要Selinux 上下文,除非与用户主目录关联并且看起来/var/ftp/pub不符合主目录的条件。

在我挂载 ISO 文件后,rhel 的安全上下文更改为system_u:object_r:iso9660_t:s0,并且由于 ISO 文件只能以只读方式挂载,所以我无法更改安全上下文。

还注意到以下/var/log/audit/audit.log

type=AVC msg=audit(1404397698.292:182): avc:  denied  { getattr } for  pid=2671 comm="vsftpd" path="/pub/ISO/rhel" dev=loop1 ino=1856 scontext=unconfined_u:system_r:ftpd_t:s0-s0:c0.c1023 tcontext=system_u:object_r:iso9660_t:s0 tclass=dir

禁用selinux并重新启动vsftpd,一切正常。

答案2

我有一个虚拟机,它连接了一个 iso 映像作为虚拟 cdrom,这与您的设置几乎相同。

我将此行添加到/etc/fstab

/dev/cdrom /repo iso9660 rootcontext=system_u:object_r:public_content_t:s0,context=system_u:object_r:public_content_t:s0 0 0

在 mount(8) 中搜索 selinux 选项

ftp用户设置:

# getent passwd ftp
ftp:x:14:50:FTP User:/repo:/sbin/nologin

相关内容