FTP两种传输方式:
FTP基于C/S模式,FTP客户端与服务器端有两种传输模式,分别是FTP主动模式、这两种模式均是以FTP服务器端为参照来说的。
FTP主动模式: 客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,并发送FTP命令“port N+1”到FTP服务器,FTP服务器以数据端口(20)连接到客户端指定的数据端口(N+1)。
FTP被动模式: 客户端从一个任意的端口N(N>1024)连接到FTP服务器的port 21命令端口,客户端开始监听端口N+1,客户端提交 PASV命令,服务器会开启一个任意的端口(P >1024),并发送PORT P命令给客户端。客户端发起从本地端口N+1到服务器的端口P的连接用来传送数据。
FTP安装步骤
1.安装vsftpd 和 ftp
yum -y install vsftpd
yum install -y ftp
2.关闭防火墙
firewalld--cmd --state #查看防火墙的状态
setenforce 0
systemctl stop firewalld
3.配置文件中的配置项 vim /etc/vsftpd/vsftpd.conf
1)、匿名访问
首先需要开启匿名服务,找到以下配置改为yes
anonymous_enable=YES
#匿名访问是否开启,这个设定值必须要为YES时,在/etc/passwd内的帐号才能以实体用户的方式登入我们的vsftpd主机
2)、系统用户访问
关闭匿名服务将改配置改为NO
anonymous_enable=NO
2.1)、创建系统用户
useradd test
echo test:"123456" | chpasswd
3)、虚拟用户登录 ,需要更改的配置
#在配置中需要查看更改的配置
pam_service_name=vsftpd # PAM将根据/etc/pam.d/vsftpd进行认证 ,主要的
userlist_enable=YES
tcp_wrappers=YES //基于主机的访问控制
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_local_user=YES
#需要自己手动添加的配置
guest_enable=YES #设定启用虚拟用户功能
guest_username=ftpuser # 指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了
user_config_dir=/etc/vsftpd/vuser_conf
allow_writeable_chroot=YES
3.1)、编辑认证文件 vim /etc/pam.d/vsftpd 最后没有 .db后缀
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
3.2)、编写账户和密码 vim /etc/vsftpd/vuser_passwd.txt
奇数行:用户名
偶数行:密码
zhangsan
123456
3.3)、将上一步的.txt文件转换为.db文件(不是简单的去除后缀名)
cd /etc/vsftpd/
db_load -T -t hash -f vuser_passwd.txt vuser_passwd.db
3.4)、在vsftpd创建vuser_passwd.txt中的对应的用户文件
[root@Cetonts vsftpd] mkdir vuser_conf
[root@Cetonts vsftpd] vim vuser_conf/lisi
在该文件中写入
local_root=/var/www/lisinet #指定目录
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_mkdir_write_enable=YES #是否有创建文件的权限
anon_other_write_enable=YES #其他人是否可以读写
4.访问
windows直接在文件输入框中输入
ftp://192.168.XX.XX
linux匿名访问时, 有账户和密码,账户随便,密码空
ftp 192.168.X.X
ls #查看文件
get 文件名称 #从文件服务器下载到本地linux
补充解释权限
virtual_use_local_privs=NO #匿名用户不具有本地用户的权限,看不到目录中的文件,即不可浏览。
anon_world_readable_only=NO #匿名用户可以浏览FTP目录和下载文件
anon_upload_enable=YES #允许匿名用户上传文件
anon_mkdir_write_enable=YES #允许匿名用户建立和删除目录
anon_other_write_enable=YES #允许匿名用户改名和删除文件
enable_write=YES #拥有写的权限。
允许写入
write_enable=YES
允许浏览FTP目录和下载
anon_world_readable_only=NO
允许虚拟用户上传文件
anon_upload_enable=YES
允许虚拟用户创建目录
anon_mkdir_write_enable=YES
允许虚拟用户执行其他操作(如改名、删除)
anon_other_write_enable=YES
上传文件的掩码,如022时,上传目录权限为755,文件权限为644
anon_umask=022
指定虚拟用户的虚拟目录(虚拟用户登录后的主目录)
local_root=/ftproot/admin/
上述的参数并不是独立的,而是相互作用的。权限的搭配很重要
比如一个用户虚拟用户想让它只有上传文件的权限理论上如下的配置就可以实现了
virtual_use_local_privs=NO
anon_world_readable_only=NO
anon_upload_enable=YES
但是实际情况你会发现你不能上传文件,上传时出现530 permission denied
这是因为没有写的权限,所以还需要加上一句enable_write=YES
例子2
建立一个用户,可以上传文件,可以创建文件夹,但是不能重命名已经上传了的文件和文件夹,不能删除文件
如下配置
virtual_use_local_privs=NO #不具有可登录用户的权限
anon_world_readable_only=NO #可浏览目录
write_enable=YES #
anon_upload_enable=YES #要同时具备写和匿名上传权限,才能上传。
anon_mkdir_write_enable=YES #可以新建文件夹,但不能修改文件名,不能删除文
ftp - 实练
https://blog.csdn.net/qq_43661408/article/details/106142704