CentOS 6中vsFTPd安装及配置

来源:互联网 发布:社交网络的优缺点 编辑:程序博客网 时间:2024/05/16 18:48

参考

1. vsFTPd配置:

    http://www.centos.bz/2011/03/centos-install-vsftpd-ftp-server/

2. centos用户&组权限&添加删除用户问题详解:
    http://zh888.blog.51cto.com/1684752/385605
3. setsebool命令:
    http://hi.baidu.com/ma95221/blog/item/c779741137cc121bb8127b4f.html
4. 用户访问目录限制:
    http://www.cntxk.com/CataNews/42/info4735.html
5. 配置文件中文说明及限制访问用户:
    http://litvip.com/2011/03/01/187

开头序
网络上资源丰富,但不知为什么,当我按照网上一些技术文章一步一步操作后,得到的结果总是失败,问题重出。
而且天下文章一大抄,通过搜索找来的结果大多完全相同。
于是决定记录自己一步一步明确的操作,总结成文章,以方便自己日后查阅,也许也能对其他人有所帮助。

目的
在CentOS中安装和配置vsFTPd服务,并且可以通过其他机器访问。
CentOS和vsFTPd是什么这里不再熬术。

步骤
本次是在CentOS 6的版本上操作的。
说明:以下命令均在root用户下执行。

(1)安装vsftpd
没啥好说的一条命令搞定。
Shell代码  收藏代码
  1. <span>#yum install vsftpd</span>  
中间会提示确认,输入“y”回车

启动vsftpd服务
Shell代码  收藏代码
  1. <span>#service vsftpd start</span>  
 
管理vsftpd相关命令:
停止vsftpd:  
Shell代码  收藏代码
  1. #service vsftpd stop  
重启vsftpd: 
Shell代码  收藏代码
  1. <span>#service vsftpd restart</span>  

(2)添加ftp用户
下面是添加ftpuser用户,设置根目录为/home/ftpuser,禁止此用户登录SSH的权限,并限制其访问其它目录。

增加用户ftpuser,指向目录/home/ftpuser,禁止登录SSH权限。
Shell代码  收藏代码
  1. <span style="white-space: normal; background-color: #ffffff;"><span>#useradd -d /home/ftpuser -g ftp -s /sbin/nologin ftpuser</span></span>  

设置用户口令
Shell代码  收藏代码
  1. <span>#passwd ftpuser</span>  
 

(3)配置防火墙
打开/etc/sysconfig/iptables文件

Shell代码  收藏代码
  1. <span>#<span style="white-space: normal; background-color: #ffffff;">vi /etc/sysconfig/iptables</span></span>  
在REJECT行之前添加如下代码

-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

保存和关闭文件,重启防火墙
Shell代码  收藏代码
  1. <span>#service iptables start</span>  

(4)重新启动vsftpd
每次配置完后都不要忘记重启vsftpd,以使设置生效
Shell代码  收藏代码
  1. <span>#service vsftpd restart</span>  

(5)修改SELinux设置
不过即使打开了防火墙,这时通过FTP客户端还是不能访问,会报错误:
500 OOPS: cannot change directory:/home/ftpuser
500 OOPS: priv_sock_get_cmd

这里还需要修改SELinux设置。
通过命令getsebool查看设置
Shell代码  收藏代码
  1. <span>#getsebool -a|grep ftp</span>  
通过命令setsebool进行设置
Shell代码  收藏代码
  1. <span>#setsebool ftp_home_dir 1</span>  

再重新启动vsftpd
service vsftpd restart

现在可以用FTP客户端访问了

(6)用户访问目录限制
一般在设置FTP服务时都喜欢指定用户的访问路径,不能让用户在服务器上乱逛。
需要配置一下vsftpd.conf文件。

修改配置文件 vsftpd.conf
Shell代码  收藏代码
  1. <span>#vi /etc/vsftpd/vsftpd.conf</span>  
打开vsftpd.conf文件后,修改或添加以下内容。
Shell代码  收藏代码
  1. <span>anonymous_enable=NO   #禁止匿名用户anonymous登录  
  2. local_enable=YES        #允许本地用户登录  
  3. write_enable=YES        #让登录的用户有写权限(上传,删除)  
  4.   
  5. #接下来的三条配置很重要  
  6. #chroot_local_user设置了YES,那么所有的用户默认将被chroot,  
  7. #也就用户目录被限制在了自己的home下,无法向上改变目录。  
  8. #chroot_list_enable设置了YES,即让chroot用户列表有效。  
  9. #★超重要:如果chroot_local_user设置了YES,那么chroot_list_file  
  10. #设置的文件里,是不被chroot的用户(可以向上改变目录)  
  11. #★超重要:如果chroot_local_user设置了NO,那么chroot_list_file  
  12. #设置的文件里,是被chroot的用户(无法向上改变目录)  
  13. chroot_list_enable=YES    
  14. chroot_list_file=/etc/vsftpd/chroot_list    #控制根目录的用户列表文件  
  15. user_config_dir=/etc/vsftpd/user_conf   #每个用户的配置文件存放目录</span>  
 
修改chroot_list文件,添加控制根目录用户 ftpuser
Shell代码  收藏代码
  1. <span>#vi /etc/vsftpd/chroot_list</span>  

创建用户配置文件
Shell代码  收藏代码
  1. <span>#mkdir /etc/vsftpd/user_conf  
  2. #vi /etc/vsftpd/user_conf/ftpuser</span>  
在文件中设置ftpuser用户的访问路径,如下:
local_root=/data/www

(7)再次修改SELinux设置
以上步骤设置完成后,指定的ftp用户再连接到服务时根目录就指向/data/www下了。
但试试上传文件是不行的,这里还需要修改一处SELinux设置。
Shell代码  收藏代码
  1. <span>#setsebool allow_ftpd_full_access 1</span>  

重新启动vsftpd
Shell代码  收藏代码
  1. <span>service vsftpd restart</span>  

(8)限制访问用户

到此FTP服务可以正常使用了,但除了root等系统用户,其他的用户都可以通过FTP服务连接到服务器上;
可我们只希望开放ftpuser用户,其他用户都不允许访问FTP服务。

Shell代码  收藏代码
  1. <span>#vi /etc/vsftpd/vsftpd.conf</span>  

打开vsftpd.conf文件后,修改或添加以下内容。

Shell代码  收藏代码
  1. <span>#userlist_enable=YES,用户访问控制列表有效,文件是/etc/vsftpd/user_list  
  2. #userlist_deny=YES,/etc/vsftpd/user_list里的用户不能登录  
  3. #userlist_deny=NO,只有/etc/vsftpd/user_list用户才可以登录  
  4. #★重要:无论这里如何设置,只是进一步限制用户,只是在上面/etc/vsftpd/ftpusers  
  5. #的效果上叠加。比如/etc/vsftpd/ftpusers里有root用户,即便是你设置了  
  6. #userlist_deny=NO并且/etc/vsftpd/user_list有root,那root也是不能登录的!  
  7. userlist_enable=YES  
  8. userlist_deny=NO</span>  

 


设置user_list文件

Shell代码  收藏代码
  1. <span>#vi /etc/vsftpd/user_list</span>  


清空user_list文件内容,只写上允许访问FTP服务的用户名

 


重新启动vsftpd

Shell代码  收藏代码
  1. <span>#service vsftpd restart</span>  
原创粉丝点击