vsftpd中配置多个虚拟用户访问不同目录FTP服务器

风信网(ithov.com)原创文章:测试vsftpd中多个虚拟用户访问不同目录FTP服务器的功能,是在管理与维护FTP服务器是非常实用的一个技术,对于安全要求比较高的FTP来说,采用虚拟用户访问控制不同目录,能大大的提高FTP服务器系统的安全性,下面我们来详细的说明如何在vsftpd中配置多个虚拟用户访问不同目录FTP服务器的步骤。

本测试环境为:CentOS i686

如果你还没有安装vsftpd,可以使用如下命令进行安装:

[root@localhost /]# yum install vsftpd

详细安装请参阅《教你使用vsftpd架设Linux中的FTP:安装》

vsftpd安装完成之后的配置文件位于/etc/vsftpd/vsftpd.conf中,常用的配置项说明请参阅《教你使用vsftpd架设Linux中的FTP:配置》,如果你希望更加深入的研究与了解vsftpd.conf文件各配置的功能,请参阅《vsftpd.conf配置参数官方详解》。

配置虚拟用户及目录:

[root@localhost sunco]# cd /etc/vsftpd/
[root@localhost vsftpd]# cat logins.txt
ithov
123456
ftpuser
abcde

说明:单数行为用户名,偶数行为口令,
即:用户ithov 的口令为123456;用户ftp 的口令为abcde

下面使用db_load 命令生成口令库文件
[root@localhost vsftpd]# db_load -T -t hash -f logins.txt /etc/vsftpd/vsftpd_login.db
注意这里一定要用.db做为扩展名,此为数据库文件。

修改口令库文件的权限
[root@localhost vsftpd]# chmod 600 /etc/vsftpd/vsftpd_login.db

下面编辑生成虚拟用户所需的PAM 配置文件
[root@localhost vsftpd]# vi /etc/pam.d/vsftpd.vu
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vsftpd_login
注意:64位系统为/lib64目录

保存后退出vi。
注意:pam文件中db后面的数据库不能加扩展名

建立虚拟用户

[root@localhost vsftpd]# useradd virtual

注意这里不要设置口令

修改vsftpd.conf配置文件的内容:
[root@localhost vsftpd]# vi vsftpd.conf

添加如下内容:

user_config_dir=/etc/vsftpd/vsftpd_user_conf
#此为虚拟用户配置文件的目录
guest_enable=YES
#支持虚拟用户
guest_username=virtual
#映射虚拟用户名
pam_service_name=vsftpd.vu
#修改对应的pam认证文件

已经配置好的vsftpd.conf文件供大家参考

