修改SELinux设置,使vsftp在enforcing security enhance模式下正常运行

开了SELinux和防火墙,没想到引出了vsftp的问题。FTP登录报错:500 OOPS: cannot change directory。下面来看看产生这个问题的原因和对策。

首先,分析一下冲突原因:
1. 为锁定用户在自己的home目录中,在vsftpd.conf打开chroot_local_user。
这 样FTP登录用户的“/”,就是passwd中的home path,比如/var/www/a.com/。避免FTP用户跑到/etc乱闯。这样设置过,FTP登录时,会自动执行CWD /var/www/html/www.xxx.com,并且把这个目录设置为FTP进程的根目录,用户就无法离开了。

vi /etc/vsftpd/vsftpd.conf

# You may specify an explicit list of local users to chroot() to their home
# directory. If chroot_local_user is YES, then this list becomes a list of
# users to NOT chroot().
chroot_local_user=YES
# chroot_list_enable=YES
# (default follows)
# chroot_list_file=/etc/vsftpd/chroot_list
# 当然也可以用chroot_list_enable=YES的办法。但要逐个在chroot_list中指定FTP用户名,很麻烦。也容易出现疏漏。所以还是推荐用chroot_local_user来限制。

2. 下面,问题就出来了。打开SELinux后,SELinux会阻止ftp daemon读取用户home目录。所以FTP会甩出一句 “500 OOPS: cannot change directory”。无法进入目录,出错退出。

解决办法有两个:

1. 降低SELinux安全级别,把enforcing降低到permissive

vi /etc/sysconfig/selinux

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=permissive

这时FTP的登录功能就正常了。但降低整体系统安全作为代价来解决一个小问题,这总不是最佳方案。

2. 经过研究,又找到了另一个更理想的办法。首先查看SELinux中有关FTP的设置状态:

getsebool -a|grep ftp

allow_ftpd_anon_write --> off
allow_ftpd_full_access --> off
allow_ftpd_use_cifs --> off
allow_ftpd_use_nfs --> off
allow_tftp_anon_write --> off
ftp_home_dir --> off
ftpd_connect_db --> off
ftpd_disable_trans --> off
ftpd_is_daemon --> on
httpd_enable_ftp_server --> off
tftpd_disable_trans --> off

经过尝试发现,打开ftp_home_dir或者 ftpd_disable_trans。都可以达到在enforcing级别下,允许FTP正常登录的效果。

# setsebool -P ftpd_disable_trans 1
或者
# setsebool -P ftp_home_dir 1
# service vsftpd restart

加-P是保存选项,每次重启时不必重新执行这个命令了。最后别忘了在/etc/sysconfig/selinux中,修改SELINUX=enforcing。

时间: 2024-08-07 18:35:59

修改SELinux设置,使vsftp在enforcing security enhance模式下正常运行的相关文章

SElinux 设置与HTTP服务结合

SElinux是基于MAC策略的. DAC:Discretionary Access Control自由访问控制 MAC:Mandatory Access Control 强制访问控制 ? DAC环境下进程是无束缚的 ? MAC环境下策略的规则决定控制的严格程度 ? MAC环境下进程可以被限制的 ? 策略被用来定义被限制的进程能够使用那些资源(文件和端口) ? 默认情况下,没有被明确允许的行为将被拒绝 SELinux定义了系统中每个[用户].[进程].[应用]和[文件]的访问和转变的权限,然后它

vsftpd服务监听端口修改以及设置iptables

一.简介 FTP支持两种模式,一种方式叫做Standard (也就是 PORT方式,主动方式),一种是 Passive (也就是PASV,被动方式). 主动模式下FTP 客户端首先和FTP服务器的TCP 21端口建立连接,通过这个通道发送命令,客户端需要接收数据的时候在这个通道上发送PORT命令,PORT命令包含了客户端用什么端口接收数据,在传送数据的时候,服务器端通过自己的TCP 20端口连接至客户端的指定端口发送数据. 被动模式(Passive)模式在建立控制通道的时候和Standard模式

Centos7.4 修改selinux错误导致服务器起不来

[[email protected] ~]# cat /etc/selinux/config # This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead o

修改SELinux配置参数,重启后出现内核报错

今天下午,一台文件服务器重启之后.从其他主机上就不能FTP到这台文件服务器了.检查发现是SELinux的问题.同事把/etc/selinux/config中的参数SELINUXTYPE=targeted改成disabled之后,重启主机不成功,出现报错信息: Unable to load SELinux  Policy.  Machine is in enforcing Mode. Halting now. Kenel panic - not syncing :  Attempted to ki

RHEL因为selinux设置失误,无法重启问题。(centos适用)

今天做FTP模拟的时候selinux设置出现失误.导致系统无法重新启动.出现如下界面 Failed To Load SELinux policy.freezing .. 网上找了下,解决方法如下: 开机之后进入linux启动选择界面,停在平时启动的哪那一行按E键,进入grub编辑页面. 在LANG=zh_CN.UTF-8 空格 加上 selinux=0或者 enforcing=0 最后ctrl+x. 此时熟悉的界面出现了,现在需要将执行错误的selinux参数改过来.SELINUX=enforc

centos7 修改selinux 开机导致 faild to load SELinux policy freezing 错误

centos7 修改selinux 开机导致 faild to load SELinux policy  freezing 错误 之前把selinux关闭了,这次想打开selinux,于是修改了 /etc/selinux/config 文件,然后重启时,就开不了机了, 出现错误:faild to load SELinux policy  freezing,查了一些资料,完善方案 1. 重启时在启动页面 按 E, 进入 grub 编辑页面: 2. 找到 linux 那一行,在最后 language

DELL服务器利用OMSA修改BIOS设置

首先安装omsa for linux相关的rpm包,然后启动服务 srvadmin-services.sh start 然后,就可使用omreport,omconfig等工具了.通过下面的命令即可修改BISO设置: omconfig chassis biossetup -?#例如,修改biso设置中,串行输出设备为 com2,然后即可重启生效omconfig chassis biossetup attribute=serialcom setting=com2BIOS setup configur

MyEclipse 的智能提示设置 使开发写代码的速度更快

MyEclipse 是学习java 的人 最常用的IDE ,常常看到很多人写代码的速度很快,其实他们大多数都使用了代码提示功能,代码提示有好有坏,好的方面就是使在项目开发中速度更快,不用去记那些较长的关键字,而坏的方面就是如果使用代码提示的时间较长,自己便会便懒了,下面就是设置MyEclipse 使其在输入任何字符的时候都可以代码提示. 打开MyEclipse 在菜单栏中找到WIndow-->Preference.找到后找到如下红色的笔标注的地方 找到 Auto activation trigg

RHEL7 修改SSH默认端口及修改SELinux运行状态

RHEL7安装后,默认开启SSH服务以便远程配置,但默认端口22并不安全,一般不建议使用默认端口,那就修改SSH默认端口.在sshd_config里面的修改RHEL7.0上修改和7.0以下类似,但要注意SELinux的修改. 修改步骤: 1.查看是否已安装SSH软件包  # rpm -qa|grep ssh 2.检查服务是否开启  # systemctl status sshd.service 3.检查进程运行状态  # ps -ef |grep sshd 4.检查程序运行端口 # netsta