Alp*_*rae 5 permissions selinux ftp vsftpd
我已经在 Fedora 12 服务器上设置了 vsftpd,并且希望进行以下配置。每个用户都应该有权访问:
为了实现这一点,我首先将 vsftpd 配置为将每个用户 chroot 到他的主目录。然后,我使用/web/USER
正确的权限创建并使用,mount --bind /web/USER /home/USER/Web
以便用户可以/web/USER
通过/home/USER/Web
.
我还打开了 SELinux 布尔值ftp_home_dir
,以便允许 vsftpd 在用户的主目录中写入。
这工作得很好,除了当用户尝试上传或重命名 中的文件时/home/USER/Web
,SELinux 会禁止它,因为更改也必须对 进行/web/USER
,并且 SELinux 不授予 vsftpd 向该目录写入任何内容的权限。
allow_ftpd_full_access
我知道我可以通过打开 SELinux 布尔值或来解决问题ftpd_disable_trans
。我还尝试使用audit2allow来生成策略,但它的作用是生成一个策略,为ftpd提供对类型目录的写访问权限public_content_t
;如果我理解正确的话,这相当于打开allow_ftpd_full_access
。
我想知道是否可以配置 SELinux 以允许对特定目录/web/USER
及其内容进行 FTP 写访问,而不是完全禁用 SELinux 的 FTP 控制。
# semanage fcontext -a -t public_content_rw_t "/myftp/pub(/.*)?"
Run Code Online (Sandbox Code Playgroud)
请务必(/.*)?
在目录名称末尾包含 。
我还尝试使用audit2allow来生成策略,但它的作用是生成一个策略,为ftpd提供对public_content_t类型的目录的写访问权限;如果我理解正确的话,这相当于打开allow_ftpd_full_access
本质上是的;因为 SELinux 允许标记为 的目录/文件public_content_t
在不同服务之间共享。然而,通过使用sebooleans
(或sebool
更准确地说,)可以进行进一步的访问控制。
给予“ftpd 完全访问权限”并不意味着赋予它执行/读取/写入所需内容和位置的权利。SELinux 已为您系统上的服务制定了指定的策略;意思是,如果目录的文件上下文 ( ) 是ftpd
,则允许读取文件。如果目录的 fcontext 为 ;,SELinux 将向 ftp 服务器授予写权限;根据相关的RedHat 文档,其他服务(例如 samba、apache 等)必须通过布尔值获得对这些目录的写权限。如果您的“本地策略”在标记为 的目录中授予 ftpd 写入访问权限,那么它实际上会剥夺一层安全性。因此,我建议使用上下文标记目录,并删除自定义生成的本地策略。fcontext
public_content_t
public_content_rw_t
public_content_t
public_content_rw_t
有关更多信息和详细信息,请参阅SELinux wiki 页面。