前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >第七章 FTP服务(2)

第七章 FTP服务(2)

作者头像
晓天
发布2019-07-04 14:28:50
9590
发布2019-07-04 14:28:50
举报
文章被收录于专栏:Linux、云计算技术交流

7.2 自定义配置

7.2.1 限制用户访问位置

在客户端cmd界面中可以看到,当使用Linux系统用户登录到FTP服务器后,是允许跳出用户家目录操作的,这就存在安全风险,所以我们会想,能不能把用户锁定在家目录下,不允许其跳出家目录,这就需要在配置文件中加入如下设置项:

vi /etc/vsftpd/vsftpd.conf ---写入

chroot_local_user=yes ---开启锁定用户在家目录下的功能,即在FTP界面下,把家目录当做根,用pwd可见

allow_writeable_chroot=yes ---允许用户登录后读写

chroot_list_file=/etc/vsftpd/grantUser ---开启一个用户列表文件

chroot_list_enable=yes ---该用户列表文件中的用户允许跳出家目录

然后对应配置文件,创建指定的用户列表文件

cd /etc/vsftpd

vi grantUser 写入指定用户,如:zhang,则重启服务后,zhang允许跳出,结果如下图:

图中可见,因为在grantUser文件中只添加了zhang用户,所以moon用户登录后,pwd可看到是 /,其实是moon用户默认把家目录当根了,则不能够跳出了。但zhang用户登录后pwd可见到真实的绝对路径,所以可跳出家目录操作。

7.2.2 匿名用户上传

我们以匿名用户登录后,会发现,默认就被锁定在登录目录下了,且没有上传权限,若要允许匿名登录后上传,需要做如下配置:

chmod 777 /var/ftp/pub ---放开pub目录的安全权限

注:同Samba、NFS一样,FTP访问也必须遵守访问权限规则:网络权限 和 安全权限 二者以最严格的为准。但是由于匿名用户的默认路径/var/ftp/权限必须为755,其他用户本身就不具备写权限,所以只能在/var/ftp下的pub目录上开启写入功能。

vi /etc/vsftpd/vsftpd.conf ---写入

anon_upload_enable=yes ---开启匿名上传功能,该句仅允许上传文件,不支持上传目录和改名删除

anon_mkdir_write_enable=yes ---允许上传目录

anon_other_write_enable=yes ---允许改名删除

systemctl restart vsftpd

重启服务后,客户端以匿名用户登录后,即有写权限了,但是,仅可以在pub目录下做写入操作。

注:客户端在字符界面下登录,可以使用ftp或anonymous代表匿名用户登录,密码为空。

7.2.3 其他辅助设置

除了以上设置外,配置文件中还可以针对连接数、上传、下载速率做设定,具体如下:

max_clients=100 ---设置最大连接数

max_per_ip=10 ---设置单个客户ip最大连接数

local_max_rate=102400 ---设置系统用户登录后的最大传输速率,单位:BPS

anon_max_rate=81920 ---设置匿名用户的最大传输速率,80KB=81920B

ascii_upload_enable=yes

ascii_download_enable=yes

---开启ascii码编码上传/下载传输

systemctl restart vsftpd

重启服务器,客户端可做验证。

7.3 虚拟用户

由之上实验可知,虽然可以对系统用户、匿名用户实现访问管理,但是问题非常明显,不同用户访问FTP时,访问到的都是不同位置,很难实现资源的统一化分享。并且,客户端使用系统用户访问,必须告知其密码,存在一定安全隐患。用户多了也意味着系统用户增多,也扰乱系统管理。解决以上问题,使用的方案是建立虚拟用户。

建立虚拟用户的思路是:Linux系统中,新建一个系统用户,做ftp专用账号,给该账号建立多个虚拟映射账号,并各自配置密码,针对客户端公开虚拟用户信息,则这些所有的虚拟用户登录到FTP服务器后,其实是同一个系统用户身份,则都访问到同一个目录下了。但客户端却使用的是不同的用户名、密码,且客户并不知道真正的系统用户是谁,更为安全。

7.3.1 虚拟用户配置

实验:

1、新建虚拟用户,生成虚拟用户库文件

cd /etc/vsftpd

mkdir vftp ---创建目录,专用于虚拟用户的管理

cd vftp

vi vusers ---创建虚拟用户记录文件,写入

user1 ---格式:一行用户名,一行密码

123123

user2

456456

user3

789789

db_load -T -t hash -f vusers vusers.db

---生成虚拟用户库文件,库文件必须.db后缀

--- -T 制作库文件 -t 指定加密算法 -f 指定用户记录文件

2、创建系统用户,专用于FTP

useradd -d /mnt/ftp vftp ---新建用户,并指定家目录,该目录即是FTP共享目录

passwd vftp

chmod 755 /mnt/ftp ---设定权限,允许非属主访问

3、建立虚拟用户与系统用户的映射,并设置ftp验证方式为虚拟用户验证

vi /etc/vsftpd/vsftpd.conf

删除匿名用户上传的设置,否则,所有虚拟用户都具备上传功能

写入:

guest_enable=yes ---开启虚拟用户功能

guest_username=vftp ---把虚拟用户映射到系统用户上

allow_writeable_chroot=yes ---虚拟用户默认也把家目录当做根,若之前已写则不需写

vi /etc/pam.d/vsftpd ---编辑验证配置文件

注释或删除所有原内容

写入:

auth required pam_userdb.so db=/etc/vsftpd/vftp/vusers

account required pam_userdb.so db=/etc/vsftpd/vftp/vusers

---指定FTP登录验证时,不使用系统登录验证,而去找用户库文件做验证,指定库文件绝对路径时,文件名是生成的库文件名,但不需要加.db

systemctl restart vsftpd ---重启服务

客户端可以验证,登录ftp时,系统用户不可用,只能使用虚拟用户。且所有虚拟用户登录后,访问点都相同,即/mnt/ftp。

7.3.2 虚拟用户上传

上一节中,我们创建完毕虚拟用户后,客户端可验证到,虚拟用户不支持上传,如果要允许所有虚拟用户都能上传,则需把之前匿名用户上传的代码写入主配置文件,但是若要针对不同的虚拟用户设置不同的权限,则需给每个虚拟用户做专项配置,操作如下:

vi /etc/vsftpd/vsftpd.conf ---写入

user_config_dir=/etc/vsftpd/vftp ---指定虚拟用户的访问配置文件路径

cd /etc/vsftpd/vftp

vi user1 ---针对虚拟用户名,创建配置文件,文件名即用户名

anon_world_readable_only=yes ---允许虚拟用户访问默认目录

write_enable=yes ---开启写权限

anon_upload_enable=yes

anon_mkdir_write_enable=yes

anon_other_write_enable=yes

vi user2 ---可再针对user2做配置,本实验中暂不设置。

systemctl restart vsftpd

服务重启后,客户端登录可验证user1登录后有上传权限,其他用户登录后没有上传权限。

若变更虚拟用户设置,可以从新生成虚拟用户库文件,再重启vsftpd服务即可。

说明:虽然虚拟用户访问FTP时是映射到系统用户的,但是作为Linux系统来讲,虚拟用户仍然算作来宾用户,即guest,仍然按匿名用户的权限做限制,并且虚拟用户访问后,把默认访问点当做根,即不允许跳出默认目录做操作。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-05-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 教主小筑 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档