[root@localhost vsftpd]# cat vsftpd.conf# Example config file /etc/vsftpd/vsftpd.conf## The default compiled in settings are fairly paranoid. This sample file# loosens things up a bit, to make the ftp
daemon more usable.# Please see vsftpd.conf.5 for all compiled in defaults.## READ THIS: This example file is NOT an exhaustive list of vsftpd options.# Please read the vsftpd.conf.5
manual page to get a full idea of vsftpd's# capabilities.## Allow anonymous FTP? (Beware - allowed by default if you comment this out).anonymous_enable=NO## Uncomment this to allow local users to log in.local_enable=YES## Uncomment this to enable any form of FTP write command.write_enable=YES## Default umask for local users is 077. You may wish to change this to 022,# if your users expect that (022 is used by most other ftpd's)local_umask=022## Uncomment this to allow the anonymous FTP user to upload files. This only# has an effect if the above global write enable is activated. Also, you will# obviously need to create a directory writable by the FTP user.#anon_upload_enable=YES## Uncomment this if you want the anonymous FTP user to be able to create# new directories.#anon_mkdir_write_enable=YES## Activate directory messages - messages given to remote users when they# go into a certain directory.dirmessage_enable=YES## The target log file can be vsftpd_log_file or xferlog_file.# This depends on setting xferlog_std_format parameterxferlog_enable=YES## Make sure PORT transfer connections originate from port 20 (ftp-data).connect_from_port_20=YES## If you want, you can arrange for uploaded anonymous files to be owned by# a different user. Note! Using "root" for uploaded files is not# recommended!#chown_uploads=YES#chown_username=whoever## The name of log file when xferlog_enable=YES and xferlog_std_format=YES# WARNING - changing this filename affects /etc/logrotate.d/vsftpd.logxferlog_file=/var/log/xferlog## Switches between logging into vsftpd_log_file and xferlog_file files.# NO writes to vsftpd_log_file, YES to xferlog_filexferlog_std_format=YES## You may change the default value for timing out an idle session.#idle_session_timeout=600## You may change the default value for timing out a data connection.#data_connection_timeout=120## It is recommended that you
define on your system a unique user
which the# ftp server can use as a totally isolated and unprivileged user.#nopriv_user=ftpsecure## Enable this and the server will recognise asynchronous ABOR requests. Not# recommended for security (the code is non-trivial). Not enabling it,# however, may confuse older FTP clients.#async_abor_enable=YES## By default the server will pretend to allow ASCII mode but in fact ignore# the request. Turn on the below options to have the server actually do ASCII# mangling on files when in ASCII mode.# Beware that on some FTP servers, ASCII support allows a denial of service# attack (DoS) via the command "SIZE /big/file" in ASCII mode. vsftpd# predicted this attack and has always been safe, reporting the size of the# raw file.# ASCII mangling is a horrible
feature of the protocol.#ascii_upload_enable=YES#ascii_download_enable=YES## You may fully customise the login banner string:ftpd_banner=Welcome to www.ithov.com FTP service.## You may specify a file of disallowed anonymous e-mail addresses. Apparently# useful for combatting certain DoS attacks.#deny_email_enable=YES# (default follows)#banned_email_file=/etc/vsftpd/banned_emails## You may specify an explicit list of local users to chroot() to their home# directory. If chroot_local_user is YES, then this list becomes a list of# users to NOT chroot().chroot_local_user=YES#chroot_list_enable=YES# (default follows)#chroot_list_file=/etc/vsftpd/chroot_list## You may activate the "-R" option to the builtin ls. This is disabled by# default to avoid remote users being able to cause excessive I/O on large# sites. However, some broken FTP clients such as "ncftp" and "mirror" assume# the presence of the "-R" option, so there is a strong case for enabling it.#ls_recurse_enable=YES## When "listen" directive is enabled, vsftpd runs in standalone mode and# listens on IPv4 sockets. This directive cannot be used in conjunction# with the listen_ipv6 directive.listen=YES## This directive enables listening on
IPv6 sockets. To listen on IPv4 and IPv6# sockets, you must run two copies of vsftpd with two configuration files.# Make sure, that one of the listen options is commented !!#listen_ipv6=YESuser_config_dir=/etc/vsftpd/vsftpd_user_confguest_enable=YESguest_username=virtualpam_service_name=vsftpd.vuuserlist_enable=YEStcp_wrappers=YES

建立虚拟用户文件夹
[root@localhost vsftpd]# mkdir /etc/vsftpd/vsftpd_user_conf
[root@localhost vsftpd]# cd /etc/vsftpd/vsftpd_user_conf

建立虚拟用户各自的权限与访问目录

[root@localhost vsftpd_user_conf]# vi ithov

local_root=/webservice/www
#ithov用户访问的目录为/webservice/www

anon_world_readable_only=YES
#用户可以浏览FTP目录和下载文件
anon_upload_enable=YES
#允许用户上传文件
anon_mkdir_write_enable=YES
#允许用户创建、删除目录
anon_other_write_enable=YES
#允许用户有其它读写权限,比如修改文件名称,删除文件等。

[root@localhost vsftpd_user_conf]# vi ftpuser

local_root=/webservice/ftpuser
# ftp用户访问的目录为/webservice/ftp

anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

保存文件之后,我们重新启动vsftpd服务。

[root@localhost vsftpd_user_conf]# service vsftpd restart
关闭 vsftpd:[确定]
为 vsftpd 启动 vsftpd:[确定]

使用ftp工具登陆测试,可以正常使用啦!

如果你使用ftp工具登陆出现如下500 OOPS: cannot change directory:/home/ithov错误,请参阅《vsftpd中FTP登陆500 OOPS: cannot change directory:/home/ithov错误解决方法》

时间: 2024-12-22 03:00:33

vsftpd中配置多个虚拟用户访问不同目录FTP服务器的相关文章

vsftpd添加用户并限制目录及指定用户访问指定目录

开发那边更新速度如果比较快,每天会有无数的文件或者目录交给运维更新上线,这样比较麻烦,干脆给他们搭FTP让他们自己上传修改,但有一问题,就是权限问题,公司五个站点有五个目录,每个人负责不同的站点,如何让各自都不干扰别人,或者说不到别人的目录搞"破坏"!下面解决这个问题! 一.检查Linux中vsftpd的安装情况. 就不啰嗦了 二.将系统中的SELinux关闭,然后重新启动电脑(不关闭的话修改好标签也可以) 关闭SELinux的方法: 修改/etc/selinux/config文件中的

path-在tomcat的conf的server.xml中配置应用的虚拟路径为什么不行

问题描述 在tomcat的conf的server.xml中配置应用的虚拟路径为什么不行 但是如果直接放到webapps中就能够打开了,这是怎么回事呢? 解决方案 ew 当转义字符处理了? 解决方案二: 除了设置路径还要把原来的默认发布目录下的文件拷贝一份到你设置的虚拟目录下 解决方案三: 所谓的虚拟目录指的是tomcat会将那个目录当成项目来发布 解决方案四: tomcat虚拟目录设置 在tomcat6版本中: 1.[官方文档]本人不推荐. 在tomcatconf下server.xml中找到 u

NAT/ICS下让外网用户访问内网WEB服务器

解决在使用NAT/ICS的情况下让外网用户访问内网WEB服务器的方法. 关于ICS里面的一个附加功能,操作相当简单,如果已经进行了NAT(网络地址转换)或ICS(Internet 连接共享),可以再完善. 一.使用NAT的情况 1.打开路由与远程访问MMC; 2.假设你的服务器名字是Myserver,启用了NAT的连接是"本地连接1".依次展开"Myserver"->"IP路由选择"->"网络地址转换(NAT)".

C++ 如何访问远程的FTP服务器呢?

问题描述 C++ 如何访问远程的FTP服务器呢? 在远程弄了一个vsftp c++怎么访问呢? 怎么操作呢? 解决方案 http://www.pudn.com/downloads122/sourcecode/windows/detail521008.html 解决方案二: http://blog.csdn.net/the_king_cloud/article/details/8090699 解决方案三: 在资源管理器中快捷访问FTP服务器

Vsftpd中配置虚拟用户及pureftp配置解析

虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源,所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全 1.生成虚拟用户口令库文件.为了建立此口令库文件,先要生成一个文本文件.该文件的格式如下,单数行为用户名,偶数行为口令: [root@localhost vsftpd]# vim vu.txt aa 11 bb 11 2. 用户认证文件的生成需要安装额外的软件来实现,软件名为:db4-utils [root@l

使用 chroot 监狱限制 SSH 用户访问指定目录

将 SSH 用户会话限制访问到特定的目录内,特别是在 web 服务器上,这样做有多个原因,但最显而易见的是为了系统安全.为了锁定 SSH 用户在某个目录,我们可以使用 chroot 机制. 在诸如 Linux 之类的类 Unix 系统中更改 root(chroot)是将特定用户操作与其他 Linux 系统分离的一种手段:使用称为 chrooted 监狱 的新根目录更改当前运行的用户进程及其子进程的明显根目录. 在本教程中,我们将向你展示如何限制 SSH 用户访问 Linux 中指定的目录.注意,

在IIS 7中配置PHP运行环境简单步骤[图文教程]_win服务器

安装 IIS 7.0         打开 Control Panel\Programs\Programs and Features\Turn Windows features on or off, 在打开的对话框中勾选上这两个选项:         单击OK等待片刻, IIS就安装完成了. 安装 PHP 5.2.6         1. 下载: PHP 5.2.6 ;  其它版本的 PHP 下载.         2. 将压缩包解压, 放到一个目录中, 比如 D:\php         3.

外网也可以访问的个人Ftp服务器

一.利用Serv-U建立个人Ftp服务器 二.花生壳注册免费动态域名 三.端口映射又叫端口转发 一.例子:本人使用破解版ServU 6.4搭建Ftp服务器 1.1解压如下,双击打开 ServUAdmin程序 1.3新建域 右键单击域,添加的新的域 这里特别提出许多人对端口理解的不好,端口就是用来区分数据包属于计算机上哪个应用程序,比如服务器也是其中一个应用程序. 客户端的端口使用介于 1024 和 65535 之间的任何端口 第四步 next 1.4在域的下面右键单击"用户" 建立匿名

建立基于虚拟用户的VSftpd服务_linux shell

上一篇文章给大家介绍了Linux中搭建FTP服务器的方法,说了vsftpd的基本配置,也就是匿名和本地,这回来说一下配置虚拟用户使用vsftpd,下面是具体步骤: 一.建立虚拟用户口令文件     可以使用vi命令创建一个用户口令文件,该文件是一个文本文件,其中奇数行为用户,偶数行为用户密码,文件名可以任意,如我建立一个名为login.txt的文件文件里的内容为: a abc123~ b abc123~ 其中a和b为用户,abc123~为用户的密码. 二.生成vsftpd口令认证文件     建