Ubunton下搭建ftp服务器 实现虚拟用户、本地用户、匿名用户的登陆及权限

#在ubunton系统下安装和配置ftp可以说是比较简单的

本篇教程是为了解决一下问题

需要搭建ftp服务器实现三种用户的登陆及权限管理

其中 anon可以自由的到特定的目录里下载东东;

stu则可以到特定的目录里上传东东;

而tearcher,则可以对特定的目录里上传、下载东东;

admin则可以对stu、teacher的数据进行统一的管理。

另外,做为系统上已经有的本地用户则可以登录自己的home目录。

针对上面的需求,ftp需要开通对匿名用户、本地用户、及虚拟用户的支持。并且特别对虚拟用户中的(stu、teacher、admin)分别授予不同的权限。

下面就vsftpd支持三类用户加以说明:

1.匿名用户,也就是不需要输入密码就可登录ftp服务器的用户,这个用户名通常是ftp或anonymous;
与匿名用户有关的设置多以 anon_选项开头。

2.本地用户,也就是你Linux系统上可登录到系统的用户,这些用户是在系统上实实在在存在的用户。通常会有自己的home,shell等。与本地用户有关的设置多以local_开头或包含local_的选项。

3.虚拟用户,只对ftp有效的用户。这些用户不可以登录Linux系统,只可以登录ftp服务器。其实就是一个本地用户映射成多个只对ftp服务器有效的虚拟用户。虚拟用户可以有自己的ftp配置文件,因此通常利用虚拟用户来对ftp系统的不同用户制定不同的权限,以达到安全控制的目的。与虚拟用户有关的设置以guest_开头。

如果你只是想用ftp实现对自己的共享,你可以开启本地用户;

如果你想对很多人共享,那你可以用匿名用户;

如果你需要针对不同的用户群给予不同的权限,那你就要设置更复杂的虚拟用户了。

闲话少叙,开始安装vsftpd服务器。而对于全新安装的vsftpd,它是默认支持本地用户登录的,而且匿名用户是无法使用的。所以我先要在安装之后,开启匿名登录。

1.
安装vsftpd:

sudo apt-get install vsftpd

此时可以使用 ftp localhost 测试是否安装成功

现在你就可以用你Ubuntu的用户名和密码登录ftp服务器了,登录目录是用户对应的Home目录。

1.1查看和配置
vsftdp.conf中的内容

使用

cat /etc/vsftpd.conf | grep -v ‘^#‘

查看默认生成的配置,部分选项的意思如下

listen=YES                        将以独立模式运行,由vsftpd自己监听和处理IPv4端口的连接请求
anonymous_enable=NO   不允许匿名访问
local_enable=YES      允许本地用户访问,即系统上已经有的用户可以直接登录
dirmessage_enable=YES 是否激活目录欢迎信息功能。 当用户用CMD模式首次访问服务器上某个目录时,FTP服务器将显示欢迎信息。
		        默认情况下,欢迎信息是通过该目录下的.message文件获得的。此文件保存自定义的欢迎信息,由用户自己建立
use_localtime=YES     是否使用本地时间,默认是使用GMT时间,和中国的标准时间大概相差8个小时
xferlog_enable=YES    让系统自动维护上传和下载的日志文件,默认情况该日志文件为/var/log/vsftpd.log
connect_from_port_20=YES                是否采用ftp的默认端口来控制和传送数据
secure_chroot_dir=/var/run/vsftpd/empty 这个选项必须指定一个空的资料夹且任何登入者都不能有写入的权限,
					当vsftpd不需要file system 的权限时,就会将使用者限制在此资料夹中。
pam_service_name=vsftpd                 设置PAM外挂模块提供的认证服务所使用的配置文件名,该文件是在/etc/pam.d/目录下查询的。
rsa_cert_file=/etc/ssl/private/vsftpd.pem     指定SSL中RSA认证证书的位置

2.我们先来开通匿名用户:

因为vsftpd的匿名用户的登录目录默认是ftp的home目录,所以我们先看看Ubuntu系统里的ftp用户的Home目录是什么?

使用

[email protected]:~# cat /etc/passwd | grep ftp
ftp:x:105:111:ftp daemon,,,:/srv/ftp:/bin/false

可以看到ftp的home是/srv/ftp,但是/srv/ftp这个目录并不我想放文件的地方,我要放在/var/ftp/anon
,所以在这里需要修改一个ftp的home目录。

[email protected]:/# sudo usermod -d /var/ftp/anon ftp
[email protected]:/# cat /etc/passwd | grep ftp
ftp:x:105:111:ftp daemon,,,:/var/ftp/anon:/bin/false

要开启匿名用户需要在/etc/vsftpd.conf添加下面几项:

chroot_local_user=YES   #把本地用户限制在自己的home文件夹中,这样子登录之后就不能访问自己home之外的文件了,这样子是出于安全上的考虑
anonymous_enable=YES    #开启匿名访问
anon_root=/var/ftp/anon #指定匿名登录后的根文件夹,也就是对于匿名用户,会把/var/ftp/anon映射为它的根目录,

3.
建立本地虚拟用户

就像上面的分析的,我需要三个用户stu、teacher、admin,分别赋予不同的权限,那我们就要开始建立虚拟用户了。我们要先在系统上建建立一个真实的用户(guest),以供ftp的虚拟用户进行映射。但是为了安全其间,我们要让这个新建的用户并不能登录Ubuntu,这样子我们就可以把ftp的用户和ubuntu系统的用户分隔开来了,即使你ftp的密码丢了,也不会对你的系统造成太大的影响

而建立虚拟用户主要与下面两项相关(在vsftpd.conf里加上下面两句):

guest_enable=YES            #开启虚拟用户
guest_username=guest        #把虚拟用户映射到哪个本地用户上,这个是可以自定义的,我取guest.

建立本地不能登录的用户

[email protected]:/# sudo useradd guest -d /var/ftp -s /bin/nologin

其中 -s /bin/nologin是为禁止使用guest登录ubuntu

接着新建guest及其他用户的的登录目录:

[email protected]:/# sudo mkdir /var/ftp/guest
[email protected]:/# sudo mkdir -p /var/ftp/anon /var/ftp/admin /var/ftp/teacher /var/ftp/stu

修改目录权限,让/var/ftp目录的属主是guest,要不然会登录不上的。

[email protected]:/#  chown  guest:guest -R /var/ftp

4.建立ftp虚拟用户及认证文件

4.1新建一些必要的配置文件

在ubuntu中,vsftpd的所有的配置文件都是直接放在/etc目录下面的,这样子不方便管理,还有备份的时候也不方便,所以我就再建一个文件夹,专门来放那些配置文件:

sudo mkdir /etc/vsftpd
sudo touch /etc/vsftpd/stu  /etc/vsftpd/admin  /etc/vsftpd/teacher

4.
2 建立用户数据库ftpguests

因为我们要用ftp虚拟用户登录ftp服务器,这些ftp虚拟用户又是映射到前面新建的guest本地用户的,但是虚拟用户又不归Ubuntu系统管理,它们不是用useradd命令生成的。而是需要我们专门建立一个存放这些虚拟用户及它们密码的数据库ftpguests。这个数据库的格式是一行放用户名,一行对应它的密码,一个数据库文件中可以存放多个用户名及其密码。

ftpguests文件内容如下 cat
ftpguests :

[email protected]:/home/uftp# cat ftpguests
stu
stu
teacher
teacher
admin

4.3生成用户数据库ftpguests.db:

安装数据库生成工具db-util:

sudo apt-get install db-util

把上一步建立的用户文件生成数据库,并放到/etc/vsftpd/文件夹中:

sudo db_load -T -t hash -f ftpguests /etc/vsftpd/ftpguests.db

修改用户数据库的权限

sudo chmod 600 /etc/vsftpd/ftpguests.db

4.4修改pam认证文件:

vsftpd借助PAM认证工具来帮忙认证了,我们的本地用户登录ftp也是需要PAM来帮忙的。安装vsftpd的时候,它会有/etc/pam.d/目录里生成一个认证的配置文件:vsftpd ,而之前的vsftpd.conf里的选项
pam_service_name=vsftpd 指的正是PAM使用/etc/pam.d/下的vsftpd配置文件来认证。

在/etc/pam.d/vsftpd的第一行处添加下面的内容,

auth sufficient pam_userdb.so db=/etc/vsftpd/ftpguests
                    account sufficient pam_userdb.so db=/etc/vsftpd/ftpguests

说明:上面的内容一定要放在第一行,要不然不能同时支持虚拟用户和本地用户的,这一步是关键。上面的/etc/vsftpd/ftpguests文件指的就是我们刚刚生成的用户数据库。另外,这里选择sufficient而不是required的原因是,sufficient表示充分条件,可以让vsftpd同时支持虚拟用户和本地用户。

添加后的/etc/pam.d/vsftpd的文件是这样子的:

4.5建立每个虚拟用户的配置文件

为每个虚拟用户(stu、teacher、admin)建立它们各自的配置文件,以便对不同的用户进行不同的权限分配。可以理解成虚拟用户的配置文件是对vsftpd.conf的扩展,vsftpd.conf是对全局的控制,而每个虚拟用户的配置文件则是方便进行更精细、更个性的控制。

stu用户的配置文件:只能在自己的home目录下进行上传操作,并且不能下载,不能查看其它用户上传的内容,也不能修改。

cat /etc/vsftpd/stu | grep -v ‘^#‘
local_root=/var/ftp/stu
write_enable=YES	        #可以进行写操作,是下面设置的基础
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES	#可以创建文件夹

download_enable=NO	        #不能下载

teacher用户的配置文件:可以在自己的home目录里上传、下载文件,也可对文件夹重命名,拥有所有权限

cat /etc/vsftpd/teacher | grep -v ‘^#‘
local_root=/var/ftp/teacher
anon_world_readable_only=NO         #对文件夹是否有读的权限,为YES时,没有读的权限,为NO时,可以查看文件夹内有哪些文件
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES         #可以对文件夹进行修改

admin用户的配置文件:可以对teacher,stu进行任何操作。它与teacher是不同在于local_root指定的文件夹包含了stu和teacher的home目录

cat /etc/vsftpd/admin | grep -v ‘^#‘
local_root=/var/ftp
anon_world_readable_only=NO
write_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES

4.6全局配置文件/etc/vsftpd.conf:

现在再一次修改vsftpd.conf,该文件的内容为:

listen=YES
anonymous_enable=YES
local_enable=YES
local_root=/home/crazier         #把本地用户的登录目录限制在/home/crazier,这个根据你自己的要求进行修改
anon_root=/var/ftp/anon          #把匿名用户限制在/var/ftp/anon目录里
dirmessage_enable=YES
xferlog_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
chroot_local_user=YES            #为了安全期间,开启用户的监牢限制
guest_enable=YES                 #开启vsftpd对虚拟用户的支持
guest_username=guest             #把虚拟用户映射到本地用户guest,这个值取决于 (第3步:  建立本地虚拟用户)中的值
user_config_dir=/etc/vsftpd      #指定虚拟用户的配置文件所有的目录,确保/etc/vsftpd文件夹里有(第4.5步:建立每个虚拟用户的配置文件)中生成的stu teacher、 admin 文件
pam_service_name=vsftpd          #指定PAM使用的配置文件,在/etc/pam.d文件夹里
secure_chroot_dir=/var/run/vsftpd/empty
use_localtime=YES
rsa_cert_file=/etc/ssl/private/vsftpd.pem

另外几个比较实用的命令

1、重启vsftpd服务

service vsftpd restart

2、查看vsftpd服务状态

service vsftpd status

3、如果vsftpd服务状态为 stop/waiting可以使用一下命令查看具体原因

/usr/sbin/vsftpd

安利

Ubuntu 命令技巧: http://wiki.ubuntu.org.cn/index.php?title=UbuntuSkills&variant=zh-cn

Ubuntu 桌面指南: https://help.ubuntu.com//

感谢Crazier的分享




				
时间: 2024-10-02 07:17:32

Ubunton下搭建ftp服务器 实现虚拟用户、本地用户、匿名用户的登陆及权限的相关文章

CentOS6.5下搭建ftp服务器(三种认证模式:匿名用户、本地用户、虚拟用户)

CentOS 6.5下搭建ftp服务器 vsftpd(very secure ftp daemon,非常安全的FTP守护进程)是一款运行在Linux操作系统上的FTP服务程序,不仅完全开源而且免费,此外,还具有很高的安全性.传输速度,以及支持虚拟用户验证等其他FTP服务程序不具备的特点,下面开始搭建: 1.用root 进入系统 2.使用命令 rpm  -qa | grep vsftpd 查看系统是否安装了ftp,若安装了vsftp,使用这个命令会在屏幕上显示vsftpd的版本 3.如果安装了,可

RedHat5.9下搭建FTP服务器

FTP服务:基于C/S结构的文件传输协议 FTP会话属于复合TCP连接: 控制连接:TCP 21端口,发送FTP命令信息 数据连接:TCP 20端口,上传/下载数据 实验环境: Linux Client -----RHEL5.9(vmnet1)----------(vmnet1) Win7 Client 一. 实验要求:配置可匿名上传FTP服务 1.安装软件包 [[email protected] ~]# rpm -q vsftpd package vsftpd is not installed

