FTP(文件传输协议)是一种用于在网络上进行文件传输的标准协议。它可以在互联网上将文件从一台计算机传输到另一台计算机,通常用于上传和下载网站内容、软件更新、备份数据等。
yum install -y vsftpd
systemctl enable vsftpd.service
systemctl start vsftpd.service
修改ftp配置
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES #允许匿名登录
no_anon_password=YES #免密码
anon_umask=022—匿名用户登录创建默认权限-22
anon_upload_enable=YES----匿名用户允许上传
anon_mkdir_write_enable=YES----匿名用户允许修改文件文件
anon_other_write_enable=YES----匿名用户其他文件权限
userlist_enable=YES #启用用户列表
userlist_deny=NO #在用户列表中的用户可以登陆ftp
添加匿名用户登陆权限
vim /etc/vsftpd/user_list #在配置文件最后加入匿名用户
anonymous
登陆测试
创建用户
[root@lxf-test- ~]#groupadd ftp
[root@lxf-test- ~]#useradd -g ftp -s /sbin/nologin ftpuser
[root@lxf-test- ~]#passwd ftpuser
运行命令后,根据命令行提示设置 ftpuser用户的密码,回显信息类似如下所示。
[root@lxf-test- ~]# useradd -g ftp -s /sbin/nologin ftpuser
[root@lxf-test- ~]# passwd ftpuser
Changing password for user ftpuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
说明:如果已创建用户,但是用户不在创建的用户组 ftp中,运行命令 usermod -g ftp 用户名 移动用户到用户组中。
[root@lxf-test- ~]#chown root:ftp /home/ftpuser
[root@lxf-test- ~]#chmod 755 /home/ftpuser
[root@lxf-test- ~]#mkdir /home/ftpuser/test
[root@lxf-test- ~]#chown -R ftpuser:ftp /home/ftpuser/test
[root@lxf-test- ~]#chmod -R 755 /home/ftpuser/test
vsftpd默认会检查用户的shell,如果用户的shell在/etc/shells没有记录,则无法登陆ftp
解决办法:在/etc/shells文件里面添加用户的shell(解释器)
[root@lxf-test- vsftpd]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/sbin/nologin
修改配置
local_enable=YES#控制是否允许本地用户登入,YES为允许本地用户登入,NO为不允许。默认值为YES。
local_root=/home/ftpuser#当本地用户登入时,将被更换到定义的目录下。默认值为各用户的家目录。
write_enable=YES/NO#是否允许登陆用户有写权限。属于全局设置,默认值为YES。
local_umask=022#地用户新增档案时的umask值。默认值为022
userlist_enable=YES #启用用户列表
userlist_deny=NO #在用户列表中的用户可以登陆ftp
添加ftpuser到user_list echo "ftpuser" > /etc/ftpuser/user_list
登陆测试
chroot_list_enable=NO #设置是否启用chroot_list_file配置项指定的用户列表文件。默认值为NO。
chroot_list_file=/etc/vsftpd.chroot_list #用于指定用户列表文件,该文件用于控制哪些用户可以切换到用户家目录的上级目录。
chroot_local_user=NO #用于指定用户列表文件中的用户是否允许切换到上级目录。默认值为NO。
主动模式
主动模式(PORT):命令连接由客户端发起,数据连接由服务端发起
命令连接:客户端通过任意大于等于1024(N端口)的端口连接到服务器的21端口,服务器响应建立连接通道
当客户端需要数据的时候,客户端通过此通道发送PORT命令发送本地ip端口信息,服务端发起连接