Linux安装FTP
一:客户端教程
1.直接yum 安装
yum -y install ftp
2.FTP连接刚刚装了FTP服务的另一台服务器(下面有服务端教程)。(ip自己改成自己的)
ftp 192.168.0.0
输入用户名
输入密码
登录成功
3.查看当前目录:
pwd
4.进入data目录
cd /data
5.上传文件
# 格式:put local-file [remote-file] put /mnt/a.jpg /data/this-is-ftp-test.jpg
6.Windows登录FTP
WIN+E
ftp://192.168.0.0
输入用户名和密码,就能看到刚刚上传的jpg了
7.回到刚刚的Linux,退出FTP连接
quit
8.其他命令:
#创建目录 mkdir 目录名 #删除目录 rmdir 目录名 # 删除单个文件 格式:delete remote-file delete 文件名 # 删除多个文件 格式:mdelete remote-files [ ...] mdelete 文件名 # 重命名文件 格式:rename filename newfilename rename test atest # 上传文件 格式:put local-file [remote-file] put /home/a.txt /mydata/b.txt # 下载单个文件 格式:get [remote-file] [local-file] get /mydata/a.txt /apps/b.txt #下载多个文件 # 进入指定目录 cd /usr/your/ # 格式:mget filename [filename ....] mget *.* #查询所有命令:显示FTP命令的帮助信息,cmd是命令名,如果不带参数,则显示所有FTP命令 # help[cmd]
二:服务端教程
0. yum 安装一下 vim
yum -y install vim*
1.直接yum在线安装
yum install -y vsftpd
2.查看一下FTP服务端状态
systemctl status vsftpd.service
正常,因为没启动,先去配置一下配置文件
3.FTP安装好后,配置文件在/etc/vsftpd/vsftpd.conf
,利用vim
,修改配置文件。
#打开配置文件 vim /etc/vsftpd/vsftpd.conf #显示行号 :set nu #修改配置 12 行 不允许匿名访问(不登录默认访问某目录/var/ftp),要用户名和密码 anonymous_enable=NO #修改配置83行 允许ascii文件上传 ascii_upload_enable=YES #修改配置84行 允许ascii文件下载 ascii_download_enable=YES #修改配置87行 ftpd_banner=Welcome to blah FTP service. #修改配置101,102,104行 将用户限制在为其配置的主目录 chroot_local_user=YES chroot_list_enable=YES chroot_list_file=/etc/vsftpd/chroot_list #添加下列内容到vsftpd.conf末尾 use_localtime=YES # 监听端口 listen_port=21 idle_session_timeout=300 # 设置启用虚拟用户功能 guest_enable=YES # 制定宿主用户名(我们后续需要为我们的系统增加该用户) guest_username=ftpuser # 制定虚拟用户配置文件放置文件夹(需要我们自己建立) user_config_dir=/etc/vsftpd/vuser_conf # 允许写 allow_writeable_chroot=YES data_connection_timeout=1 virtual_use_local_privs=YES pasv_min_port=40000 pasv_max_port=40010 accept_timeout=5 connect_timeout=1 # wq!保存
4.ftp的账号、组、目录配置
# 新建一个ftpuser组 groupadd ftpuser # 新建一个ftpuser账号,并且该账号不需要登录服务器,设定家目录在 /home/vsftpd useradd -g ftpuser -M -d /home/vsftpd -s /sbin/nologin ftpuser # 设置用户 ftpuser 的密码 passwd ftpuser # 把 /home/vsftpd 的所有权给ftpuser.root chown -R ftpuser:ftpuser /home/vsftpd # 在家目录下先创建两个文件夹,作为后续ftp账号的默认目录 mkdir -p /home/vsftpd/ftp-user1 /home/vsftpd/ftp-user2 # 设置目录权限为755 chmod 755 -R /home/vsftpd
不能太简单,至少8位,我个人的密码:mima2468
目录不存在,就创建一个目录,我懒得再去改博客上面的代码了
5.FTP的登录用户和密码设置
# 进入/etc/vsftpd/目录 cd /etc/vsftpd/ # 创建用户密码信息文件 vim vuser_passwd #编辑如下内容,创建虚拟账户信息(密码123456) ftp-user1 123456 ftp-user2 123456 # wq!保存退出 # 生成虚拟用户数据文件 db_load -T -t hash -f /etc/vsftpd/vuser_passwd /etc/vsftpd/vuser_passwd.db # 将该目录的权限改成600 chmod 600 /etc/vsftpd/vuser_passwd.db
6.编辑pam认证文件
# 查看系统位数 getconf LONG_BIT # 备份pam认证文件 mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak # 新建pam认证文件 vim /etc/pam.d/vsftpd i # 根据自己的操作系统选2行,不要全部都填写哟 # 注:db=/etc/vsftpd/vuser_passwd 中的vuser_passwd 是你生成的虚拟用户的db文件,这里不要加扩展名。 # 也就是上面第五步生成的虚拟用户数据文件 # 系统为32位: auth required pam_userdb.so db=/etc/vsftpd/vuser_passwd account required pam_userdb.so db=/etc/vsftpd/vuser_passwd # 系统为64位: auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd # ESC:wq 保存内容
7.创建虚拟用户配置目录
#创建上述配置文件中配置的虚拟用户文件夹,一定要对应第三步中vsftpd.conf配置文件的user_config_dir=/etc/vsftpd/vuser_conf mkdir -p /etc/vsftpd/vuser_conf #切换进入 /etc/vsftpd/vuser_conf cd /etc/vsftpd/vuser_conf #创建虚拟用户配置文件,文件名称要与虚拟用户名称相同,这里我们配置两个虚拟用户就创建两个配置文件 touch ftp-user1 ftp-user2 #编辑ftp-user1 vim ftp-user1 i #写入以下内容 local_root=/home/vsftpd/ftp-user1 write_enable=YES anon_umask=022 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES # ESC:wq 保存退出 #编辑ftp-user2 vim ftp-user2 i #写入以下内容 local_root=/home/vsftpd/ftp-user2 write_enable=YES anon_umask=022 anon_world_readable_only=NO anon_upload_enable=YES anon_mkdir_write_enable=YES anon_other_write_enable=YES # ESC:wq 保存退出
8.创建chroot_list
# 进入目录/etc/vsftpd cd /etc/vsftpd #创建使当前配置的虚拟用户允许访问的文件列表 vim chroot_list #写入虚拟用户名 ftp-user1 ftp-user2 # ESC:wq 保存退出
9.防火墙,SELinux等配置
一方案:简单型(外网生产环境不推荐) #打开SELINUX配置文件 vim /etc/selinux/config #修改配置参数 #注释 SELINUX=enforcing #增加 SELINUX=disabled #ESC:wq 保存完,需要重启! systemctl stop firewalld.service 二方案:安全型针对性的关闭防火墙和SELinux对FTP的限制. # SELINUX不对vsftp不做任何限制 setsebool -P ftpd_full_access on # 防火墙设置 IPtables 的设置方式: vi /etc/sysconfig/iptables #编辑iptables文件,添加如下内容,开启21端口 -A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT -A INPUT -m state --state NEW -m tcp -p tcp --dport 40000:40010 -j ACCEPT #firewall 的设置方式,以下指令 firewall-cmd --zone=public --add-service=ftp --permanent firewall-cmd --zone=public --add-port=21/tcp --permanent firewall-cmd --zone=public --add-port=40000-40010/tcp --permanent
10.查看FTP状态、重启、停止、设置开机启动
#启动
systemctl start vsftpd.service
#重启
systemctl restart vsftpd.service
#停止
systemctl stop vsftpd.service
#查看状态
systemctl status vsftpd.service
#设置开机启动
systemctl enable vsftpd.service
11.测试FTP连接(这次用上面(linux命令和windows资源管理器)没用过的方法试一下,用windows命令行连接)
#查看ftp的进程和端口,发现正在以PID=28501的进程,port=21在运行着 netstat -anp | grep ftp
这次我们在换个连接FTP的方法看看,windows打开cmd
先telnet一下看ip和端口通不通:
telnet 192.168.47.133 21
Welcome 没毛病
再换个cmd窗口,FTP连接一下:
ftp 192.168.47.133
自己输入上面设置的用户名和密码
Login successful. 没毛病
Tips:要是觉得上面三种方法都是很难用的话,那就直接使用第三方可视化工具。
i:FileZilla (所有平台)
ii:Xftp(windows)(我自己用的这个):https://shaun.lanzoum.com/iJiNF0v4qjcd