ubuntu12.04下搭建ftp服务器

楼主想把同学硬盘里面的200多G电影共享给实验室的小伙伴们看,就打算在内网服务器上搭建一个ftp的服务器. 1.安装ftp 首先在终端下键入如下内容,安装ftp服务器: sudo apt-get install vsftpd 2.配置ftp 修改ftp的配置文件,该文件在/etc目录下,在终端中键入如下命令以打开配置文件: sudo gedit /etc/vsftpd.conf 简单的修改以下几个配置项即可: #禁止匿名访问 anonymous_enable=NO #接受本地用户 local_e

Windows下搭建FTP服务器

以Windows8 为例,介绍一下搭建 FTP服务器的步骤: 1.为Windows开启FTP功能:控制面板->程序->启用或关闭Windows功能,将下图所示的复选框选中 2.添加FTP站点:右键计算机->管理->服务和应用程序,选择Internet 信息服务 IIS 管理,如下图所示添加FTP站点 3.设置站点名称和你想要公开的路径 4.绑定地址和ssl设置: ip地址填上本机地址,端口默认21,需要ssl,证书选择IIS Express Development Certific

CentOS 下搭建FTP服务器

vsftpd是Linux下比较著名的FTP服务器,搭建FTP服务器当然首选这个.本文介绍了在CentOS 6 4下安装vsftpd.配置虚拟用户登录FTP的过程.正 vsftpd是Linux下比较著名的FTP服务器,搭建FTP服务器当然首选这个. 本文介绍了在CentOS 6.4下安装vsftpd.配置虚拟用户登录FTP的过程. 正文: 一:安装vsftpd 查看是否已经安装vsftpd 1 2 3 4 rpm -qa | grep vsftpd #如果没有,就安装,并设置开机启动 yum -y

Win7操作系统下搭建FTP服务器

一.创建访问FTP服务器的用户 1.[开始]→鼠标右键[计算机]→[管理],弹出计算机管理会话框,选择[本地用户和组],鼠标右键[用户],选择[新用户] 2.输入用户名.密码和确认密码,勾选[密码永不过期],点击[创建],点击[关闭]关闭窗口.这样在[本地用户和组]下,双击[用户],就可以看到刚才建立的用户了. 二.开启FTP服务 1.[开始]→[控制面板]→[程序]→[打开或关闭Windows功能],打开Windows功能会话框. 2.勾选[Internet信息服务]下[FTP服务器]所有子项

Linux上的ftp服务器vsftpd之配置满天飞--设置匿名用户访问(不弹出用户名密码框)以及其他用户可正常上传

一.问题背景 没事谁折腾这鬼玩意哦...还不是因为bug. 我们的应用,用户头像是存在ftp上的.之前的ftp服务器是一台windows,我们后台服务器程序收到用户上传头像的请求时,会用一个ROOT/ROOT的账户,连接ftp服务器. 获取到连接后,即进行上传. 上传:上传文件则存放在ROOT用户的home 目录(在windows上装的是server-U来充当ftp服务器,所以就是在Server-U里面配置了ROOT用户的home目录). 上传完成后,会得到一个ftp协议类型的url.范例如:

Linux 下搭建ftp服务器 指定用户指定目录及其他操作

搭建 Linux下 rpm -qa |grep vsftpd查看是否安装 没安装yum安装 /etc/vsftpd/目录下有vsftpd.conf配置文件 根据需求 进行配置  是否使用匿名用户以及文件目录权限是否可写等等 给用户指定目录的话 在命令行下进行配置   useradd -d /root/123 user123  给user123用户指定目录 /root/123 然后给该用户添加密码  passwd user123 连接ftp后进行文件的上传或其他操作  提示“could not c

Centos下搭建ftp服务器

一.  FTP 说明 linux 系统下常用的FTP 是vsftp, 即Very Security File Transfer Protocol. 还有一个是proftp(Profession ftp). 我们这里也是简单的说明下vsftp的配置. vsftp提供3种远程的登录方式: (1)匿名登录方式 就是不需要用户名,密码.就能登录到服务器电脑里面 (2)本地用户方式 需要帐户名和密码才能登录.而且,这个帐户名和密码,都是在你linux系统里面,已经有的用户. (3)虚拟用户方式 同样需要用