实验环境

centos 6.4 x86_64

实验目标

实现在同一跟目录下对admin,upload,download三个虚拟用户的不同权限的控制。具体权限控制列表如下:

用户名 权限说明
admin 管理员,可以上传、下载、新建文件夹、删除和更改文件和文件夹名。
upload 不可以下载,可以上传、新建文件夹,但不能删除文件和文件夹,不能重命名原有文件和文件夹;
download 只能下载,不能进行其他操作。

以上三个虚拟用户均不允许登录系统,并且使用ftp时会被锁定在指定目录内不可进入系统其他目录。

一、安装、配置vsftpd

为了方便我这里采用yum的方式安装vsftpd

[root@centi-c /]# yum -y install vsftpd
[root@centi-c /]# cd /etc/vsftpd/
[root@centi-c vsftpd]# cp vsftpd.conf vsftpd.conf.bak
[root@centi-c vsftpd]# service vsftpd start
Starting vsftpd forvsftpd:                                [  OK  ]
#添加一个不能登录系统的用户,用来做虚拟用户映射
[root@centi-c vsftpd]# useradd �s /sbin/nologin �d /home/www2013 -M www2013
[root@centi-c vsftpd]# passwd www2013
#创建虚拟用户列表,分别是upload、download和admin
[root@centi-c vsftpd]# touch /etc/vsftpd/vu_list.txt
[root@centi-c vsftpd]# echo upload >>/etc/vsftpd/vu_list.txt
[root@centi-c vsftpd]# echo 111111 >>/etc/vsftpd/vu_list.txt
[root@centi-c vsftpd]# echo download >>/etc/vsftpd/vu_list.txt
[root@centi-c vsftpd]# echo 111111 >>/etc/vsftpd/vu_list.txt
[root@centi-c vsftpd]# echo admin >>/etc/vsftpd/vu_list.txt
[root@centi-c vsftpd]# echo 111111 >>/etc/vsftpd/vu_list.txt
#查看列表内容
[root@centi-c vsftpd]# cat /etc/vsftpd/vu_list.txt
upload
111111
download
111111
admin
111111
#保存虚拟帐号和密码的文本文件无法被系统帐号直接调用,需要创建用于系统认证的db文件
[root@centi-c vsftpd]# db_load -T -t hash -f /etc/vsftpd/vu_list.txt /etc/vsftpd/vu_list.db
#创建db文件需要db4支持,如果系统没安装请安装
[root@centi-c vsftpd]# yum -y install db4 db4-devel db4-utils
#修改db文件的权限,以免被非法用户修改
[root@centi-c vsftpd]# chmod 600 /etc/vsftpd/vu_list.db

配置PAM文件

由于服务器通过调用系统PAM模块来对客户端进行身份验证,因此需要修改指定的配置文件来调整认证方式。PAM模块的配置文件路径为:/etc/pam.d/,这个目录下存放只许多与用户认证有关的配置文件。

[root@centi-c pam.d]# ls
chfn         fingerprint-auth     passwd            runuser            smtp.postfix  su-l
chsh         fingerprint-auth-ac  password-auth     runuser-l          sshd          system-auth
config-util  login                password-auth-ac  smartcard-auth     su            system-auth-ac
crond        newrole              remote            smartcard-auth-ac  sudo          vsftpd
cvs          other                run_init          smtp               sudo-i

编辑vsftpd文件

32位系统添加:

auth          required     /lib/security/pam_userdb.so     db=/etc/vsftpd/vu_list
account    required     /lib/security/pam_userdb.so     db=/etc/vsftpd/vu_list

64位系统添加:

auth       required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list
account    required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list

两行内容。

[root@centi-c pam.d]# vi vsftpd
#%PAM-1.0
session    optional     pam_keyinit.so    force revoke
auth       required     pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusersonerr=succeed
auth       required     pam_shells.so
auth       include      system-auth
account    include      system-auth
session    include      system-auth
session    required     pam_loginuid.so
auth       required     /lib/security/pam_userdb.so     db=/etc/vsftpd/vu_list
account    required     /lib/security/pam_userdb.so     db=/etc/vsftpd/vu_list

创建虚拟用户配置文件:

