vsftpd权限配置

要求 :完成vsftpd配置,

  (1) 禁锢系统用户于家目录;

  (2) 基于mysql进行用户认证;

  (3) 不同的虚拟用户拥有不同的权限设定.

解答:

 (1) 首先安装需要的系统环境和软件

yum groupinstall -y "Development Tools"
yum install -y mariadb-server vsftpd mariadb-devel pam-devel

(2) 用户的验证如果要基于mysql, 需要借助pam, 将vsftpd的认证功能托管给pam. 需要安装连接pam和mysql的模块文件pam_mysql, 下载获取pam_mysql的压缩文件,解压,编译安装

tar xf pam_mysql-0.7RC1.tar.gz #解压文件
cd pam_mysql-0.7RC1  #切换工作目录
./configure --with-pam=/usr --with-mysql=/usr --with-pam-mods-dir=/usr/lib64/security
make && make install

(3)准备数据库文件

MariaDB [(none)]> CREATE DATABASE vsftpd;  #首先创建需要的数据库vsftpd
MariaDB [(none)]> CREATE TABLE vsftpd.users (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name CHAR(30) NOT NULL UNIQUE KEY,password CHAR(48));# 添加表格users, 存储授权用户的认证信息
MariaDB [(none)]> INSERT INTO vsftpd.users (name,password) VALUES ('tom',PASSWORD('mageedu')),
('jerry',PASSWORD('mageedu'));  #在users表中,插入两个用户
MariaDB [(none)]> GRANT ALL ON vsftpd.* TO 'vsftpd'@'localhost' IDENTIFIED BY 'mageedu';#给vsftpd授权
MariaDB [(none)]> GRANT ALL ON vsftpd.* TO 'vsftpd'@'127.0.0.1' IDENTIFIED BY 'mageedu';
MariaDB [(none)]> FLUSH PRIVILEGES;

(4)创建和配置vsftpd通过pam_mysql认证的配置文件

vsftpd通过pam_mysql进行认证的配置文件在/etc/pam.d/目录下, 创建一个vsftpd.mysql的配置文件, 添加如下选项:

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

上述文件中:

  user : 为连接mysql服务器的用户名, 此用户要有权限访问认证vsftpd服务的数据库;

  passwd : 上面用户的密码;

  host : mysql服务器主机的地址, 此处为本机地址;

  db : 认证vsftpd富翁2u的数据库名称;

  table : 存放了用户和密码的表;

  usercolumn : 用户名对应的字段;

  passwdcolumn : 密码对应的字段;

  crypt : 密码加密的方法.

(5)准备匿名用户映射的系统用户账号

mkdir /ftproot  # 创建映射的系统账号的家目录
useradd -d /ftproot vsuser #创建用户
mkdir /ftproot/{pub,upload}  #创建工作目录
setfacl -m u:vuser:rwx /ftproot/upload #为vuser用户添加对目录的权限

(6)配置vsftpd的主机配置文件vsftpd.conf

修改配置文件,如下:

anonymous_enable=NO   #禁止匿名用户登录
pam_service_name=vsftpd.mysql
guest_enable=YES  #开始来宾用户登录
guest_username=vsuser #设置来宾用户名
user_config_dir=/etc/vsftpd/users_conf   #每个来宾用户的权限设置

配置每个匿名来宾用户的单独权限设定:

mkdir /etc/vsftpd/users_conf

设定tom的权限

vim /etc/vsftpd/users_conf/tom
#添加下面的选项
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

设定jerry的权限

vim /etc/vsftpd/users_conf/tom
#添加下面的选项, 设定jerry只能上传
anon_upload_enable=YES

(7) 禁锢系统用户于自己的家目录

启用如下选项

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

默认chroot_list文件是不存在的,需要手动创建

touch /etc/vsftpd/chroot_list
awk -F: '$3<1000{print $1}' /etc/passwd > /etc/vsftpd/chroot_list

(8) 重启服务, systemctl restart vsftpd.service, 在另外一台主机上测试

