CentOS6.7下关于vsftpd的应用之一(匿名用户/普通用户/虚拟用户)

1)使用yum安装vsftpd

[root@C67-X64-A1 ~]# /etc/init.d/vsftpd start
为 vsftpd 启动 vsftpd:                                    [确定]
[root@C67-X64-A1 ~]# chkconfig vsftpd on
//查看21端口是否开启
[root@C67-X64-A1 ~]# netstat -tulnp| grep 21
tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      4169/vsftpd         
tcp        0      0 :::23                       :::*                        LISTEN      2321/xinetd         
[root@C67-X64-A1 ~]# lsof -i :21
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
vsftpd  4169 root    3u  IPv4  18067      0t0  TCP *:ftp (LISTEN)
//备份vsftpd配置文件
[root@C67-X64-A1 ~]# cd /etc/vsftpd/
[root@C67-X64-A1 vsftpd]# cp vsftpd.conf vsftpd.conf.bak

说明:/var/ftp/pub目录默认情况下是只能下载,不允许上传的(不要调整该目录的任何权限)


2)配置有关匿名用户的常用功能

a.默认情况下,使用匿名用户进行测试

匿名用户默认权限.png分别下载和上传文件进行测试

blob.png

如上图提示可以知道,下载test.iso,正常;上传的xml提示权限问题,

说明:匿名用户默认是可以下载,但不允许上传资料的。

我们开放匿名用户上传文件的权限:

anon_upload_enable=YES

blob.png

[root@C67-X64-A1 vsftpd]# cd /var/ftp/pub/
[root@C67-X64-A1 pub]# mkdir -p upload
[root@C67-X64-A1 pub]# ls -ld upload/
drwxr-xr-x 2 root root 4096 8月  24 14:22 upload/
//匿名用户在系统中对应的是ftp用户,通过acl配置,让ftp用户对upload目录具有最大权限
[root@C67-X64-A1 pub]# setfacl -m u:ftp:rwx upload/
[root@C67-X64-A1 pub]# getfacl upload/
# file: upload/
# owner: root
# group: root
user::rwx
user:ftp:rwx
group::r-x
mask::rwx
other::r-x

blob.png

文件能够上传,但新建目录提示权限问题

在配置文件中添加:anon_mkdir_write_enable=YES

然后我们使用匿名账号在upload下创建一个123的目录

blob.png

如上图所示,我们正常创建了一个名为123的目录,如果我们想删除名为123的目录

blob.png

如上图所示,我们删除upload下的123目录,没有删除成功

添加“anon_other_write_enable=YES”命令参数到配置文件中,然后再次删除123目录,成功删除

blob.png

关于匿名用户配置的小结:

  • anonymous_enable=YES

  • anon_upload_enable=YES(默认没有开启)

  • anon_mkdir_write_enable=YES(默认没有开启,开启后表面可以创建目录)

  • anon_other_write_enable=YES(默认在配置文件中没有这个选项,删除文件)

  • 真正的权限=共享权限与文件系统的权限的交集

3)关于本地用户的配置参数

[root@C67-X64-A1 ~]# adduser wanzhixing

[root@C67-X64-A1 ~]# echo wanzhixing | passwd –stdin wanzhixing

更改用户 wanzhixing 的密码 。

passwd: 所有的身份验证令牌已经成功更新。

blob.png

默认情况下,本地用户登录的ftp的家目录为自己的家目录,比如用户wanzhixing,实际所在的目录为/home/wanzhixing,并且能够上传/下载/创建目录/删除目录和文件(这里我就不截图说明了)

配置信息:

local_enable=YES

write_enable=YES

local_umask=022

从上图信息可以看出,用户并没有禁锢在自己的家目录,这样操作起来就会显得非常不安全,为避免这种现象,我们使用另外一个参数:

chroot_local_user=YES

blob.png

配置完成后,验证可知被禁锢在自己的目录了,看不到其它目录

本地用户小结:

  • local_enable=YES

  • write_enable=YES

  • local_umask=022

  • chroot_local_user=YES(禁锢所有的ftp本地用户于其家目录中)

  • 禁锢文件中指定的用户在其家目录中

  • chroot_list_enable=YES

  • chroot_list_file=/etc/vsftpd/chroot_list

补充信息:

<—————————————————————————————————————–

使用CentOS7配置ftp本地用户添加chroot_local_user=YES参数后,有一个报错信息:

500 OOPS: vsftpd: refusing to run with writable root inside chroot ()  

解决方法:

a、从2.3.5之后,vsftpd增强了安全检查,如果用户被限定在了其主目录下,则该用户的主目录不能再具有写权限了!如果检查发现还有写权限,就会报该错误。

b、要修复这个错误,可以用命令chmod a-w /home/user去除用户主目录的写权限,注意把目录替换成你自己的。或者你可以在vsftpd的配置文件中增加下列两项中的一项:

allow_writeable_chroot=YES

<—————————————————————————————————————–


4)关于虚拟用户的配置参数

a.所有的虚拟用户会被统一映射为一个指定的系统账号,访问的共享位置即为此系统账号的家目录

b.各虚拟用户可被赋予不同的访问权限:通过匿名用户的权限控制参数进行指定:

c.常见的配置虚拟用户的方式有两种(配置到文本中或者配置到数据库中)

我们本次主要是介绍虚拟用户结合mysql数据库来进行配置:

安装所需要的程序:

[root@C67-X64-A1 ~]# rpm -ivh http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@C67-X64-A1 ~]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 
[root@C67-X64-A1 ~]# yum clean all
[root@C67-X64-A1 ~]# yum -y install yum-fastestmirror
[root@C67-X64-A1 ~]# yum -y install pam_mysql(需要注意,如果没有合适的yum源,可能没法进行安装)
[root@C67-X64-A1 ~]# rpm -ql pam_mysql
/lib64/security/pam_mysql.so
/usr/share/doc/pam_mysql-0.7
/usr/share/doc/pam_mysql-0.7/COPYING
/usr/share/doc/pam_mysql-0.7/CREDITS
/usr/share/doc/pam_mysql-0.7/ChangeLog
/usr/share/doc/pam_mysql-0.7/NEWS
/usr/share/doc/pam_mysql-0.7/README
[root@C67-X64-A1 ~]# yum -y install  mysql-server mysql-devel pam_mysql
配置数据库相关的信息:
[root@C67-X64-A1 ~]# /etc/init.d/mysqld start
[root@C67-X64-A1 ~]# /usr/bin/mysqladmin -u root password redhat12345
[root@C67-X64-A1 ~]# mysql -uroot -predhat12345
mysql> create database vsftpd;
mysql> grant select on vsftpd.* to vsftpd@localhost identified by 'vsftpd12345';
mysql> grant select on vsftpd.* to vsftpd@127.0.0.1 identified by 'vsftpd12345';
mysql> grant select on vsftpd.* to vsftpd@'10.10.10.129' identified by 'www.magedu.com';
mysql> flush privileges;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| test               |
| vsftpd             |
+--------------------+
4 rows in set (0.00 sec)
mysql> use vsftpd;
Database changed
mysql> show tables;
Empty set (0.00 sec)
mysql> create table users (
    ->  id int AUTO_INCREMENT NOT NULL,
    ->  name char(20) binary NOT NULL,
    -> password char(48) binary NOT NULL,
    ->  primary key(id)
    ->  );
Query OK, 0 rows affected (0.05 sec)
mysql> show tables;
+------------------+
| Tables_in_vsftpd |
+------------------+
| users            
+------------------+
1 row in set (0.00 sec)

创建虚拟用户:

mysql> insert into users(name,password) values('magedu1',password('magedu'));

mysql> insert into users(name,password) values('magedu2',password('magedu'));

mysql> insert into users(name,password) values('wanlong',password('redhat')),('wanzhixing1',password('wanzhixing1'));

mysql> select * from users;

+—-+————-+——————————————-+

| id | name        | password                                  |

+—-+————-+——————————————-+

|  1 | magedu1     | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |

|  2 | magedu2     | *6B8CCC83799A26CD19D7AD9AEEADBCD30D8A8664 |

|  3 | wanlong     | *84BB5DF4823DA319BBF86C99624479A198E6EEE9 |

|  4 | wanzhixing1 | *EF6F8314A516192D2CC241E6A6B24E36B33908AA |

+—-+————-+——————————————-+

4 rows in set (0.00 sec)

配置pam的认证方式:

[root@C67-X64-A1 ~]# vim /etc/pam.d/vsftpd.mysql

auth required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd12345 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required /lib64/security/pam_mysql.so user=vsftpd passwd=vsftpd12345 host=localhost db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