#创建conf文件夹
[root@centi-c pam.d]# cd /etc/vsftpd
[root@centi-c vsftpd]# mkdir conf
[root@centi-c vsftpd]# cd conf
#创建admin用户的配置文件
[root@centi-c conf]# cat >>admin<< EOF
> anon_world_readable_only=NO
> write_enable=YES
> anon_mkdir_write_enable=YES
> anon_other_write_enable=YES
> anon_upload_enable=YES
> EOF
#创建upload用户的配置文件
[root@centi-c conf]# cat >>upload<< EOF
> write_enable=NO
> anon_upload_enable=YES
> anon_mkdir_write_enable=YES
> anon_world_readable_only=NO
>download_enable=NO
> EOF
#创建download用户的配置文件
[root@centi-c conf]# cat >>download<< EOF
> anon_world_readable_only=NO
> EOF

修改vsftpd.conf文件

#修改内容如下
[root@centi-c conf]# cd ..
[root@centi-c vsftpd]# vi vsftpd.conf
anonymous_enable=NO
local_enable=YES
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=NO
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
# To fixed 500 OOPS: vsftpd: refusing to run with writable root inside chroot ()
allow_writable_root=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
nopriv_user=www2013
async_abor_enable=YES
ascii_upload_enable=YES
ascii_download_enable=YES
ftpd_banner=Welcome to blah FTP service ^_^
ls_recurse_enable=NO
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
local_root=/home/www2013
guest_enable=YES
guest_username=www2013
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/conf

如果不加这一段的话会报如下错误:

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

具体原因请看这里:Ben Scobie’s Blog

具体测试过程就不一一列举了,有空再添加。


部分错误解决方法:

1.530 Permission denied.

解决过程如下:

[root@centi-c vsftpd]# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 Welcome to blah FTP service ^_^
Name (127.0.0.1:root): admin
331 Please specify the password.
Password:
530 Permission denied.
Login failed.
ftp> bye
221 Goodbye.
#查看secure日志后,错误原因一目了然
[root@centi-c vsftpd]# tail -f /var/log/secure
Jul  5 10:09:30 centi-c vsftpd[36501]: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: cannot openshared object file: No such fileor directory
Jul  5 10:09:30 centi-c vsftpd[36501]: PAM adding faulty module: /lib/security/pam_userdb.so
Jul  5 10:16:34 centi-c vsftpd[36501]: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: cannot openshared object file: No such fileor directory
Jul  5 10:16:34 centi-c vsftpd[36501]: PAM adding faulty module: /lib/security/pam_userdb.so
Jul  5 10:16:39 centi-c vsftpd[36501]: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: cannot openshared object file: No such fileor directory
Jul  5 10:16:39 centi-c vsftpd[36501]: PAM adding faulty module: /lib/security/pam_userdb.so
Jul  5 10:16:53 centi-c vsftpd[36501]: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: cannot openshared object file: No such fileor directory
Jul  5 10:16:53 centi-c vsftpd[36501]: PAM adding faulty module: /lib/security/pam_userdb.so
Jul  5 10:26:48 centi-c vsftpd[37818]: PAM unable to dlopen(/lib/security/pam_userdb.so): /lib/security/pam_userdb.so: cannot openshared object file: No such fileor directory
Jul  5 10:26:48 centi-c vsftpd[37818]: PAM adding faulty module: /lib/security/pam_userdb.so

修改/etc/pam.d/vsftpd文件,将

auth          required     /lib/security/pam_userdb.so     db=/etc/vsftpd/vu_list
account    required     /lib/security/pam_userdb.so     db=/etc/vsftpd/vu_list

改为:

auth       required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list
account    required     /lib64/security/pam_userdb.so   db=/etc/vsftpd/vu_list

重启sftpd服务,就可以正常登录了

2.chroot_list_enable和chroot_local_user取值的不同组合情况:

参数 取值 取值 取值 取值
chroot_list_enable YES YES NO NO
chroot_local_user YES NO YES NO
意义 文件中列出的用户根目录为系统根目录,其它用户根目录为自己主目录。 文件中列出的用户根目录为自己主目录,其它用户根目录为系统根目录。 全部用户根目录都是自己主目录。 全部用户根目录都是系统根目录。

参考资料:http://blog.csdn.net/pigchan/article/details/4768717

本文出自 “Centi.Linux” 博客,请务必保留此出处http://centilinux.blog.51cto.com/1454781/1241768

转载于:https://my.oschina.net/subone/blog/702737

