您的位置:首页 > Web前端

Fedora16下安装vsftpd实现ftp小结

2013-08-12 21:27 260 查看
之前也捣鼓过一段时间linux下的ftp,环境是fedora16,结果没成功,这次由于项目需要又再一次捣鼓起来,整了一天,终于弄好,实现了可在windows下使用资源管理器窗口访问linux服务器主机的特定ftp文件夹,现在小结一下今天的工作。

1.安装vsftpd。

在fedora系统中式默认安装的,如果没有安装,运行:yum install vsftpd。完成在线安装。

2.相关文件和参数说明

安装完成之后,可在/etc文件夹下打开vsftpd的文件夹。

其中,vsftpd.conf文件是配置文件,相关的参数设置可以在编辑设置;ftpusers为禁止访问账户文件,文件中的用户不能访问ftp;user_list文件为可以访问账户列表文件,其中的用户为可访问ftp的账户。

在vsftpd.conf文件中,会有些默认的基本参数,如果希望实现更多功能,需要自己去查看vsftp的使用手册。(#为屏蔽符号)下面列举几个基本的参数的含义:

参考1:http://os.51cto.com/art/201102/245898.htm

anonymous_enable=YES/no 是否允许匿名用户登录
anonymous_enable=yes/no 是否允许匿名上传文件
local_enable= YES/no 是否允许本地用户登录
write_enable= YES/no 是否允许本地用户上传
guest_enable=yes/no 是否允许虚拟用户登录;
local_mask=022 设置本地用户的文件生成掩码为022,默认值为077
dirmessage_enable= YES 设置切换到目录时显示.message隐含文件的内容
xferlog_enable= YES 激活上传和下载日志
connect_from_port_20=YES 启用FTP数据端口连接
pam_service_name=vsftpd 设置PAM认证服务的配置文件名称, 该文件存放在/etc/pam.d目录下
userlist_enable= YES 允许vsftpd.user_list文件中的用户访问服务器
userlist_deny= YES 拒绝vsftpd.user_list文件中的用户访问服务器
listen= YES/no 是否使用独占启动方式(这一项比较重要)
tcp_wrappers= YES/no 是否使用tcp_wrappers作为主机访问控制方式

参考2:http://os.51cto.com/art/201103/247181.htm

anonymous_enable=YES|NO 控制是否允许匿名用户登录,YES允许,NO不允许,默认值为YES。

ftp_username= 匿名用户所使用的系统用户名。默认下,此参数在配置文件中不出现,值为ftp。

no_anon_password=YES|NO 控制匿名用户登入时是否需要密码,YES不需要,NO需要。默认值为NO。

deny_email_enable=YES|NO 此参数默认值为NO。当值为YES时,拒绝使用banned_email_file参数指定文件中所列出的e-mail地址进行登录的匿名用户。即,当匿名用户使用banned_email_file文件中所列出的e-mail进行登录时,被拒绝。显然,这对于阻击某些Dos攻击有效。当此参数生效时,需追加banned_email_file参数

banned_email_file=/etc/vsftpd.banned_emails 指定包含被拒绝的e-mail地址的文件,默认文件为/etc/vsftpd.banned_emails。

anon_root= 设定匿名用户的根目录,即匿名用户登入后,被定位到此目录下。主配置文件中默认无此项,默认值为/var/ftp/。

anon_world_readable_only=YES|NO 控制是否只允许匿名用户下载可阅读文档。YES,只允许匿名用户下载可阅读的文件。NO,允许匿名用户浏览整个服务器的文件系统。默认值为YES。

anon_upload_enable=YES|NO 控制是否允许匿名用户上传文件,YES允许,NO不允许,默认是不设值,即为NO。除了这个参数外,匿名用户要能上传文件,还需要两个条件:一,write_enable参数为YES;二,在文件系统上,FTP匿名用户对某个目录有写权限。

anon_mkdir_write_enable=YES|NO 控制是否允许匿名用户创建新目录,YES允许,NO不允许,默认是不设值,即为NO。当然在文件系统上,FTP匿名用户必需对新目录的上层目录拥有写权限。

anon_other_write_enable=YES|NO 控制匿名用户是否拥有除了上传和新建目录之外的其他权限,如删除、更名等。YES拥有,NO不拥有,默认值为NO。

chown_uploads=YES|NO 是否修改匿名用户所上传文件的所有权。YES,匿名用户所上传的文件的所有权将改为另外一个不同的用户所有,用户由chown_username参数指定。此选项默认值为NO。

chown_username=whoever 指定拥有匿名用户上传文件所有权的用户。此参数与chown_uploads联用。不推荐使用root用户。

vsftpd的启动方法
方法一:service vsftpd start;service vsftpd stop;service vsftpd restart本方法在fedora系统下有效
方法二:systemclt start vsftpd.service(启动);systemclt stop vsftpd.service(停止);systemclt restart vsftpd.service.(重启)

以上是相关部分参数是释义,但是在修改的同时需要对系统环境做一番设置才行,不然设置了也不会起作用。
例子1:设置root访问方式
chroot_list = YES
chroot_list_file=/etc/vsftpd/chroot_list
需要自己在文件夹中创建chroot_list文件才能起到相应的作用,文件中添加root用户。
例子2:设置ftp默认文件夹
首先对需要设置ftp默认的文件夹进行权限操作,例如想使用/home文件夹作为ftp文件夹,则需要执行chmod 755 /home操作;
然后在vsftpd.conf文件中,增加local_root = /home这句话;
接着输入命令:sestatus -b | grep ftp 查看ftp相关服务开启状态
然后输入命令setsebool ftp_home_dir 1;开启ftp_home_dir(这一步如果不做,连接ftp会报500 OOPS: cannot change directory:/root)

再输入命令setsebool allow_ftpd_full_access 1;开启allow_ftpd_full_access(这一步如果不做,XP可以下载文件,但不能上传文件,没有写权限)

然后重启vsftpd服务(service vsftpd restart/systemclt restart vsftpd.service)
例子3:关闭防火墙或是selinux
参考:http://os.51cto.com/art/201103/246724.htm
有时候服务是正常开启的,但是却访问不了,这时可以考虑是不是是防火墙或SELINUX的事;可能FTPD服务器被防火墙或SELINUX的安全机制防住了。所以您必须要让防火墙通过ftp,当然也要让SELINUX通过ftp服务器才行;

在Fedora/Redhat/CentOS中,您要设置一下防火墙,可以把防火墙关掉,或者在自定义中让ftp通过防火墙;

或者运行一下如下的命令,清除防火墙规则(通用);

[root@localhost beinan]# iptables -F

关于SELINUX服务器的解说 ,可能老手或新手对SELINUX都有点麻烦,建议您SELINUX;或者让vsFTPd服务器跳过SELINUX启动;也就是说要用到 4.1、vsFTPd服务器启动和关闭的通用方法;这在Fedora/Redhat/CentOS中这样启动vsFTPd服务器是有效的;

当然您可也可以关掉SELINUX,在/etc/selinux/config 配置文件如下;

/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 of enforcing.

# disabled - SELinux is fully disabled.

SELINUX=Disabled #这样就把SELINUX服务器关掉了,请重新启动系统;

# SELINUXTYPE= type of policy in use. Possible values are:

# targeted - Only targeted network daemons are protected.

# strict - Full SELinux protection.

SELINUXTYPE=targeted
以上几个例子都是自己测试过,可以使用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: