在Centos下搭建Ftp服务,步骤如下。
1、检查是否安装 了vsftpd,如果未安装 则安装vsftpd。
1)查看系统中是否安装了vsftpd,可以通过执行命令 :
[[email protected] ftp_test]# rpm -qa | grep vsftpd
vsftpd-2.2.2-24.el6.i686
- 如果没有安装 vsftpd,则安装 :
yum -y install vsftpd
- 创建ftp用户,比如ftp_test。命令:
useradd -s /sbin/nologin -d /home/ftp_test ftp_test
注意:
1)目录尽量不要选择根目录下,这里是/home/ftp_test,并且ftp_test这个目录不要手动创建,否则权限会有问题,执行命令的时候会自动创建
2)注意目录的权限,如果有需要,应该设置相应的权限
3、为ftp_test用户创建密码。命令:
passwd ftp_test
执行之后输入2次密码确认就设置好了密码。
- 编辑vsftpd配置文件,命令:
vim /etc/vsftpd/vsftpd.conf
找到anonymous_enable这个配置项,默认是YES,修改成NO,表示不允许匿名用户登录。
vsftpd的配置
vsftpd.ftpusers:位于/etc目录下。它指定了哪些用户账户不能访问FTP服务器,例如root等。
vsftpd.user_list:位于/etc目录下。该文件里的用户账户在默认情况下也不能访问FTP服务器,仅当vsftpd .conf配置文件里启用userlist_enable=NO选项时才允许访问。
vsftpd.conf:位于/etc/vsftpd目录下。来自定义用户登录控制、用户权限控制、超时设置、服务器功能选项、服务器性能选项、服务器响应消息等FTP服务器的配置。
/etc/vsftpd.conf 内容详解
#####################################
#禁用匿名用户登陆
anonymous_enable=NO
#允许本地用户登陆
local_enable=YES
#允许本地用户写入
write_enable=YES
#注意:这个地方如果不配置,就会出现只有root用户可以登陆,普通用户不可以
check_shell=NO
#掩码,决定了上传上来的文件的权限。设置为000使之有最大权限
local_umask=000
#允许记录日志
xferlog_enable=YES
#允许数据流从20端口传输
connect_from_port_20=YES
#日志路径
xferlog_file=/var/log/vsftpd.log
#ftp欢迎语,可以随便设置
ftpd_banner=hi,guys!
#注意:这个选项可以保证用户锁定在指定的家目录里,防止系统文件被修改。
chroot_local_user=YES
#注意:这个不配置有可能出现只能下载不能上传
allow_writeable_chroot=YES
#配置了可以以stand alone模式运行
listen=YES
#说明我们要指定一个userlist,里边放的是允许ftp登陆的本地用户。如果设置为YES,则文件里设置的是不允许登陆的本地用户
userlist_deny=NO
userlist_enable=YES
#记录允许本地登陆用户名的文件
userlist_file=/etc/vsftpd/allowed_users
#####################################
- 启动vsftp服务,命令:
service vsftpd start
- 查看ftp服务的状态,命令:
service vsftpd status
- 用ftp客户端进行连接访问。
出错原因:用户没有变更根目录的权限。
ftp_test用户默认的根目录是/home/ftp_test,如果要切换登陆目录,需要给予权限
解决方法:
第一步,
打开/etc/vsftpd/vsftpd.conf,做如下配置:
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/chroot_list
第二步,
在/etc/vsftpd下新建chroot_list,加入登陆用户的名字。(用户需要配置密码,在这里就不详述如何添加用户和密码了)
重启vsftpd服务,测试出现下面的情况
查看资料修改selinux
[[email protected] ~]# cat /etc/selinux/config
# This file controls the state of SELinux on thesystem.
# SELINUX= can take one of these three values:
# enforcing- SELinux security policy is enforced.
# permissive- SELinux prints warnings instead of enforcing.
# disabled -No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE=can take one of these two values:
# targeted -Targeted processes are protected,
# mls -Multi Level Security protection.
SELINUXTYPE=targeted
[[email protected] ~]#
selinxu=enforcing 改成 selinux=disabled
然后必须重启服务器,测试windows和filezilia
登录用户为 ftp_test 密码为ftp_test
测试成功!