Centos7 搭建vsftpd
1、安装vsftpd
在线安装:yum -y install vsftpd
离线安装:下载vsftp的rpm包,通过rpm -ivh xxx.rpm安装
2、修改/etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/xferlog
userlist_enable=YES
userlist_deny=NO
tcp_wrappers=YES
max_clients=300
max_per_ip=10
chroot_local_user=YES //去掉# 设置所有用户都不能离开家目录
chroot_list_enable=YES //去掉# 表示开启用户是否能登陆ftp限制
chroot_list_file=/etc/vsftpd/chroot_list //去掉# 特权用户,不受chroot_local_user=YES限制的用户
allow_writeable_chroot=YES //添加allow_writeable_chroot=YES 表示允许用户写入
cmds_allowed=ABOR,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RETR,RNFR,RNTO,SIZE,STOR,TYPE,USER,REST,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST,FEAT
//cmds_allowed控制用户的操作,只能上传,下载,重命名,不能删除文件
3、在/etc/vsftpd/chroot_list中删除需要禁止访问上级目录的用户
4、将/etc/vsftpd/user_list 文件中的用户全删除掉,将使用的ftp账号写入user_list文件中,例如 jszc
5、在/vat/ftp/ 创建目录,权限是775,属组是ftp
mkdir /var/ftp/vsftpd
chown -R root:ftp /var/ftp/vsftpd/
chmod 775 /var/ftp/vsftpd
6、创建jszc用户,并修改密码
useradd jszc -s /sbin/nologin -g ftp -d /var/ftp/vsftpd
echo jszc.com |passwd --stdin jszc
7、测试上传、下载、删除文件。此时文件均在用户家目录下
8、systemctl restart vsftpd 重启vsftp即可
9、后续创建新用户,均采用(6、7、8)步骤,就可以共用一个ftp主目录
注:
1、开机自启动systemctl enable vsftpd
2、selinux设置:disable
3、防火墙开启时,需放行21端口
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --reload
-----------------------------------------------------------------------------
>>>查看防火墙状态
systemctl status firewalld
>>> 开启端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
命令含义:
--zone #作用域
--add-port=80/tcp #添加端口,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
>>> 重启防火墙
firewall-cmd --reload
systemctl stop firewalld.service #停止firewall
systemctl disable firewalld.service #禁止firewall开机启动
常用命令介绍
firewall-cmd --state ##查看防火墙状态,是否是running
firewall-cmd --reload ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones ##列出支持的zone
firewall-cmd --get-services ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent ##永久添加80端口
iptables -L -n ##查看规则
man firewall-cmd ##查看帮助
------------------------------------------------------------------------------
用户突然想新增目录和用户
新增FTP目录:mkdir /var/ftp/vsftpd/3PAR
修改FTP属组:chown -R root:ftp /var/ftp/vsftpd/3PAR
修改FTP权限:chmod -R 775 /var/ftp/vsftpd/3PAR
新增用户:useradd jszc -s /sbin/nologin -g ftp -d /var/ftp/vsftpd
添加用户密码:echo jszc.com |passwd --stdin jszc
更改用户家目录:vi /etc/passwd
添加新用户到vsftpd的用户list中:vi /etc/vsftpd/user_list
重启vsftpd服务:systemctl restart vsftpd
vsftp 配置文件翻译
anonymous_enable=YES 是否允许匿名登陆
local_enable=YES 允许本地登陆
write_enable=YES 启用任何形式的ftp 写入命令
local_umask=022 FTP上本本地的文件权限,默认是077,不过vsftp安装后的配置文件里默认是022
anon_upload_enable=YES 允许匿名ftp 用户上传文件
anon_mkdir_write_enable=YES 允许匿名用户 创建新的目录
dirmessage_enable=YES 激活目录消息,向远程用户发送消息,进入某个目录
xferlog_enable=YES 激活上传/下载 日志记录
connect_from_port_20=YES 确保RORT传输连接来自端口 20
chown_uploads=YES
chown_username=whoever
设置 匿名用户上传文件的默认用户,不推荐使用root
xferlog_file=/var/log/xferlog 日志文件路径
xferlog_std_format=YES 日志文件使用标准ftpd xferlog格式的日志文件 ,默认位置 /var/log/xferlog
idle_session_timeout=600 更改超时空闲会话的默认值
data_connection_timeout=120 超时数据连接的默认值
nopriv_user=ftpsecure 创建ftp服务器 独立的用户
async_abor_enable=YES 启用 异步 ABOR 请求
ascii_upload_enable=YES 允许ASCII模式上传文件
ascii_download_enable=YES 允许ASCII模式下载文件
ftpd_banner=Welcome to blah FTP service. 自定义登陆标题字符串
deny_email_enable=YES 指定不允许匿名登陆电子邮件
banned_email_file=/etc/vsftpd/banned_emails 默认路径
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
指定 chroot 参数
CHROOT就是Change Root,也就是改变程序执行时所参考的根目录位置。CHROOT可以增进系统的安全性,限制使用者能做的事
ls_recurse_enable=YES 启用 ls –R 选项
listen=NO 启用 listen 指令,vsftp 以独立模式运行侦听ipv4 套接字,该指令不能同时使用 with listen_inv6 指令
listen_ipv6=YES 监听ipv6
pam_service_name=vsftpd 虚拟用户使用PAM认证方式
userlist_enable=YES 只允许userlist 文件中的账户登陆
tcp_wrappers=YES 是否允许tcp_wrappers 管理
anon_other_write_enable=YES 允许匿名用户改名和删除文件
anon_world_readable_only=YES 匿名用户可以读文件 反之就是不能读
pasv_min_port=30000
pasv_max_port=35000 PASV模式下指定端口范围
用户权限严格控制请参考: