selinux导致ftp上传失败 工作中的真实案例




selinux导致ftp上传失败 工作中的真实案例

2022-07-20 20:31:31 网络知识 官方管理员
这是一台squid代理服务器(一台式机,安装的是redhat5.464位操作系统),每天下午4点一台服务器通过ftp上传主机数据库巡检报告到这台代理PC机的一个用户家目录下的xunjian目录下,这台PC再通过发送邮件的方式将巡检报告发给组内成员,进行巡检
此为背景,之前的selinux设置的为Permissive,不料同事中午睡觉的时候,脚这么一碰,将这台代理PC重启了,重启后,连续2天的巡检报告都没有通过邮件收到,赶紧解决吧

1、手动的执行ftp上传动作,报如下错误:553Couldnotcreatefile.

sshuser@station90.example.com:~/xunjian/0108>ftp192.168.1.123
Connectedto192.168.1.123.
220(vsFTPd2.0.5)
Name(192.168.1.123:oracle):oracle
331Pleasespecifythepassword.
Password:
230Loginsuccessful.
RemotesystemtypeisUNIX.
Usingbinarymodetotransferfiles.
ftp>binary
200SwitchingtoBinarymode.
ftp>putxunjian_0108.zip
local:xunjian_0108.zipremote:xunjian_0108.zip
229EnteringExtendedPassiveMode(|||10717|)
553Couldnotcreatefile.

2、代理PC的oracle家目录,肯定是有读写权限的,因为是代理PC重启导致的,突然想到selinux若开启的话,是不允许用户的家目录进行ftp的,需要将ftp_home_dir这个sebool打开,如下所示:

[root@squid~]#getenforce
Enforcing
[root@squid~]#getsebool-a|grepftp_home_dir
ftp_home_dir-->off
[root@squid~]#setseboolftp_home_diron

3、这时候去上传,就可以成功了,如下所示

sshuser@station90.example.com:~/xunjian/0108>ftp192.168.1.123
Connectedto192.168.1.123.
220(vsFTPd2.0.5)
Name(192.168.1.123:oracle):oracle
331Pleasespecifythepassword.
Password:
230Loginsuccessful.
RemotesystemtypeisUNIX.
Usingbinarymodetotransferfiles.
ftp>bi
200SwitchingtoBinarymode.
ftp>putxunjian_0108.zip
local:xunjian_0108.zipremote:xunjian_0108.zip
229EnteringExtendedPassiveMode(|||19974|)
150Oktosenddata.
100%|***********************************************************************|577KB2.31MB/s00:00ETA
226FilereceiveOK.
591290bytessentin00:00(2.18MB/s)

4、另外一种方式,就是将selinux设置为Permissive

[root@squid~]#getenforce
Enforcing
[root@squid~]#setenforce0
[root@squid~]#getenforce
Permissive

5、同时在/etc/rc.local中添加这么一行,那么下次系统重启后,就不会发生这样的情况了

[root@squid~]#whichsetenforce
/usr/sbin/setenforce
[root@squid~]#cat/etc/rc.local|tail-n1
/usr/sbin/setenforce0

好啦,这样就顺利解决问题了,希望对一些朋友有所帮助

发表评论:

最近发表
网站分类
标签列表