实验环境

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
意义 文件中列出的用户根目录为系统根目录,其它用户根目录为自己主目录。 文件中列出的用户根目录为自己主目录,其它用户根目录为系统根目录。 全部用户根目录都是自己主目录。 全部用户根目录都是系统根目录。

linux利用vsftpd 搭建FTP服务器相关推荐

  1. Centos7.6利用vsftpd搭建FTP服务器详细教程

    Centos7搭建FTP服务器 目录 Centos7搭建FTP服务器 一.关闭防火墙 二.安装vsftpd并启动服务 1.安装vsftpd 2.启动服务 三.编辑配置 四.新建用户并设置密码 1.新建 ...

  2. 在阿里云主机上基于CentOS用vsftpd搭建FTP服务器

    最近需要在一台阿里云的云服务器上搭建FTP服务器,在这篇博文中分享一下我们根据实际需求进行的一些配置. ftp软件用的是vsftpd. vsftpd是一款在Linux发行版中最受推崇的FTP服务器程序 ...

  3. 使用vsftpd 搭建ftp 服务器

    1. 简介: 使用vsftpd 在ubuntu环境中搭建ftp服务器..Vsftp 是一个专门为unix类型系统设计一个ftp服务器,如linux. Vsftpd 支持ipv6和ssl.支持expli ...

  4. Centos 7使用vsftpd搭建FTP服务器

    FTP,即:文件传输协议(File Transfer Protocol),基于客户端/服务器模式,默认使用20.21端口号,其中端口20(数据端口)用于进行数据传输,端口21(命令端口)用于接受客户端 ...

  5. RHEL5中配置vsftpd搭建FTP服务器

    RPM安装包名:vsftpd-2.0.5-10.el5.i386.rpm (第二张光盘) 下载地址:http://vsftp.beasts.org  源代码最新版本:vsftpd-2.0.5.tar. ...

  6. 玩客云刷入Linux系统,搭建FTP服务器

    玩客云刷入LINUX系统参考这篇博客:https://lishuma.com/archives/3412 根据上面大佬的博客一步一步来很简单,简要总结几点: 1: 先刷安卓固件包,然后刷armbian ...

  7. Linux环境下搭建FTP服务器

    软件版本 1.Linux:CentOS Linux release 7.8.2003 (Core) 2.FTP:vsftpd-3.0.2 安装vsftpd // 1.检查是否安装了vsftpd(如果显 ...

  8. win10局域网下利用 FlieZilla 搭建FTP服务器,实现手机平板用nplayer直接看电脑内的视频

    环境 pc:win10 iPhone ipad 手机平板上用的软件:nplayer 具体步骤 1.首先下载 filezilla 并安装 client 是客户端,用于连接 ftp 服务器,进行文件传输: ...

  9. [日常坑]关于linux使用vsftp搭建ftp服务器的问题

    最大的坑是配置文件 这里提供一个样例 # Example config file /etc/vsftpd/vsftpd.conf # # The default compiled in setting ...

最新文章

  1. MySql忘记密码了咋办
  2. CV00-01-CV基础理论
  3. 轻量级神经网络:ShuffleNetV2解读
  4. 阿里云服务器下安装LAMP环境(CentOS Linux 6.3) 安装与配置 Apache 服务
  5. python水平_python水平
  6. 程序员,当你写程序写累了怎么办。
  7. 用户控件 自定义控件_新的自定义控件:TaskProgressView
  8. 【开源项目】QT OPENGL 与 shader 绘制展示视频代码实例 OPenGL直接显示YUV数据
  9. 面试题06. 从尾到头打印链表
  10. 链栈判断回文 java_C语言链栈判断回文
  11. LINUX下类似画图板Paint的工具
  12. 计算机技术与传感技术的关系,现代传感技术与系统课后题及答案.doc
  13. html如何制作表格合并,html如何合并表格
  14. 定企业生死的中台,到底长啥样?
  15. 微信小程序不能使用本地图片当背景图片的解决方法
  16. C++将小数化成分数
  17. 系统服务器如何修复,服务器操作系统修复
  18. SDN in Action: Practice SDN/OpenFlow with LINC-Switch and OpenDaylight
  19. ctp linux 查询死循环,CTP行情接入常见的问题记录
  20. vue中从数组中取一个随机颜色,随机取1到10的一个整数

热门文章

  1. Richardson外推法计算给定点处的一阶和二阶导数
  2. 减肥产品引流推广什么渠道好?怎么推广自己的减肥产品?
  3. 几种投影的特点及分带方法
  4. StartSSL免费SSL证书成功申请-HTTPS让访问网站更安全
  5. picker使用以及注意事项
  6. 解决删除Volume报错的问题(二)
  7. 准大二生的暑期自学安排
  8. 阿里天池:淘宝用户行为分析项目
  9. 机器学习笔记2:建立模型一般所需步骤
  10. 使用redis的setnx可以非同一线程进行加锁和解锁(附源码)