FTP两种模式:
主动模式服务器向客户端敲门,然后客户端开门
被动模式客户端向服务器敲门,然后服务器开门
传输模式:可以是文本模式,也可以是二进制模式,二进制模式更适合传输图片等非文本字符的文件
匿名用户:不需要输入用户(多人共享一个)
本地用户:本地的Linux登陆用户(每个共享用户的家目录)
虚拟用户:不同于本地用户,可以创建一个匿名用户的FTP,跟Linux没有关系
FTP匿名用户服务搭建
首先查看是否有vsftpd命令,rpm -qa | grep vsftpd 如若没有则需要yum安装: yum -y install vsftpd
yum装完vsftpd自然就有/var/ftp/pub的共享目录
属主是root别的用户没有办法读写,所以需要把pub属主换成ftp,ftp程序用户系统默认就有,不需要自行创建。
为ftp目录下pub目录修改属主:
chown ftp /var/ftp/pub
安装完vsftpd自然就有/etc/vsftpd/vsftpd.conf配置文件,接下来就有修改配置文件了,为了安全先备份一份.
cp /etc/vsftpd/vsftpd.conf{,.bak}
修改配置文件:
vim /etc/vsftpd/vsftpd.conf
27行 #anon_upload_enable=YES 中 #去掉
31行 #anon_mkdir_write_enable=YES 中#去掉
sed -i 's/#anon_mkdir_write_enable=YES/anon_mkdir_write_enable=YES/g' vsftpd.conf
手动添加一行 anon_umask=022
服务端ftp配置完成后启动ftp服务,启动完成后检查一下是否成功
[root@LW_ftp_server vsftpd]# service vsftpd start
给服务端,pub/ 共享目录下创建一个文件,(随意创建):
客户端只需要安装ftp命令就可以:
[root@LW_ftp_client ~]# yum -y install ftp
ftp客户端登陆服务端,匿名用户名就是ftp,没有密码为空,所以直接回车:
登录客户端,查看是否下载成功:
在ftp里put代表上传命令,也只能上传客户端当前目录里的文件,不能是绝对路径上传
有问题此处,暂时跳过,解决。。。。。。
FTP本地用户服务搭建:
首先先将配置完成后的匿名用户备份,在把初始的配置文件复制回来
[root@LW_ftp_server vsftpd]# cp vsftpd.conf.bak vsftpd.conf
sed -i 's/#chroot_local_user=YES/chroot_local_user=YES/g' vsftpd.conf
因为是ftp本地用户服务所以需要先创建一个普通用户和密码用客户端ftp登陆服务端输入yunjisuan账号和密码
FTP客户端连接服务器端:ftp 192.168.200.150
[root@LW_ftp_client ~]# ftp 192.168.200.150
Connected to 192.168.200.150 (192.168.200.150).
220 (vsFTPd 2.2.2)
Name (192.168.200.150:root): weiwei
331 Please specify the password.
Password:
500 OOPS: cannot change directory:/home/weiwei
Login failed.
连接失败:解决方案如下------(百度)
FTP服务端输入:
[root@LW_ftp_server liu]# setsebool ftp_home_dir 1
[root@LW_ftp_server liu]# getsebool -a | grep ftp
[root@LW_ftp_server liu]# service vsftpd restart
FTP客户端重新登录:
FTP客户端再次连接服务器端:ftp 192.168.200.150
客户端测试:注意客户端共享的目录是 服务端 程序用户的家目录:/home/weiwei
FTP虚拟用户服务搭建
首先需要把ftp本地用户服务备份,在把源配置文件复制回来
[root@LW_ftp_server weiwei]# cd /etc/vsftpd/
[root@LW_ftp_server vsftpd]# mv vsftpd.conf vsftpd.conf.local
[root@LW_ftp_server vsftpd]# cp vsftpd.conf.bak vsftpd.conf
先查看系统是否有db_load命令,没有则需要安装ftp虚拟用户,首先需要在/etc/vsftpd下创建密码文件:
[root@LW_ftp_server weiwei]# cd /etc/vsftpd/
[root@LW_ftp_server vsftpd]# vim vusers.list
创建完密码文件需要弄db_load命令转换成数据文件,-T允许非程序使用该数据库 -t指定算法 hash -f代表加密,因为是密码,为了增加安全性需要给chmod 600 vusers.db权限
[root@LW_ftp_server vsftpd]# db_load -T -t hash -f vusers.list vusers.db
[root@LW_ftp_server vsftpd]# chmod 600 vusers.db
首先创建虚拟映射账号,因为指定了家目录所以给手动创建一个家目录并赋上755权限
[root@LW_ftp_server vsftpd]# useradd -d /var/ftproot -s /sbin/nologin virtual
[root@LW_ftp_server vsftpd]# mkdir -p /var/ftproot
[root@LW_ftp_server vsftpd]# chmod 755 /var/ftproot
[root@LW_ftp_server vsftpd]# ll -d /var/ftproot
drwxr-xr-x. 2 virtual virtual 4096 Nov 25 00:17 /var/ftproot
手动建立此pam认证文件如下
[root@LW_ftp_server vsftpd]# cd /etc/pam.d/
[root@LW_ftp_server pam.d]# vim /etc/pam.d/vsftpd.vu
auth required pam_userdb.so db=/etc/vsftpd/vusers
account required pam_userdb.so db=/etc/vsftpd/vusers
配置完重启服务,就可以用客户端进行ftp登陆,因为是指定创建的家目录,所以需要去/var/ftproot创建点文件
重新启动服务:但是报错了
错误之处以及解决如下:
空格删除后,重启: