Linux基础知识(FTP服务)
一、 FTP的部署
-
安装vsftpd
-
安装 lftp
-
开启vsftpd服务,并设置开机自启动
-
查看火墙状态,当火墙关闭时开启火墙,并添加lftp服务到火墙白名单
-
重新加载
-
查看,ftp服务已经添加到火墙白名单中
-
使用ftp访问主机(当ls有内容显示,则代表登录成功,否则表示不成功)
-
关闭selinux
编辑getenforce 当显示Enforcing,则代表没有关闭,需要关闭
编辑selinux配置文件
将selinux的状态改为disabled
重新启动虚拟机
reboot
编辑getenforce查看
二、FTP服务的信息
- 软件安装包:vsftpd
协议接口:21/tcp
服务配置文件:/etc/vsftpd/vsftpd.conf
默认发布目录:/var/ftp - 报错id的解析:
550 服务本身功能未开启
553 本地文件系统权限过小
530 用户认证失败
500 文件系统权限过大
三、FTP命令运用
编辑/etc/vsftpd/vsftpd.conf 进行设置
在服务端新建一个用户,并设置密码
-
匿名用户
anonymous_enable=YES|NO 匿名用户是否可以登陆
编辑 vim /etc/vsftpd/vsftpd.cof
编辑结束后重新启动服务
将YES 改成NO
测试: -
本地用户
local_enable=YES|NO 本地用户是否可以登陆
测试: -
write_enable=YES|NO ftp是否对登陆用户可写
write_enable=YES 可写
若改为write_enable=NO,则不可写。
测试: -
匿名用户上传
默认情况下,匿名用户是不能上传的
编辑配置文件
修改匿名用户目录的所有组并给组添加可写的权限
测试: -
匿名用户家目录修改
anon_root=/目录
新建一个目录/off
添加anon_root=/off
测试: -
匿名用户上传文件默认权限的修改
anon_umask=xxx
测试: -
匿名用户建立目录
anon_mkdir_write_enable=YES|NO
测试: -
匿名用户下载
anon_world_readable_only=YES|NO NO表示匿名用户可以下载YES表示不可以下载
测试: -
匿名用户删除
anon_other_write_enable=YES|NO
测试: -
匿名用户使用的用户身份和权限的修改
编辑配置文件
测试: -
最大上传速率
anon_max_rate=102400
截取文件
编辑配置文件
添加(最大上传速率为102400)
测试:上传速率很慢 -
最大链接数
max_clients=2 表示最多有2个可以连接
测试: -
本地用户家目录修改
local root=/directory
测试: -
本地用户上传文件权限
local umask=xxx
测试: -
限制本地用户登陆
vim /etc/vsftpd/ftpusers 用户永久黑名单
测试:无法登录 -
特殊情况下用户白名单设定
编辑该文件
在这个文件内并且不在 /etc/vsftpd/ftpusers 文件内的用户为可登陆用户
测试:
四、FTP虚拟用户的管理
一、ftp建立虚拟用户
建立虚拟用户的原因: 因为系统用户登陆ftp服务,同时也可以登陆系统,这样很不安全,所以我们要建立ftp虚拟用户,使这些用户只能登陆ftp
- 建立方式:
vim /etc/vsftpd/loginusers
写入
westos1 用户
123 密码
westos2 用户
123 密码
westos3 用户
123 密码
退出
注意:编辑的时候不要有空格 -
对文件进行hash加密
执行 db_load -T -t hash -f loginusers loginusers.db - 编辑文件(验证密码与用户是否一致的文件) 文件名称任意
vim /etc/pam.d/ftpauth
写入
account required pam_userdb.so db=/etc/vsftpd/loginusers
auth required pam_userdb.so db=/etc/vsftpd/loginusers
退出 - 编辑配置文件 vim /etc/vsftpd/vsftpd.conf退出后重新启动服务
修改 pam_service_name=ftpauth
添加 guest_enable=YES - 在另一台主机进行测试:可以看到虚拟用户创建成功,可以登录
- 创建虚拟用户后,本地用户就不能正常登陆了,但是仍然可以指定本地用户身份登陆
再次编辑配置文件vim /etc/vsftpd/vsftpd.conf
添加guest_username=tom退出tom用户必须存在
查看tom用户家目录下的东西,如果虚拟用户登录时可以看到以下文件,则证明虚拟用户登录身份修改成功
cd /home/
执行 chmod 555 tom/减小权限 - 在另一台主机测试:
二、虚拟用户独立家目录设置
-
首先在这三个家目录中分别建立文件
mkdir -p /ftphome/westos{1…3}
mkdir -p /ftphome/westos1/westos1date
mkdir -p /ftphome/westos2/westos2date
mkdir -p /ftphome/westos3/westos3date -
编辑配置文件vim /etc/vsftpd/vsftpd.conf退出后重新启动服务
添加:
注意:
$ USER 相当于c语言中的变量,给不同的值,输出不同的值
user_sub_token=$ USER (将shell中$USER的用法移到ftp服务中来用)
重新启动服务systemctl restart vsftpd
给该文件满权限chmod 777 /ftphome/westos*/* -
在令外一台主机测试:
三、虚拟用户权限单独设置
原理:虚拟用户使用的是匿名用户的参数控制,如果我们想让不同的虚拟用户有不同的权利,就必须给每个虚拟用户设置自己的次配置文件。
-
首先建立虚拟用户的次目录和次配置文件
mkdir /etc/vsftpd/user_conf
touch /etc/vsftpd/user_conf/westos1 - 编辑次配置文件 vim /etc/vsftpd/user_conf/westos1
写入允许虚拟用户执行的动作anon_upload_enable=YES退出保存(注意:虚拟用户的上传参数为NO,或默认) - 编辑配置文件vim /etc/vsftpd/vsftpd.conf
写入user_config_dir=/etc/vsftpd/user_conf
重新启动服务systemctl restart vsftpd -
在另一台主机测试:
虚拟用户westos1可以实现上传功能,而westos2和westos3不行