一、安装ftp

1.检查是否安装了ftp

rpm -qa | grep vsftpd

2.若没有,则进行安装

yum install vsftpd
#开启服务
service vsftpd start
#查看进程
netstat -nltp | grep 21

3.设置vsftpd开机启动

chkconfig --level 35 vsftpd on

4.配置ftp服务器

基本信息:
vsftpd 的配置目录为 /etc/vsftpd,包含下列的配置文件:
vsftpd.conf 为主要配置文件
ftpusers 配置禁止访问 FTP 服务器的用户列表
user_list 配置用户访问控制

(1)修改配置文件

vim /etc/vsftpd/vsftpd.conf

anonymous_enable=NO   # 是否开启匿名登录
local_enable=YES     # 是否允许本地用户登录
write_enable=YES   # 是否允许上传
local_umask=022     # 默认的umask码
diremssage_enable=YES   # 是否显示目录说明文件
xferlog_enable=YES   # 是否记录ftp传输过程
connect_from_prot_20=YES  # 是否确定端口传输来自20
xferlog_ftd_format=YES     # 是否使用标准的ftp xferlog模式
chroot_list_enable=YES   # 是否将系统用户限制在自己的home目录下
chroot_list_file=/etc/vsftpd/chroot_list    # 列表不受限制的用户
listen=YES     # 是否开启监听
pam_service_name=vsftpd  # 服务名称
userlist_enable=YES
tcp_wrappers=YES
# 其他一些常用参数
max_client=100     # vsftpd最大支持链接数100个IP
max_per=5      # 每个IP能支持5个链接
local_max_rate=81920   # 限制传输速度
listen_address=某个IP    # 绑定某个IP到vsftpd,只允许该IP访问
xferlog_file=/var/log/vsftpd.log   # 日志存放位置

主要是匿名登录字段anonymous_enable,ftp用户限制chroot_list_enablechroot_list_file
也可以把chroot_list_enablechroot_list_file都注释关闭。

(2)修改selinux

这一步骤我是有疑惑的,不知道是否应该开启selinux,因为其他博客里提到如果登录不成功或者直接访问不了ftp,可以把selinux关掉的

#查看系统中关于ftp的配置
getsebool -a | grep ftp

若报错,getsebool: SELinux is disabled。则

vim /etc/selinux/config
#修改
SELINUX=1
#然后重启服务器(其实就是开启selinux的操作)
shutdown -r now 或 reboot(有root权限)
#重新执行查看系统ftp配置操作
getsebool -a | grep ftp
#修改selinux,允许用户在家目录写入数据
setsebool -P allow_ftpd_anon_write off
setsebool -P ftp_home_dir on

注意,在修改完配置后,再把selinux关闭

vim /etc/sysconfig/selinux
SELINUX=disabled
reboot

为什么/etc/selinux/config/etc/sysconfig/selinux文件夹不一致?不太了解。感觉是前者配置selinux本身,后者是配置系统启动项。

二、添加ftp用户

# 创建一个用户 ftpuser
useradd ftpuser
# 设置密码,回车输入新密码和确认密码
# 也可以用 echo "javen205" | passwd ftpuser --stdin 形式修改密码
passwd ftpuser
# 设置用户主目录,不能登陆系统(注意,添加之后再设置用户属性就需要用usermod)
chmod a-w /data/ftp && chmod 777 -R /data/ftp/pub
usermod -d /data/ftp ftpuser
usermod -s /sbin/nologin test

或者一步到位

// 指定用户 test 属于组 ftp,只能访问的目录是 /home/www/test,不能登陆系统
useradd -d /home/www/test -g ftp -s /sbin/nologin test
// usermod -s /bin/bash test - 修改用户可登录
// 设置该用户的密码
passwd test
// 把 test 加入该文件
vim /etc/vsftpd/chroot_list

删除用户

userdel ftpuser

三、访问ftp

windows 可以直接在资源管理器中,输入ftp:xx.xx.xx.xx,然后会弹出输入账号密码,也可以直接再浏览器中访问ftp地址。

当然,ftp工具也是可以的,

访问不到,或者登录不了ftp?

访问不到

检查ftp服务是否开启

service vsftpd status`
# 若未开启,则开启
service vsftpd start

临时关闭SELinux服务setenforce 0
临时关闭防火墙

iptables -F
# 或者
service iptables stop
# 若是防火墙禁止了vsftpd服务21、22端口
/sbin/iptables -I INPUT -p tcp --dport 21 -j ACCEPT 
#或直接
iptables -I INPUT -p tcp --dport 21 -j ACCEPT
#保存到系统设置中
/etc/rc.d/init.d/iptables save

登录不了ftp

检查是否配置了chroot_list,如果配置了,将当前登录账号添加进去,一行一个。
重新设置密码或者把用户删掉重新创建

结语:

对于ftp操作还是比较陌生的,之前的系统一般都是阿里云直接创建好的root用户,账号同时支持远程登录和文件操作。这次是个裸机,vsftp都是后安装的,创建的用户,只能上传和下载文件。当然把nologin设置去除就可以登录了。但是当我设置一个用户的主目录为系统根目录/时,我并没有/root/文件的访问权限,ftp功能也受到了限制。幸好试了一下root用户,在安装了vsftp后可以直接ssh远程登录和ftp上传下载。

转自CentOS6.8 安装FTP及添加用户 - afee666 - 博客园