[root@localhost ~]# lftp -u tom 10.1.52.44
Password: 
lftp tom@10.1.52.44:~> ls          
drwxr-xr-x    2 0        0               6 Oct 13 19:25 pub
drwxrwxr-x    2 0        0               6 Oct 13 19:25 upload
lftp tom@10.1.52.44:/> cd upload/
lftp tom@10.1.52.44:/upload> put /etc/issue
79 bytes transferred                                          
lftp tom@10.1.52.44:/upload> ls
-rw-------    1 1000     1000           79 Oct 13 19:46 issue
lftp tom@10.1.52.44:/upload> rm issue 
rm ok, `issue' removed
lftp tom@10.1.52.44:/upload> ls
lftp tom@10.1.52.44:/upload>

测试tom用户成功

然后测试ben用户, ben只有上传功能

[root@localhost ~]# lftp -u ben 10.1.52.44
Password: 
lftp ben@10.1.52.44:~> ls          
drwxr-xr-x    2 0        0               6 Oct 13 19:25 pub
drwxrwxr-x    2 0        0               6 Oct 13 19:46 upload
lftp ben@10.1.52.44:/> cd upload/
lftp ben@10.1.52.44:/upload> put /etc/issue
79 bytes transferred
lftp ben@10.1.52.44:/upload> ls
-rw-------    1 1000     1000           79 Oct 13 19:49 issue
lftp ben@10.1.52.44:/upload> rm issue 
rm: Access failed: 550 Permission denied. (issue)
lftp ben@10.1.52.44:/upload>

禁锢系统用户于自己的家目录, 且没有任何权限

[root@localhost ~]# lftp -u root 10.1.52.44
Password: 
lftp root@10.1.52.44:~> ls         
ls: Login failed: 530 Permission denied.          
lftp root@10.1.52.44:~> pwd
ftp://root@10.1.52.44
lftp root@10.1.52.44:~>

原创文章,作者:black_fish,如若转载,请注明出处:http://www.178linux.com/53475

(0)
black_fishblack_fish
上一篇 2016-10-24 07:39
下一篇 2016-10-24 09:08

相关推荐

  • AWK

    awk:报告生成器,格式化文本输出         处理方式:文件里有多行,awk处理时,先将第一行放到内存里面,然后将该行分割成列(字段),第一个字段叫$1,第二个字段$2,以此类推,$0代表整行。        &n…

    Linux干货 2016-09-26
  • Linux运维之磁盘管理

    ※磁盘管理 计算机是由五大组成部件:输入设备,输出设备,存储器,运算器,控制器,其中输入设备我们称之为I/O设备,如键盘,扫描器,运算器和控制称之为cpu,存储器如,内存,硬盘,优盘。计算机其实只需要内存和cpu其实已经可以完成工作了,但是内存属于随机存储设备,断电之后就丢失数据,所以我们就需要通过其他的辅助存储设备来弥补内存的不足,这些辅存我们称之为外存。…

    Linux干货 2016-08-27
  • vim小结

    1. 简介 Vim(Vi[Improved])编辑器是功能强大的跨平台文本文件编辑工具,继承自Unix系统的Vi编辑器,支持Linux/Mac OS X/Windows系统,利用它可以建立、修改文本文件。进入Vim编辑程序,可以在终端输入下面的命令: $vim [filename] 其中filename是要编辑器的文件的路径名。如果文件不存在,它将…

    Linux干货 2016-08-12
  • linux 病毒 sfewfesfs

    由于昨天在内网服务器A不小心rm -fr / ,导致服务器A完蛋,重装系统后,不知道啥原因,局域网瘫痪不能上网,最后发现内网服务器A的一个进程sfewfesfs cpu 300%。路由器被网络阻塞啦。 于是百度这个病毒:都说该病毒很变态。第一次中linux病毒,幸亏是内网,感觉比较爽。(总结网络内容,引以为戒) 1、病毒现象 服务器不停向外网发送数据包,占网…

    Linux干货 2015-04-03
  • linux中bash的基础特性和基本文件管理命令

    linux的文件管理类命令 linux系统下的涉及到目录管理命令,主要有 mkdir,rmdir linux系统下也会用到许多文件查看类命令,包括cat,tac,head,tail,more,less等 linux系统下涉及的文件管理类命令主要有cp,mv,rm 本节我们主要说明文件管理类命令的使用方法。 cp命令的使用方法 首先,cp这个命令的作用是可以复…

    Linux干货 2016-09-26
  • N21天天第十五周课程练习

    1、总结sed和awk的详细用法; sed Sed本质上是一个编辑器,但是它是非交互式的;同时它又是面向字符流的,输入的字符流经过sed的处理后输出。 Sed本身是一个管道命令,可以分析standard input的,主要是用来分析关键字的使用、统计等,此外还可以将数据进行替换、删除、   选取特定行等功能 格式:sed&nbs…

    Linux干货 2016-12-05