部署 FTP 服务器 FTP ( 文件传输协议 ) 是 INTERNET 上仍常用的最老的网络协议 之一 。 FTP 服务器包的名称为 VSFTPD , 它代表 Very Secure File TransferProtocol Damon 服务器名称也叫做vsftpd 默认配置文件让 ANONYMOUS 用户只能下载位于 CHROOT 目 录中的内容。 /var/ftp/ 这意味着远程 FTP 客户端能以用户 anonymous 或 ftp 身份连接到服务器 ( 无需密码 ), 并从 ftp 服务器上的 /var/ftp/目录下载文件 ( 其本地 ftp 用户可以读取这 些文件 )
服务对客户有意义,只对客户有意义 工具对自己有影响,对别人没有影响 vsftpd,服务器开,fltp只是工具,下载了就行。
//此时的显示就是登陆成功,默认在/var/ftp目录下
一般火墙都是要开开的,比如要保证虚拟机的上网功能,不能因为单独的某个服务关闭火墙。 那么在这个时候,我们只需要开启防火墙策略,添加ftp到防火墙策略即可。
首先,以图形方式添加。 //点击reload重启防火墙即可生效
然后以命令方式设定 firewall-cmd –permanent –add-service=ftp
用firewall-cmd –list-all 查看火墙策略信息
默认配置为匿名 FTP 服务器 , 仅允许匿名客户端 下载 , 并且禁用所有本地用户 , 禁止上传 vsftpd 配置文件 : /etc/vsftpd/vsftpd.conf 默认的发布位置是 /var/ftp/ 配置修改后 , 需重新启动服务
三个基本的vsftpd服务权限: anonymous_enable=YES ##匿名其他人 local_enable=NO ##本地用户 write_enable=NO ##用户的w权限
//如图即为将所有权限都禁用了,即所有人都登陆不了
通过 man 5 vsftpd.conf 可以查看关于vsftpd服务配置参数的全部信息
在参数配置之前 首先 vim /etc/sysconf/selinux //将原本的enforcing关闭
原因: 文件: selinux是 内核的插件,全称内核级加强型火墙 能配对的才能访问 功能: 不安全的程序会禁止掉 管理员自己需要打开 特定程序只能访问特定程序的标签 不同目录标签不同 还会影响功能 setenforce 0 警告模式,(permissive) 1 强制模式(enforcing) getenforce 查看模式
首先说明几个常见的问题:
1)登陆错误信息提示:
530:认证失败 550:禁止你的写,没有权限 500:进入权力过大,需要更改进入目录的权限 553:权限问题2)每次改完重启vsftpd服务才能生效 3)lftp -u username ip 以谁登陆 4)文件中yes,no,一定是大写,这是文件规定的
注意,默认下可以上传的目录只能是pub目录下
匿名用户家目录的修改 anon_root=/directory 家目录更改后如果发现上传不了,显示报错信息是500那么可以试:添加配置信息:allow_writeable_chroot=YES //匿名用户上传文件默认权限修改 anon_umask=xxx //匿名用户建立目录 anon_mkdir_write_enable=YES / NO //匿名用户下载 anon_world_readable_only=YES / NO //设定参数值为NO表示匿名用户可以下载 get filename // 下载 //匿名用户删除 anon_other_write_enable=YES / NO将上述配置都添加上之后
测试:
//匿名用户使用的用户身份修改 chown_upload=YES //允许上传 chown_username=student //更改用户的身份为student用户 chown_upload_mode=0644 //下载文件的权限设定 //注意: umask与用户不能同时改,要改,用"chown_upload_mask=0644" //最大上传速率 anon_max_rate=102400 //单位是字节 最大链接数,即最大用户量 max_clients=2 在左边的一个匿名用户退出之后 //刚才被拒绝的用户就可以访问了man 5 vsftpd.conf中的详细说明 :
注意!!!以本地用户身份登陆时需要输入密码,但是,不管输入的密码对还是错,都进入,不过错误的密码进入后没有任何权力,命令也没有
1)创建虚拟帐号身份 vim /etc/vsftp/redhat ##文件名任意,可以填写多行,但是每行不能有空格
db_load -T -t hash -f /etc/vsftpd/lredhat /etc/vsftpd/lredhat.db
T :要转换 t : 转换的格式 hash : 哈希加密 f : 目的地vim /etc/pam.d/redhat ##文件名称任意 //required 必须符合我的规定才能通过本次验证,account 用户验证,auth 密码认证
vim /etc/vsftpd/vsftpd.conf ##配置vsftpd服务参数 pam_service_name=redhat ##在/etc/pam.d/中设置的文件名(redhat),表示进入时读的是redhat这个用户目录 //虚拟帐号的建立一定在/etc/vsftpd/下创建,db文件也要 guest_enable=YES guest_username=ftp ##指定进入的是ftp服务的目录,也可以写别的,添加u-w是保护用户安全3)家目录的设定
vim /etc/vsftpd/vsftpd.conf local_root=/ftpuserhome/ \$USER user_sub_token=$USER mkdir -p /ftpuserhome/ftpuser{1..3}/pub chgrp ftp /ftpuserhome2)虚拟帐号的服务配置
vim /etc/vsftpd/vstpd.conf user_config_dir=/etc/vsftpd/vuserconf //这个文件名字随意,但是要mkdir它,然后在里面写的文件文件名是用户名,然后这个文件里面写的就是权限 //总开关vsftpd.conf里面的可以都关闭,然后单独在之前创建的文件夹里面的文件中修改添加权限 mkdir -p /etc/vsftpd/vuserconf/user1 vim /etc/vsftpd/userconf/user1 //这里创建的是以你设置好的虚拟用户为名的文件,在其中填写vsftpd中对应的配置权限信息 //在此外文件中设定配置文件中的所有参数,此文件的优先级高在主配置中
在user1单独的配置中 //因为添加了如图权限,所以之后就可以上传,并且添加文件了,但注意,这只是user1的权限,其他的还要自行添加