centos-rhel服务器相关 / 未分类 · 2016年11月18日

vsftp install and selinux config on centos6.x

ftp
1.安装 vsftpd
yum install vsftpd -y
2.同步数据和配置
rsync -avz root@192.168.1.3:/data/vsftp/ vsftp/
rsync -avz root@192.168.1.3:/etc/vsftpd/ vsftpd/
/etc/init.d/vsftpd restart

3.添加用户
useradd -d /data/vsftp -g ftp -s /sbin/nologin dkmftp
4.selinux设置
setenforce 0 #关
setenforce 1 #开

setsebool -P ftp_home_dir 1
setsebool -P allow_ftpd_full_access 1
setsebool -P ftpd_connect_db=on
service vsftpd restart

5. selinux 配置
SELinux在enforcing模式下配置vsftp,运行指定用户访问
https://wiki.centos.org/zh/HowTos/SELinux#head-23b32edada724aa8a29ab04685b53de6455e08a0
http://www.linuxquestions.org/questions/linux-software-2/vsftpd-and-selinux-449313/
http://dingxuan.info/blog/read.php/313.htm
http://nameyjj.blog.51cto.com/788669/496025
### 下面是乱的 可以不用看
setsebool -P ftp_home_dir 1
#CentOS6里,是这样
setsebool -P allow_ftpd_full_access 1
setsebool -P ftpd_connect_db=on
service vsftpd restart
/etc/selinux/config
此时访问ftp,你会发现无法访问,这是由于SELinux引起的。
[root@localhost yjj]# setsebool -P ftp_home_dir=on
[root@localhost yjj]# setsebool -P ftpd_connect_db=on
getsebool -a|grep 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 –> on
ftpd_is_daemon –> on
httpd_enable_ftp_server –> off
tftpd_disable_trans –> off
经过尝试发现,打开ftp_home_dir或者 ftpd_disable_trans。都可以达到在enforcing级别下,允许FTP正常登录的效果。
setsebool -P ftp_home_dir 1
#CentOS6里,是这样
setsebool -P allow_ftpd_full_access 1
setsebool -P ftpd_connect_db=on
service vsftpd restart
加-P是保存选项,每次重启时不必重新执行这个命令了。最后别忘了在/etc/sysconfig/selinux中,修改SELINUX=enforcing。