linux

Linux vsftp与SELinux:如何协同工作

小樊
38
2025-11-10 12:46:56
栏目: 智能运维

1. 确保SELinux处于Enforcing模式(推荐)
SELinux的Enforcing模式会主动强制执行安全策略,是协同vsftpd工作的最佳状态。通过sestatus命令查看当前模式(显示Enforcing即为生效);若需临时切换至Enforcing,执行setenforce 1;若需永久生效,编辑/etc/selinux/config文件,将SELINUX=的值改为Enforcing

2. 配置SELinux端口标签
vsftpd默认使用21端口(控制连接),若启用被动模式(PASV)还需开放数据端口(如10000-10100)。需将这些端口标记为ftp_port_t类型,允许SELinux允许vsftpd访问:

# 添加控制端口(21)
sudo semanage port -a -t ftp_port_t -p tcp 21
# 添加数据端口范围(示例:10000-10100)
sudo semanage port -a -t ftp_port_t -p tcp 10000-10100
# 验证端口标签
sudo semanage port -l | grep ftp_port_t

此步骤解决了“端口未授权”的SELinux拒绝问题。

3. 调整SELinux布尔值(关键权限开关)
SELinux通过布尔值(Boolean)控制ftp服务的特定权限,需根据需求启用以下关键布尔值:

布尔值的-P参数表示永久生效,避免重启失效。

4. 设置正确的SELinux安全上下文
FTP用户的家目录及文件需具备正确的SELinux类型(home_root_tpublic_content_rw_t),否则会出现“权限拒绝”错误:

5. 配置vsftpd与SELinux协同的选项
在vsftpd配置文件(/etc/vsftpd/vsftpd.conf)中,需开启以下选项以配合SELinux:

sudo systemctl restart vsftpd

6. 监控与调试SELinux问题
若遇到SELinux拒绝访问的问题,可通过以下命令排查:

此步骤帮助快速定位并解决SELinux与vsftpd的协同问题。

0
看了该问题的人还看了