selinux导致ftp上传失败 工作中的真实案例
程序员文章站
2022-04-03 20:25:05
这是一台squid代理服务器(一台式机,安装的是redhat 5.4 64位操作系统),每天下午4点一台服务器通过ftp上传主机数据库巡检报告到这台代理PC机的一个用户家目录下的xunjian目录下,这... 13-01-11...
这是一台squid代理服务器(一台式机,安装的是redhat 5.4 64位操作系统),每天下午4点一台服务器通过ftp上传主机数据库巡检报告到这台代理pc机的一个用户家目录下的xunjian目录下,这台pc再通过发送邮件的方式将巡检报告发给组内成员,进行巡检
此为背景,之前的selinux设置的为permissive,不料同事中午睡觉的时候,脚这么一碰,将这台代理pc重启了,重启后,连续2天的巡检报告都没有通过邮件收到,赶紧解决吧
1、手动的执行ftp上传动作,报如下错误:553 could not create file.
sshuser@station90.example.com:~/xunjian/0108> ftp 192.168.1.123
connected to 192.168.1.123.
220 (vsftpd 2.0.5)
name (192.168.1.123:oracle): oracle
331 please specify the password.
password:
230 login successful.
remote system type is unix.
using binary mode to transfer files.
ftp>binary
200 switching to binary mode.
ftp> put xunjian_0108.zip
local: xunjian_0108.zip remote: xunjian_0108.zip
229 entering extended passive mode (|||10717|)
553 could not create file.
2、代理pc的oracle家目录,肯定是有读写权限的,因为是代理pc重启导致的,突然想到selinux若开启的话,是不允许用户的家目录进行ftp的,需要将ftp_home_dir这个sebool打开,如下所示:
[root@squid ~]# getenforce
enforcing
[root@squid ~]# getsebool -a | grep ftp_home_dir
ftp_home_dir --> off
[root@squid ~]# setsebool ftp_home_dir on
3、这时候去上传,就可以成功了,如下所示
sshuser@station90.example.com:~/xunjian/0108> ftp 192.168.1.123
connected to 192.168.1.123.
220 (vsftpd 2.0.5)
name (192.168.1.123:oracle): oracle
331 please specify the password.
password:
230 login successful.
remote system type is unix.
using binary mode to transfer files.
ftp> bi
200 switching to binary mode.
ftp> put xunjian_0108.zip
local: xunjian_0108.zip remote: xunjian_0108.zip
229 entering extended passive mode (|||19974|)
150 ok to send data.
100% |***********************************************************************| 577 kb 2.31 mb/s 00:00 eta
226 file receive ok.
591290 bytes sent in 00:00 (2.18 mb/s)
4、另外一种方式,就是将selinux设置为permissive
[root@squid ~]# getenforce
enforcing
[root@squid ~]# setenforce 0
[root@squid ~]# getenforce
permissive
5、同时在/etc/rc.local中添加这么一行,那么下次系统重启后,就不会发生这样的情况了
[root@squid ~]# which setenforce
/usr/sbin/setenforce
[root@squid ~]# cat /etc/rc.local | tail -n 1
/usr/sbin/setenforce 0
好啦,这样就顺利解决问题了,希望对一些朋友有所帮助
此为背景,之前的selinux设置的为permissive,不料同事中午睡觉的时候,脚这么一碰,将这台代理pc重启了,重启后,连续2天的巡检报告都没有通过邮件收到,赶紧解决吧
1、手动的执行ftp上传动作,报如下错误:553 could not create file.
sshuser@station90.example.com:~/xunjian/0108> ftp 192.168.1.123
connected to 192.168.1.123.
220 (vsftpd 2.0.5)
name (192.168.1.123:oracle): oracle
331 please specify the password.
password:
230 login successful.
remote system type is unix.
using binary mode to transfer files.
ftp>binary
200 switching to binary mode.
ftp> put xunjian_0108.zip
local: xunjian_0108.zip remote: xunjian_0108.zip
229 entering extended passive mode (|||10717|)
553 could not create file.
2、代理pc的oracle家目录,肯定是有读写权限的,因为是代理pc重启导致的,突然想到selinux若开启的话,是不允许用户的家目录进行ftp的,需要将ftp_home_dir这个sebool打开,如下所示:
[root@squid ~]# getenforce
enforcing
[root@squid ~]# getsebool -a | grep ftp_home_dir
ftp_home_dir --> off
[root@squid ~]# setsebool ftp_home_dir on
3、这时候去上传,就可以成功了,如下所示
sshuser@station90.example.com:~/xunjian/0108> ftp 192.168.1.123
connected to 192.168.1.123.
220 (vsftpd 2.0.5)
name (192.168.1.123:oracle): oracle
331 please specify the password.
password:
230 login successful.
remote system type is unix.
using binary mode to transfer files.
ftp> bi
200 switching to binary mode.
ftp> put xunjian_0108.zip
local: xunjian_0108.zip remote: xunjian_0108.zip
229 entering extended passive mode (|||19974|)
150 ok to send data.
100% |***********************************************************************| 577 kb 2.31 mb/s 00:00 eta
226 file receive ok.
591290 bytes sent in 00:00 (2.18 mb/s)
4、另外一种方式,就是将selinux设置为permissive
[root@squid ~]# getenforce
enforcing
[root@squid ~]# setenforce 0
[root@squid ~]# getenforce
permissive
5、同时在/etc/rc.local中添加这么一行,那么下次系统重启后,就不会发生这样的情况了
[root@squid ~]# which setenforce
/usr/sbin/setenforce
[root@squid ~]# cat /etc/rc.local | tail -n 1
/usr/sbin/setenforce 0
好啦,这样就顺利解决问题了,希望对一些朋友有所帮助