vsftp 多用户不同访问权限配置相关推荐

  1. 配置文档的访问权限 配置LDAP家目录漫游

    1 案例1:配置附加权限 1.1 问题 本例要求创建一个某个组的用户共享使用的目录 /home/admins,满足以下要求: 此目录的组所有权是 adminuser adminuser 组的成员对此目 ...

  2. vsftp账号_VSFTP用户权限配置

    vsftpd.conf文件: connect_from_port_20=YES anonymous_enable=NO write_enable=YES local_umask=002 listen_ ...

  3. sharepoint 2016 学习系列篇(15)-自定义列表应用篇-(4)数据权限配置

    当数据已经录入到列表中之后,接下来,朋友们可能会想知道,有些数据,只想给某些用户看到,或者编辑,列表是否支持这样的操作. 大微软的sharepoint平台,对于用户的需求,可以说是考虑得很周全的,权限 ...

  4. svn服务器 无线访问权限,SVN 服务器端权限管理

    创建用户 点击菜单上的Users可以在右侧窗口区域中看见已经创建的用户 创建组 同样也可以修改组: 分配权限 示例一:开发人员拥有读写权限(组权限) 进入权限分配界面: 添加组或用户: 在添加页面可以 ...

  5. Windows多用户配置,不同用户不同访问权限

    文章目录 1 环境准备 2 更改计算机名和工作组/域 3 新建用户名/用户组 3.1 打开用户名/用户组的方式 3.2 新建用户 3.3 分配用户组 4 配置共享文件夹 4.1 新建一个文件夹开启共享 ...

  6. centos 安装vsftp 绝对成功包括目录权限配置

    第一步:安装vsftp pam db4 yum install vsftpd pam* db4* -y 通过setup对系统服务及防火墙进行配置,然后reboot系统 或者使用命令将vsftp配置为系 ...

  7. centos sudo不能运行_如何在 Linux 中配置 sudo 访问权限 | Linux 中国

    Linux 系统中 root 用户拥有 Linux 中全部控制权力.Linux 系统中 root 是拥有最高权力的用户,可以在系统中实施任意的行为.-- Magesh Maruthamuthu Lin ...

  8. Web.config配置访问权限

    Asp.net的身份验证有有三种,分别是"Windows | Forms | Passport",其中又以Forms验证用的最多,也最灵活.  Forms 验证方式对基于用户的验证 ...

  9. java安全权限配置_使用Spring安全表达式控制系统功能访问权限问题

    一.SPEL表达式权限控制 从spring security 3.0开始已经可以使用spring Expression表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限.Spring ...

最新文章

  1. Python学习笔记1 Python基础
  2. 机器视觉系统设计关键:成像基准
  3. 【选摘】如何提高月结事务的性能
  4. boost::log::static_type_dispatcher用法的测试程序
  5. 论文阅读 - Beat Tracking by Dynamic Programming
  6. 使用Python为中秋节绘制一块美味的月饼
  7. php中div重叠,div重叠问题
  8. 字符串ababaaab的nextval数组值序列为_子序列解题模板:最长回文子序列
  9. 火狐扩展Firefox extension开发流程(学习记录)
  10. 技术总监岗位职责和要求
  11. 值得回忆2012年-飘渺的2013年
  12. 地球物理及空间物理相关数据下载
  13. IT大学生成长周报 | 第 3 期
  14. 推荐了这些好书,你看过几本啦?
  15. 字节跳动校招开发一面、二面【凉】
  16. 程序人生—我已经努力了七年
  17. 节点偏差Junction Deviation
  18. 便携式计算机的基本知识,使用便携式计算机,错误的做法是()A、非涉密便携机不得存储或处理涉密信息B、涉密便携机需经过保 - 普法考试题库问答...
  19. 学习pandas全套代码【超详细】数据查看、输入输出、选取、集成、清洗、转换、重塑、数学和统计方法、排序
  20. nginx配置文件结构1

热门文章

  1. microLite_timer,简洁、小巧精干的软件定时器
  2. pytorch深度学习入门笔记
  3. 案例1—MP3在线搜索下载程序
  4. 仿热血江湖游戏NpcClass_掉出物品
  5. 一个形式良好的XML文档
  6. 埃米,音译为埃,符号为Å,1Å等于10^(-10)m,即纳米的十分之一
  7. 1688电商API接口-无需多个 电商平台单独对接
  8. 【攻击威胁】女巫攻击(sybil attack)
  9. Fiddler下载安装及手机抓包--小白版
  10. 夏普Sharp AR-M207 一体机驱动