准备工作:
1、安装服务软件包:yum install vsftpd –y , rpm -qa | grep vsftpd 查看系统是否安装了ftp, rpm -e vsftpd 即可卸载ftp
2、启动systemctl start vsftpd ;
开机自动启动:systemctl enable vsftpd
3、查看端口是否占用: netstat -nltp | grep 21
Centos 7搭建本地ftp服务器
1. 创建ftp服务器的主要过程
2 . ftp 服务相关主要目录文件介绍
vsftpd 的配置目录为 /etc/vsftpd,包含下列的配置文件:
vsftpd.conf 为主要配置文件(全局变量)
ftpusers 配置禁止访问 FTP 服务器的用户列表,里面存放禁止登陆的账号
user_list 配置用户访问控制,里面存放允许登陆的账号,一行一个账号名。
/etc/vsftpd /vuser.list #存放虚拟用户名和密码(单行用户名,双行密码),明文,最后删除
/etc/vsftpd/vuser.db #虚拟库(认证)文件,哈希vuser.list后生成的加密文件
/etc/vsftpd/vsftpd_user_conf #虚拟用户配置文件目录,可针对具体用户配置相关ftp权限(局部变量)
/etc/vsftpd/vsftpd_user_conf/iscs #虚拟用户配置文件(权限)
/etc/pam.d/vsftpd.vu 建立用于支持虚拟用户的PAM文件。
---------------------
ftp服务器搭建过程
1)创建操作系统用户/设置禁止登陆系统
useradd -d /home/ftp -s/sbin/nologin vftp (vsftpd配置文件配置指定该操作系统用户
2)建立虚拟用户
2.1: /etc/vsftpd /vuser.list #存放虚拟用户名和密码
2.2: 生成虚虚拟库认证文件: db_load -T -t hash -f /etc/vsftpd /vuser.list /etc/vsftpd/vuser.db
只对root读写:chmod 600 /etc/vsftpd/vuser.db
2.3: 配置PAM文件,路径/etc/pam.d/ (备注pam_userdb.so 的目录在 /usr/lib64/security/pam_userdb.so)
2.4: /etc/vsftpd增加虚拟用户配置文件: mkdir /etc/vsftpd/vsftpd_user_conf
增加虚拟用户配置文件,与虚拟用户同名: vi /etc/vsftpd/vsftpd_user_conf/iscs
2.4: 修改配置文件vsftpd.conf
#浏览FTP目录和下载 anon_world_readable_only=NO
#允许上传 anon_upload_enable=YES
#允许建立和删除目录 anon_mkdir_write_enable=YES
#允许改名和删除文件 anon_other_write_enable=YES
#指定虚拟用户在系统用户下面的路径,限制虚拟用户的家目录,虚拟用户登录后的主目录。
local_root=/home/ftpuser
6、编辑 /etc/vsftpd/vsftpd.conf
#不允许匿名登录(默认YES)
anonymous_enable=NO
#允许本地登录,可以确保任何非匿名用户可以登录工作,包括虚拟用户(默认NO) local_enable=YES
#启用任何形式 FTP 写入命令(默认NO)
write_enable=YES
#本地用户创建文件的默认权限(默认077)
local_umask=022
#匿名用户在特定环境下允许上传文件。为了让它生效,选项write_enable必须激活(write_enable是前提), 匿名ftp用户必须要求上传位置的写的权限。这个设置也要求虚拟用户具有上传功能, 在默认情况,虚拟用户被当做匿名用户对待(最大限制)权限。(默认NO) When SELinux is enforcing check for SE bool allow_ftpd_anon_write, allow_ftpd_full_access 。
#anon_upload_enable=YES (可以在用户的局部变量内定义,不必在全局变量内)
#匿名 FTP 用户能够创建新目录(默认NO)
#anon_mkdir_write_enable=YES
#FTP 用户但第一次进入一个新的目录将会展示消息。在默认情况下,目录扫描.message文件。但是可以通过message_file重写文件的路径(默认NO)
dirmessage_enable=YES
#录上传下载日志,默认放置到/var/log/vsftpd.log。通过设置属性 vsftp_log_file 重写(默认NO)
xferlog_enable=YES
#确保 PORT 传输连接来自端口20(默认NO)
connect_from_port_20=YES
#可以安排上传的匿名文件由其他用户拥有,chown_username进行设置(默认NO) #chown_uploads=YES
#chown_username=whoever
#日志文件位置,可以覆盖
xferlog_file=/var/log/xferlog
#传输日志文件的写的格式是标准的xferlog格式(默认NO)
xferlog_std_format=YES
#超时设置,客户端两个命令之间的最大时间(默认300秒)
idle_session_timeout=600
#数据传输过程中暂停/延迟最长时间超时(默认300秒)
data_connection_timeout=120
#定义一个唯一的用户,ftp服务器可以将其用作完全隔离且无特权的用户 #nopriv_user=ftpsecure
#服务器将识别异步ABOR请求。不推荐用于安全性(代码非常重要)。但是,不启用它可能会混淆较旧的FTP客户端(默认NO)
#async_abor_enable=YES
#ASCII模式数据传输数据上传(默认NO)
#ascii_upload_enable=YES
#ASCII模式数据传输数据下载(默认NO)
#ascii_download_enable=YES
#可自定义登录欢迎语
#ftpd_banner=Welcome to blah FTP service.
#指定不允许的匿名电子邮件地址的文件。显然对于打击某些DoS攻击非常有用(默认NO)
#deny_email_enable=YES
#可自定义匿名电子邮件地址
#banned_email_file=/etc/vsftpd/banned_emails
#登录之后本地用户(默认)会被限制到其根目录下(默认NO)
chroot_local_user=YES
#提供一个本地用户列表,然后改变他们根目录的位置(登录进来的时候的目录)(默认NO)
#chroot_list_enable=YES
#可自定义本地用户列表位置
#chroot_list_file=/etc/vsftpd/chroot_list
#允许用户使用"ls -R"命令,这个有个很小的风险。因为一个ls -R如果是在大型站点将会消耗大量资源(默认NO)
#ls_recurse_enable=YES
#vsftpd将以独立模式运行并侦听IPv4套接字,与 listen_ipv6 互斥(默认YES) listen=NO
#监听IPv6套接字,与 listen 互斥(默认NO)
listen_ipv6=YES
pam_service_name=vsftpd.vu
userlist_enable=YES
tcp_wrappers=YES
#本地用户登录目录
local_root=/home
#匿名用户登录目录
anon_root=/home/ftpuser
#解决异常 500 OOPS: vsftpd: refusing to run with writable root inside chroot() allow_writeable_chroot=YES
#开启虚拟用户
guest_enable=YES
#虚拟用户映射本地用户
guest_username=ftpuser
#虚拟账户配置位置
user_config_dir=/etc/vsftpd/vsftpd_user_conf
#随机端口
pasv_min_port=30000
pasv_max_port=30100
#与本地时间一致 use_localtime=YES
7、重启FTP服务systemctl restart vsftpd
关于ftp所有配置项的详细解释
-----关于匿名用户:
anonymous_enable=YES:是否允许匿名访问;
anon_umask=022:设置匿名用户所上传文件的默认权限掩码值(反掩码);
anon_root=/var/ftp:设置匿名用户的FTP根目录;
anon_upload_enable=YES;是否允许匿名用户上传文件;
anon_mkdir_write_enable=YES:是否允许匿名用户由创建目录的写入权限;
anon_other_write_enable=YES:是否允许匿名用户有其他写入权限,如对文件改名、覆盖及删除文件等;
-----关于本地用户:
local_enable=YES:是否允许本地用户访问;
local_umask=022:设置本地用户所上传文件的默认权限掩码值(反掩码);
local_root=/var/ftp:设置本地用户的FTP根目录(默认为用户的宿主目录);
chroot_local_user=YES:是否将FTP本地用户禁锢在宿主目录中;
allow_writeable_chroot=YES:允许被限制用户的主目录具有写权限;
local_max_rate=0:限制本地用户的最大传输速率(0为无限制),单位为字节/秒(B/s)
-----关于虚拟用户的配置项:
guest_username=test:指定映射的系统用户名称;
guest_enable=YES:是否启用虚拟用户;
allow_writeable_chroot=允许被限制用户的主目录具有写权限(此项必须写入,否则可能会报错)
anon_world_readable_only=NO:允许用户下载目录内容
anon_other_write_enable=YES:允许匿名用户有其他写入权限,如重命名、覆盖及删除文件等;
user_config_dir=/etc/vsftpd/vusers_dir:指定虚拟用户独立的配置文件目录;
-----关于全局配置:
listen=NO: 是否以独立运行的方式监听服务;
listen_address=0.0.0.0:设置监听f t p服务的ip地址;
listen_port=21:设置监听ftp服务的端口号;
write_enable=YES:启用任何形式的写入权限,(如上传、删除文件等)都需要开启此项;
download_enable=YES:是否允许下载文件(建立仅限于浏览、上传的FTP服务器时,可将此项设置为“NO”);
dirmessage_enable=YES:用户切换进入目录时显示 “.message”文件(如果已存在)的内容;
xferlog_enable=YES:启用xferlog日志,默认记录到 /var/log/xferlog;
xferlog_std_format=YES:启用标准的xferlog日志格式,若禁用此项,将使用vsftpd自己的日志格式;
connect_from_port_20=YES:允许服务器主动模式(从20端口建立数据连接);
pasv_enable=NO:禁止被动模式连接;默认允许被动模式连接;
pasv_max_port=24600:设置用于被动模式的服务器最大端口号;
pasv_min_port=24500:设置用于被动模式的服务器最大端口号;
pam_service_name=vsftpd.vu:设置用于用户认证的PAM文件位置(/etc/pam.d/目录中对应的文件名);
userlist_enable=YES:是否启用userl_ist用户列表文件;
userlist_deny=YES:是否禁用user_list列表文件中的用户账号;
max_clients=0:最多允许多少个客户端同时连接(0为无限制);
max_per_ip=0:对来自同一个ip地址的客户端,最多允许多少个并发连接(0为无限制);
tcp_wrappers=YES:是否启用tcp_wrappers主机访问控制;