一、安装FTP服务端
yum install -y vsftpd
安装ftp客户端(可省略)
yum install -y ftp
二、FTP服务配置
1、进入FTP配置文件目录
cd /etc/vsftpd
2、备份配置文件vsftpd.conf和去掉所有注释
mv vsftpd.conf vsftpd.conf.bak grep -v "#" vsftpd.conf.bak > vsftpd.conf
3、编辑配置文件
vi vsftpd.conf
修改的内容
#修改 #是否支持匿名用户,默认YES,改成NO表示需要用户名密码登录不允许匿名登录 anonymous_enable=NO #匿名上传。首先,文件系统上用户的家目录,要具备写权限。其次,ftp服务器要开启允许匿名上传的配置 anon_upload_enable=YES #以下取消注释 #允许匿名用户上传,建立目录 anon_mkdir_write_enable=YES #默认只能下载全部读的文件。这句话的意思是说,如果启动了这句话,则匿名用户只能下载所有用户都具备读权限的文件。如果有一个文件,有一个用户不剧本读权限,匿名用户就不能够下载。 anon_world_readable_only=YES #匿名用户能否删除和修改上传的文件 anon_other_write_enable=YES #指定匿名上传文件的umask值。umask的值可以直接影响到上传文件的权限。 anon_umask=077 #指定上传文件的默认的所有者和权限。 完成了这些指定之后,匿名用户上传的元数据就是我们指定的那些内容。 chown_uploads=YES #chown_username=wang #chown_upload_mode=0644 #所有系统用户都映射成guest用户,但是映射的guest账户,需要人为地去指定下。 #guest_enable=YES #guest_username=vsftpd #是否允许Linux用户登陆,默认是允许的,当然也可以禁止。 local_enable=YES #是否允许Linux用户上传文件,如果用户默认允许登陆的话,linux用户登陆成功之后,默认位于自己的家目录,这时是允许上传文件的。 如果将下面的这句话,改成no,则服务拒绝linux用户上传文件,即便位于自己的家目录也不可以。 #write_enable=YES #指定系统用户上传文件的默认权限 #local_umask=022 #非匿名用户登录所在目录,当使用Linux用户登陆成功之后,就不会默认在自己的家目录了。相反,会位于下面指定的目录里。 #local_root=/ftproot #禁锢所有的用户在家目录中的意思是说,用户登陆成功之后,不能够随意切换目录,只能够在自己的家目录中进行操作。 chroot_local_user=YES #ASCII码支持 async_abor_enable=YES ascii_upload_enable=YES ascii_download_enable=YES #登录提示信息 ftpd_banner=Welcome to FTP server. # 这一句话优先生效 #banner_file=/etc/vsftpd/ftpbanner.txt #设置是否使用当地时间。默认就是YES use_localtime=YES #虚拟用户建立独立的配置文件 user_config_dir=/etc/vsftpd/conf listen_port=21 virtual_use_local_privs=YES ##被动模式端口 pasv_min_port=40000 pasv_max_port=40010 # 被动模式数据连接超时时长,时间单位是秒 accept_timeout=10 #主动模式数据连接超时时长,时间单位是秒 connect_timeout=10 #数据连接无数据输超时时长,时间单位是秒 data_connection_timeout=300 # 无命令操作超时时长,时间单位是秒 idle_session_timeout=300 allow_writeable_chroot=YES
三、创建虚拟用户
创建虚拟用户,是为了避免FTP用户直接登录到服务器
1、创建虚拟用户配置文件
vi ftp_user.conf
增加内容:奇数行是账号,偶数行是密码,下面第一行是账号,第二行是密码
ftpuser
ftpuser123
2、加密虚拟用户配置文件
db_load -T -t hash -f ftp_user.conf ftp_user.db
如果没有db_load命令,需要安装:yum install db4 db4-utils
改变权限和删除未加密的配置
chmod 600 ftp_user.db rm -f ftp_user.conf
3、修改FTP的访问权限
先备份
cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
修改权限文件
vi /etc/pam.d/vsftpd
先将配置文件中原有的 auth 及 account 的所有配置行均注释掉(不注释掉虚拟用户会登录不上),添加两行信息
auth required pam_userdb.so db=/etc/vsftpd/ftp_user
account required pam_userdb.so db=/etc/vsftpd/ftp_user
4、增加虚拟用户,只能登录FTP,不能登录后台
useradd -d /home/ftpuser -s /sbin/nologin ftpuser
修改文件夹的拥有者
chown -R ftpuser:ftpuser /home/ftpuser
5、虚拟用户配置文件
创建虚拟用户配置文件目录
mkdir -p /etc/vsftpd/conf
创建虚拟用户的配置文件(ftpuser文件和刚才创建的数据库文件的用户名必须一致)
vi /etc/vsftpd/conf/ftpuser
增加的内容:
#用户的默认登陆目录。也就是FTP用户登陆成功之后的默认路径。 local_root=/home/ftpuser/ftpuser write_enable=YES anon_world_readable_only=NO #虚拟用户上传权限 anon_upload_enable=YES #虚拟用户创建文件夹 anon_mkdir_write_enable=YES ## 虚拟的其他用户对指定用户目录的写权限 anon_other_write_enable=YES
创建FTP传输目录,对应上面的 local_root 配置项
mkdir -p /home/ftpuser/ftpuser chown ftpuser:ftpuser /home/ftpuser/ftpuser chmod 775 /home/ftpuser/ftpuser
四、开放FTP端口和FTP服务
firewall-cmd --permanent --zone=public --add-service=ftp firewall-cmd --permanent --zone=public --add-port=21/tcp #被动模式的端口 firewall-cmd --permanent --zone=public --add-port=40000-40010/tcp #重新加载生效 firewall-cmd --reload firewall-cmd --list-all firewall-cmd --zone=public --list-ports
五、FTP启动和设置自动启动
#启动
systemctl start vsftpd
#设置自动启动
systemctl enable vsftpd
#查看状态
systemctl status vsftpd.service
#重启
systemctl restart vsftpd
六、FTP访问地址
ftp://192.168.10.100/
七、错误解决
1、500 OOPS: vsftpd: cannot locate user specified in 'guest_username':vsftpd
注释下面的配置 #guest_enable=YES #guest_username=vsftpd
八、其它命令
#安装filezilla yum install -y filezilla 运行filezilla filezilla & #Selinux方式:查看防火墙状态 getenforce #permissive表示:放任的;纵容的;姑息的; #临时关闭:setenforce 0 setenforce 0 ->permissive #永久关闭:vim /etc/sysconfig/selinux 将selinux=cnforcing改为selinux=disable Firewall 1.关闭防火墙:service firewalld stop 2.关闭防火墙:systemctl stop firewalld.service 3.禁止防火墙开机启动:systemctl disable firewalld.service 4,查看防火墙状态:firewall-cmd --state
(时间宝贵,分享不易,捐赠回馈,^_^)
================================
©Copyright 蕃薯耀 2022-04-19
https://www.cnblogs.com/fanshuyao/