首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在redhat中配置FTP服务器

在redhat中配置FTP服务器
EN

Unix & Linux用户
提问于 2014-04-01 10:50:58
回答 3查看 4.2K关注 0票数 1

我在红帽里安装了vsftpd。所有文件都是文件,直到我登录到ftp服务器时:

ftp本地主机

or fileZilla我得到以下错误:

代码语言:javascript
复制
ERROR:
- 500 OOPS: cannot change directory:/foo

同时,当我将日志目录从

代码语言:javascript
复制
- /var/log/xferlog

代码语言:javascript
复制
- /usr/local/data

然后我得到:

代码语言:javascript
复制
  500 OOPS: failed to open xferlog log file:/usr/local/data/vsftpd.log

从这个链接看来,解决方案似乎是:

代码语言:javascript
复制
This happens because SELinux isn’t properly configured for your ftp service. Either disable SELinux or configure it for ftp.

To disable SELinux, edit /etc/selinux/config and set “SELINUX=disabled”, then reboot.

如何在不禁用SElinux的情况下启用ftp?

EN

回答 3

Unix & Linux用户

发布于 2014-04-01 12:02:57

SELinux不会让vsftpd/var/ftp以外的地方提供文件,也不会故意在/var/log之外写入日志。SELinux完全是关于减灾的。FTP根本上是不安全的。在vsftpd下运行SELinux是个好主意,因为如果攻击者决定攻击您的FTP服务,那么它可以最大限度地减少攻击者可能造成的损害。

运行vsftpd这样的根本不安全的服务而不使用SELinux锁定它是愚蠢的。

如果您绝对必须像这样重新配置它,则需要重写与FTP相关的SELinux策略,但这并不是一项简单的工作。这个audit2allow工具可以帮助

如果您认为禁用SELinux太危险,而构建新的SELinux策略太困难,那么我建议您改用SFTPscp。RHEL附带了sshd的配置和运行,所以您不必做任何特殊的事情来完成这项工作。

票数 1
EN

Unix & Linux用户

发布于 2014-04-01 14:40:04

您通常可以在/var/log/messages中找到selinux拒绝。尝试这个(作为根):

代码语言:javascript
复制
grep avc /var/log/messages | grep ftp

根据所需的配置,检查输出并确定拒绝是否错误。根据需要对grep语句进行调优,以便将信息简化为您想要修复的语句。将系统暂时置于许可模式(setenforce 0)中,然后执行您希望需要的操作,这通常是有用的。/var/log/messages将收集需要在SELinux策略中修复的错误列表。一旦您对需要修复的拒绝列表感到满意,请使用以下方法生成一个新策略:

代码语言:javascript
复制
# ensure you have audit2allow
which audit2allow

# if no audit2allow, install it:
yum install policycoreutils-python

# replace the following with your tuned grep (if necessary)
grep avc /var/log/message | grep ftp | audit2allow -M my_vsftp

在当前目录中,将有两个新文件:my_vsftp.temy_vsftp.pp*.te文件是可读的,*.pp是编译的。检查*.te文件以确保它是适当的。

这里要小心,因为开放太多的SELinux规则可能会使您容易受到攻击。强烈建议在SELinux上阅读。

代码语言:javascript
复制
cat my_vsftp.te

如果策略看起来合适,安装并激活它:

代码语言:javascript
复制
mkdir /usr/share/selinux/packages/my_vsftp
mv my_vsftp.* /usr/share/selinux/packages/my_vsftp/
semodule -i /usr/share/selinux/packages/my_vsftp/my_vsftp.pp

确保系统正在执行(getenforcesetenforce 1),并测试您的FTP服务器,监视/var/log/messages是否拒绝。

票数 1
EN

Unix & Linux用户

发布于 2014-04-01 17:49:42

允许vsftpd访问任何地方的一种稍微繁琐的解决方案是:

代码语言:javascript
复制
setsebool -P allow_ftpd_full_access=1

在这一点上,vsftpd几乎可以在系统的任何地方.

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/122552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档