说明:用户vsftpd,密码vsftpd12345,使用localhost登陆,数据库为vsftpd,表为users
crypt=0:表示口令使用明文方式保存在数据库中
crypt=1:表示口令使用UNIX的DES加密方式加密后保存在数据库中
crypt=2:表示口令使用MySQL的password()函数加密后保存在数据库中
crypt=3:表示口令使用MD5散列值的方式保存在数据库中

[root@C67-X64-A1 ~]# useradd -s /sbin/nologin -d /var/ftproot vuser
[root@C67-X64-A1 ~]# chmod go+rx /var/ftproot
请确保/etc/vsftpd/vsftpd.conf中已经启用了以下选项
anonymous_enable=NO
local_enable=YES
write_enable=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
chroot_local_user=YES
而后添加以下选项
guest_enable=YES
guest_username=vuser
指定访客的身份为vuser。
并确保pam_service_name选项的值如下所示
pam_service_name=vsftpd.mysql

此时用户还只有下载的权限,不能下载,因为默认被映射为匿名用户的权限


5)配置虚拟用户具有不同的访问权限

vsftpd可以在配置文件目录中为每个用户提供单独的配置文件以定义其ftp服务访问权限,每个虚拟用户的配置文件名同虚拟用户的用户名。配置文件目录可以是任意未使用目录,只需要在vsftpd.conf指定其路径及名称即可。

a. 配置vsftpd为虚拟用户使用配置文件目录

# vim vsftpd.conf

添加如下选项

user_config_dir=/etc/vsftpd/vusers_config 

b. 创建所需要目录,并为虚拟用户提供配置文件

# mkdir /etc/vsftpd/vusers_config/

# cd /etc/vsftpd/vusers_config/

# touch magedu1 wanzhixing1

c. 配置虚拟用户的访问权限

虚拟用户对vsftpd服务的访问权限是通过匿名用户的相关指令进行的。比如,如果需要让wanzhixing1用户具有上传文件的权限,可以修改/etc/vsftpd/vusers_config/wanzhixing1文件,在里面添加如下选项即可。

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

blob.png

编辑用户magedu1的权限,设置允许上传、不允许创建目录、不允许删除权限(这里我就不截图演示了)
[root@ns1 vusers_config]# cat magedu1 
anon_upload_enable=YES
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

以上的一些案列与配置,基本上涵盖了vsftpd下面的三种用户的应用。具体的操作不不杂,但需要我们去理解场景,做到跟实际需求结合起来。


原创文章,作者:Net21-冰冻vs西瓜,如若转载,请注明出处:http://www.178linux.com/39628

(0)
Net21-冰冻vs西瓜Net21-冰冻vs西瓜
上一篇 2016-09-19
下一篇 2016-09-19

相关推荐

  • 学习标准I/O和管道的心得体会

    重定向、标准输出、标准输入、标准错误、管道的命令整理

    2017-11-20
  • 第十八周作业

    1.LNMP架构添加Memcached支持,并验证其缓存结果 Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。 Memcached是以守护程序(监听)方式运行于一…

    2017-07-07
  • swap与dd命令使用详解

    处理交换文件和分区     交换分区是系统RAM 的补充 基本设置包括:     创建交换分区或者文件     使用mkswap 写入特殊签名     在/etc/fstab 文件中添加适当的条目 &…

    Linux干货 2017-04-30
  • ​N25第三周作业

    第三周 一、列出当前系统上所有已经登录的用户的用户名,注意:同一个用户登录多次,则只显示一次即可。 [root@zf ~]# who | cut -d " " -f1  | sort | uniq -…

    Linux干货 2016-12-14
  • awk入门应用

    awk概述使用语法常用命令选项相关输出命令print item1,item2,…printf FORMAT,item1,item2,….相关格式符相关修饰符相关内建变量相关内置函数相关操作符相关模式相关控制语句及示例if(condition) statementsif(condition){statements} else {statements}while…

    Linux干货 2016-12-04
  • 2018第六届中国网络安全大会即将于6月强势登陆!

    2018年6月13日,由赛可达实验室、国家计算机病毒应急处理中心、国家网络与信息系统安全产品质量监督检验中心、首都创新大联盟共同举办的第六届中国网络安全大会(NSC 2018)将在北京国家会议中心盛大召开。

    2018-03-15