1671天 博客通用头像 Edwiin

本人熟练掌握linux,windows的开关机,擅长nfs,samba,ftp,dhcp,bind,apache,mail等各项服务的安装与卸载,精通shell,mysql,iptables,selinux等单词的拼写,了解虚拟化,存储,集群等相关汉字的书写。

【Linux学习】vsftpd练习——乱

发布于 1年前 / 1.2k 次围观 / 0 条评论 / Linux / Edwiin
本文最后更新于2019-8-4,已超过 1 个月没有更新,如果文章内容或图片资源失效,请【留言反馈】,我会及时处理,谢谢!

ftp题目要求(要求开启firewalld):

yum -y install vsftpd
service firewalld restart
firewall-cmd --zone=public --add-port=21/tcp --permanent
firewall-cmd --reload
systemctl enable vsftpd.service

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1、允许匿名用户访问ftp服务器配置匿名用户ftp的根目录为/opt/anon

vi /etc/vsftpd/vsftpd.conf
anonymous_enable=YES
local_enable=YES
anon_root=/opt/anon

2、创建/opt/anon/pub目录

mkdir -p /opt/anon/pub

3、允许匿名用户在pub目录上传文件(要求上传的文件权限为-rw-r-----)、不允许删除、也不允许下载!!

vi /etc/vsftpd/vsftpd.conf
anon_other_write_enable=NO #是否允许匿名用户删除、重命名等

[root@localhost anon]# chmod -R 777 pub/
[root@localhost anon]# chmod -R g+r pub/

4、允许匿名用户在pub目录中创建目录,进入创建的那个目录中,能上传文件,上传后可以看到、但也不允许下载

vi /etc/vsftpd/vsftpd.conf
anon_mkdir_write_enable=YES #是否允许匿名用户创建目录

上传后无法看到。
[root@localhost pub]# chmod -R 777 XXX 才能看到。待补充。

5、创建三个本地用户tom和jerry、kevin作为ftp用户,但不允许这三个用户登录操作系统
(1)其中tom和jerry的ftp根目录为/home/local
(2)另:kevin的ftp根目录为/home/kevin

useradd -d /home/local -g ftp -s /sbin/nologin tom
useradd -d /home/local -g ftp -s /sbin/nologin jerry
useradd -d /home/kevin -g ftp -s /sbin/nologin kevin
passwd tom
passwd jerry
passwd kevin
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO

6、在/home/local目录下创建pub目录

cd /home/local/
mkdir pub

7、对于ftp用户要求如下:
(1)tom对pub目录、只具有读的权限,即不能上传文件,只能下载

setfacl -m u:tom:r pub/

(2)jerry对pub目录,同时具有读和写的权限

setfacl -m u:jerry:rw pub/
setfacl -m u:kevin:rw pub/

8、操作系统中、只允许tom、jerry和kevin三个用户访问ftp服务器(要保证以后创建的系统用户都不能登录ftp服务器

vi /etc/vsftpd/vsftpd.conf
userlist_deny=NO
vi user_list
tom
jerry
kevin

9、tom和kevin两个用户访问ftp服务器后、不能跳出自己的家目录,而jerry用户是可以跳转出自己的家目录的!
即jerry用户是可以访问到/home/local之外的目录(如/etc目录,/boot目录等等)

vi /etc/vsftpd/vsftpd.conf //当chroot_list_enable=YES,chroot_local_user=NO时,
在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
allow_writeable_chroot=YES

vi chroot_list
tom
kevin

10、tom用户可以访问ftp服务器、限制最大使用的空间为500M (选做)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
注:ftp客户端使用windows自带的dos或者资源管理器、要求都能登录访问(dos下登录后,能使1201
列出ftp上的资源

——————————————————————————————————————————

ftp虚拟用户的练习

yum -y install libdb-utils

1、创建20个ftp虚拟用户user01、user02....user20,要求操作系统用户中无这些用户

建立用户文件:

vi /etc/vsftpd/virtusers

写入以下内容,第一行为用户名,第二行为密码。不能使用root作为用户名:

user01
123456
user02
123456
……
user20
123456

生成用户数据文件:

db_load -T -t hash -f /etc/vsftpd/virtusers /etc/vsftpd/virtusers.db

设定PAM验证文件,并指定对虚拟用户数据库文件进行读取:

chmod 600 /etc/vsftpd/virtusers.db 

修改 /etc/pam.d/vsftpd 文件,修改前先备份:

cp /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
vi /etc/pam.d/vsftpd

先将配置文件中原有的 auth 及 account 的所有配置行均注释掉,然后在文件头加上以下内容:

auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers 
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers

下面贴上我的代码,成功解决了本地用户和共享用户的共存关系

#%PAM-1.0
auth sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
account sufficient /lib64/security/pam_userdb.so db=/etc/vsftpd/virtusers
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
auth       include      password-auth
account    include      password-auth
session    required     pam_loginuid.so
session    include      password-auth

注:如果系统为32位,上面改为lib

2、每个用户ftp根目录为/opt/ftproot/xxxx目录 #其中xxxx代表用户自己的名字

新建系统用户vsftpd,用户目录为/home/vsftpd:

#用户登录终端设为/bin/false(即:使之不能登录系统)
useradd vsftpd -d /home/vsftpd -s /bin/false
chown -R vsftpd:vsftpd /home/vsftpd

建立虚拟用户个人配置文件:

mkdir /etc/vsftpd/vconf
cd /etc/vsftpd/vconf

#这里建立虚拟用户user01配置文件
touch user01

#编辑user01用户配置文件,内容如下,其他用户类似
vi user01

local_root=/opt/ftproot/user01
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

#建立user01用户根目录
mkdir -p /opt/ftproot/user01

3、允许每个用户在自己的ftp根目录下上传文件,上传后的文件默认权限为-rw-r-----,对于上传的文件还要求能够下载

chmod -R 777 user01
chmod -R g+r user01

以下内容待补充。
4、不允许user15~user20,在自己的ftp根目录下创建目录,而其他用户都可以正常创建!
5、【选做】:在/opt目录下创建pub目录,即/opt/pub作为大家的公共目录,

 

允许每个ftp用户都能访问到这个目录,进行下载操作,但不允许上传操作

cd /opt/
待补充

如果已经会了的、可以考虑如何将用户密码信息存储到mysql或者mariadb表中,即ftp登录时,是到数据库表中对用户名及密码进行验证!

参考文章https://www.linuxidc.com/Linux/2015-08/122117.htm

全站顶部广告位

  • 支付宝赞助图片
  • 微信赞助图片
  • QQ赞助图片
头像
描述: 还好有你,再见如初。

Press Space to start