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)
上一篇 2016-09-19 13:49
下一篇 2016-09-19 13:49

相关推荐

  • Centos6.5上搭建openvpn

    一、openvpn原理 二、安装openvpn 三、制作相关证书     3.1 制作CA证书     3.2 制作Server端证书     3.3 制作Client端证书 四、配置Server端 五、配置C…

    Linux干货 2016-04-28
  • 源码包编译安装mariaDB

    前言     MySQL是一个关系型数据库管理系统,是最流行的关系型数据库管理系统,由于其体积小、速度快、总体拥有成本低,并且之前是完全开源,所以大受欢迎。但由于后面MySQL卖给了SUN,随后SUN被Oracle收购,虽然也有开源免费版本,但是很多功能都需要另外购买商业版本,导致现在MySQL使用份额逐渐减少。所以M…

    Linux干货 2016-02-28
  • Linux 目录结构

    Linux 目录结构 1.     前言     Linux 是一种开源的,且非常流行的操作系统,发行版本众多。为了统一和规范linux系统的主要目录名及其用途,提出了FHS标准,FHS是File Hierarchy Standard的简写。Linu…

    Linux干货 2015-07-26
  • N26-第十三周

    1、建立samba共享,共享目录为/data,要求:(描述完整的过程)  1)共享名为shared,工作组为magedu;  2)添加组develop,添加用户gentoo,centos和ubuntu,其中gentoo和centos以develop为附加组,ubuntu不属于develop组;密码均为用户名;  3)添加samb…

    Linux干货 2017-06-01
  • 压缩打包工具

    linux系统常见的压缩命令:compress、gzip、zcat、bzip2、xz、zip 打包命令:tar、cpio compress 语法:compress  [-dfvcVr]  [-b maxbits]  [file …]        …

    2017-08-12
  • 常用RAID级别介绍

    RAID是什么         磁盘阵列(Redundant Arrays of Independent Disks,RAID),磁盘阵列是将多个价格便宜的磁盘按照一定的组合方式组成具有高容量的磁盘组,按照不同的组合方式可以达到不同的效果,如:可以提升磁盘的存取效率,可提高磁盘的…

    Linux干货 2016-02-14