linux vsftp 虚拟用户配置方法

linux vsftp 虚拟用户配置方法,第1张

虚拟用户的特点是只能访问服务器为其提供的FTP服务,而不能访问系统的其它资源。所以,如果想让用户对FTP服务器站内具有写权限,但又不允许访问系统其它资源,可以使用虚拟用户来提高系统的安全性。

在VSFTP中,认证这些虚拟用户使用的是单独的口令库文件(pam_userdb),由可插入认证模块(PAM)认证。使用这种方式更加安全,并且配置更加灵活。

下面介绍配置过程。

1.生成虚拟用户口令库文件。为了建立此口令库文件,先要生成一个文本文件。该文件的格式如下,单数行为用户名,偶数行为口令:

#viaccounttxt

ylg

1234

zhanghong

4321

gou

5678

2.生成口令库文件,并修改其权限

#db_load-T-thash-f/accounttxt/etc/vsftpd/accountdb

#chmod600/etc/vsftpd/accountdb

3.新建一个虚拟用户的PAM文件。加上如下两行内容

#vi/etc/pamd/vsftpvu

authrequired/lib/security/pam_userdbsodb=/etc/vsftpd/account

accountrequired/lib/security/pam_userdbsodb=/etc/vsftpd/account

4.建立虚拟用户,设置该用户所要访问的目录,并设置虚拟用户访问的权限

#useradd-d/home/ftpsitevirtual_user

#chmod700/home/ftpsite

经过该步骤的设置,/home/ftpsite就是virtual_user用户的主目录,该用户也是ftpsite目录的拥有者。除root用户之外,只有该用户具有对该目录的读、写和执行的权限。

5.编辑/etc/vsftpd/vsftpdconf文件,使其整个文件内容如下所示(去掉了注释内容):

anonymous_enable=NO

local_enable=YES

local_umask=022

xferlog_enable=YES

connect_from_port_20=YES

xferlog_std_format=YES

listen=YES

write_enable=YES

anon_upload_enable=YES

anon_mkdir_write_enable=YES

anon_other_write_enable=YES

one_process_model=NO

chroot_local_user=YES

ftpd_banner=WelcomtomyFTPserver

anon_world_readable_only=NO

guest_enable=YES

guest_username=virtual_user

pam_service_name=vsftpvu

上面代码中,guest_enable=YES表示启用虚拟用户;guest_username=virtual则是将虚拟用户映射为本地用户,这样虚拟用户登录后才能进入本地用户virtual的目录/ftpsite;pam_service_name=vsftpvu指定PAM的配置文件为vsftpvu。

6.重新启动VSFTP

#servicevsftpdrestart

7.以虚拟用户gou(Linux中并无该账号)进行测试

#ftp127001

Connectedto127001(127001)

220WelcomtomyFTPserver

Name(127001:root):gou

331Pleasespecifythepassword

Password:

230LoginsuccessfulHavefun

RemotesystemtypeisUNIX

Usingbinarymodetotransferfiles

在虚拟FTP服务器中,也可以对各个用户的权限进行设置。方法是在/etc/vsftpdconf文件中添加如下一行:

user_config_dir=用户配置文件目录

然后在用户配置文件目录下创建相应的用户配置文件,比如为上述名为gou的用户创建一个配置文件(假设配置文件目录为/etc/vsftpd_user_conf):

#vi/etc/vsftpd_user_conf/gou

write_enable=NO

anono_upload_enable=NO

8虚拟用户个人目录设置

大家可以发现,无论是哪个虚拟用户,登录后所在的目录都是/home/ftpsite,即都是guest用户的自家目录。下面,介绍如何为每个虚拟用户建立自家目录。

一种作法是在虚拟用户的个人配置文件中使用local_root选项指定虚拟用户的自家目录。以gou为例,在第上步的基础上,首先/etc/vsftpd_user_conf/gou文件中加入:

local_root=/home/ftpsite/gou

/home/ftpsite下新建gou目录,并将权限设为virtual_user:

9添加FTP用户的步骤

1在accounttxt中添加用户名和密码

2运行如下命令,将用户名和密码添加到数据库中

db_load-T-thash-f/accounttxt/etc/vsftpd/accountdb

3在/home/ftpsite中新建一个文件夹,与用户明相同

4在vsftpd_user_conf文件夹下新建和用户名相同的文件,并在其中加入

local_root=/home/ftpsite/用户名

1、Linux系统下vsftp安装。

2、Linux系统下打开ftp配置文件。

3、Linux系统下编辑配置文件。

4、Linux系统下启动vsftpd服务。

5、Linux系统下关闭防火墙,关闭selinux。

6、Linux系统下建立测试帐号jiang。

7、Linux系统下登录访问。

8、Linux系统下本地用户默认有上传权限,如上传ceshi目录。

一、下载vsftpd软件

sudo apt-get install vsftpd

我这里已经是安装过了

二、配置vsftpdconf文件,这里是不允许匿名登录的情况

1、进入etc目录

cd /etc/

2、进入编辑

sudo vi vsftpdconf

3、去掉Listen=YES  anonymous_enable=NO  local_enable=YES  write_enable=YES前面的#号

要注意的是,如果你没有涉及到ipv6地址,listen_ipv6=YES记得要注释掉,不然的话会出现connection refused,至少我是这样了TAT

      

4、在文件末尾插入

pasv_min_port=10060

pasv_max_port=10090

              此为vsftpd被动模式(pasv)的端口范围

     5、保存退出

三、添加FTP用户

1、在一个合适的地方创建文件夹,这个文件夹作为用户的根目录,并设置好权限。例如:/home/ubuntu/ftp

        2、执行如下语句添加用户(username为用户名)

sudo useradd -d /home/ubuntu/ftp -s /bin/bash username

3、执行如下语句设置密码(username为用户名)

sudo passwd username

四、启动ftp服务

sudo service vsftpd start

五、Enjoy!

第一步:打开终端(快捷键是Ctrl+Alt+t),如果当前用户不是root用户,请输入命令“su”,然后输入root账户密码即可;

第二步:输入命令“apt-get update”,这一步是为了更新下载的数据源,如果不更新可能造成有几个后面的软件包无法下载;

第三步:输入命令“apt-get install vsftpd”完成安装vsftpd;

第四步:判断vsftp是否安装成功,输入命令“service vsftpd restart”重启vsftpd服务,如果他在运行状态说明安装成功;

第五步:新建“/home/uftp”目录作为用户主目录,输入命令“mkdir /home/uftp”回车 ,然后输入命令“ls /home”查看home目录下有uftp这个目录吗,如果有就是创建成功;

第六步:新建用户uftp并且设置密码,输入命令“useradd -d /home/uftp -s /bin/bash uftp”

回车,然后再输入命令“passwd uftp”回车,然后输入两次密码就设置ok了

第七步:使用vi修改配置文件/etc/vsftpdconf,输入命令“vi /etc/vsftpdconf”回车,

向文件中添加“userlist_deny=NO””userlist_enable=YES”, “userlist_file=/etc/allowed_users”,

“seccomp_sandbox=NO”,最后把文件中的“local_enable=YES”保存(如果提示无法保存,直接退出来,把读写和执行权限给这个文件,具体操作为:输入命令: “chmod 777 /etc/vsftpdconf”回车就可以了);

第八步:新建文件/etc/allowed_users,输入命令“vi /etc/allowed_users”,打开后再这个文件内写入“uftp”保存即可;《Linux就该这么学》

第九步:查看/etc/ftpusers文件(不能访问ftp服务用户清单)的内容,输入命令“vi /etc/ftpusers”回车,如果里面有uftp,就把他删除;

第十步:安装winscp软件,进行远程登录访问;下载直接在百度下载就行

Linux VPS用户一般都通过SFTP/SCP协议连接OpenSSH Server进行文件传输,但有时候,你希望某些用户只能上传文件到网站目录,而不能够登录系统执行命令以及访问其他目录,这时用FTP Server就能很好地实现Linux上常用的FTP Server有VSFTPD和ProFTPD,其中ProFTPD简单易用,功能也不错,这里以ProFTPD为例搭建FTP服务器当然,FTP也可以作为局域网内文件共享的一种方式,比如你的室友使用Windows,向你的Ubuntu ProFTPD个人电脑上传了一部影片,这样就不用拿U盘去拷贝了,其他室友也可以从你的ProFTPD上下载影片

proftpd的配置方式类似apache,比vsftpd更易用,xampp就集成了proftpd

代码如下:

sudo apt-get install proftpd-basic

安装时默认作为一个standalone server运行proftpd,如果每天的ftp请求量少,可以安装为inetd服务,节省服务器资源

这里我使用默认值,安装为standalone server

代码如下:

sudo netstat -antp|grep proftpd

查看proftpd监听的21端口

用proftpd提供的ftpasswd新建虚拟用户test并设置密码:

代码如下:

sudo mkdir -p /png/proftpd

代码如下:

sudo ftpasswd \

--passwd \

--file=/png/proftpd/passwd \

--name=test \

--uid=122 \

--gid=65534 \

--home=/srv/ftp \

--shell=/bin/false

其中uid和gid我使用的是安装proftpd时自动创建的系统用户ftp:nogroup的uid和gid,执行cat /etc/passwd|grep ftp可见

/srv/ftp是安装proftpd时自动创建的目录,所有者为ftp:nogroup,权限为755

这样虚拟用户test以系统用户ftp:nogroup登录/srv/ftp便可以对该目录进行读写

Linux上的FTP Server的读写权限是映射到系统UGO(User Group Other)上的

创建虚拟用户时通过设置系统用户uid和gid,以及合理地配置/srv/ftp目录及其文件权限来实现读写控制

创建新用户时再次执行上述命令即可,根据需要改变一些参数

比如我创建了一个以uid:gid为1000:1000的系统用户运行,登录目录为/png/www/examplecom的虚拟用户eechen:

代码如下:

sudo ftpasswd \

--passwd \

--file=/png/proftpd/passwd \

--name=eechen \

--uid=1000 \

--gid=1000 \

--home=/png/www/examplecom \

--shell=/bin/false

创建用户不需要重载proftpd,因为proftpd每次认证时都会读取认证文件

代码如下:

sudo chown proftpd:nogroup /png/proftpd/passwd 设置passwd文件读写权限,确保proftpd能读取该文件

代码如下:

sudo nano /etc/proftpd/proftpdconf

在末尾加入:

代码如下:

DefaultRoot ~  #将用户限定在自己的目录中,上面test用户对应的就是/srv/ftp

RequireValidShell off  #禁用Shell请求认证

AuthOrder mod_auth_filec  #认证方式顺序,这里采用文件认证

AuthUserFile /png/proftpd/passwd  #存放用户名和密码的文件

代码如下:

sudo service proftpd reload

重载使配置生效。

更改proftpd的默认端口

在文件/etc/proftpdconf找到:

代码如下:

Port 21

更改为:

代码如下:

Port 2121

如果开启了iptables,iptables限制了所有的出站端口,加载模块ip_conntrack_ftp,这时在加载ip_conntrack_ftp模块时需要更改代理端口为2121。

打开/etc/sysconfig/iptables-config,保证此文件定义加载了ip_conntrack_ftp,如:

代码如下:

IPTABLES_MODULES="ip_conntrack_ftp"

然后在文件/etc/modprobeconf增加此模块的参数:

代码如下:

options ip_conntrack_ftp ports=2121

如果需要手动加载,则可以执行以下命令:

代码如下:

/sbin/modprobe ip_conntrack_ftp ports=2121

 它可运行在Linux、Solaris等系统中,支持很多其他的FTP 服务器不支持的特征:

 非常高的安全性需求

 带宽限制

 良好的可伸缩性

 创建虚拟用户的可能性

 分配虚拟IP地址的可能性

 一、vsftpd的启动

 #service vsftpd start

 如果允许用户匿名访问,需创建用户ftp和目录/var/ftp

 # mkdir /var/ftp

 # useradd –d /var/ftp ftp

二、vsftpd的配置

 Vsftpd的配置文件存放在/etc/vsftpd/vsftpdconf 我们可根据实际数要对如下信息进行配置:

 1 连接选项

 ☆监听地址和控制端口

 (1) listen_address=ip address

 定义主机在哪个IP 地址上监听FTP请求。即在哪个IP地址上提供FTP服务。

 (2) listen_port=port_value

 指定FTP服务器监听的端口号。默认值为21。

2 性能与负载控制

 ☆超时选项

 (1) idle_session_timeout=

 空闲用户会话的超时时间,若是超过这段时间没有数据的传送或是指令的输入,则会被迫断线。默认值是300s

 (2) accept_timeout=numerical value

 接受建立联机的超时设定。默认值为60s

 ☆负载选项

 (1) max_clients= numerical value

 定义FTP服务器最大的兵法连接数。当超过此连接数时,服务器拒绝客户端连接。默认值为0,表示不限最大连接数。

 (2) max_per_ip= numerical value

 定义每个IP地址最大的并发连接数目。超过这个数目将会拒绝连接。此选项的设置将会影响到网际快车、迅雷之类的多线程下载软件。默认值为0,表示不限制。

 (3) anon_max_rate=value

 设定匿名用户的最大数据传输速度,以B/s为单位。默认无。

 (4) local_max_rate=value

 设定用户的最大数据传输速度。以B/s为单位。默认无。此选项对所有的用户都生效。

 3 用户选项

 vsftpd的用户分为3类:匿名用户、本地用户(local user)及虚拟用户(guest)

 ☆ 匿名用户

 (1) anonymous_enable=YES|NO

 控制是否允许匿名用户登录

 (2) ftp_username=

 匿名用户使用的系统用户名。默认情况下,值为ftp

 (3) no_anon_password= YES|NO

 控制匿名用户登录时是否需要密码。

 (4) anon_root=

 设定匿名用户的根目录,即匿名用户登录后,被定位到此目录下。主配置文件中默认无此项,默认值为/var/ftp/

 (5) anon_world_readable_only= YES|NO

 控制是否只允许匿名用户下载可阅读的文档。YES,只允许匿名用户下载可阅读的文件。NO,允许匿名用户浏览整个服务器的文件系统。

 (6) anon_upload_enable= YES|NO

 控制是否允许匿名用户上传文件。除了这个参数外,匿名用户要能上传文件,还需要两个条件,write_enable参数为YES;在文件系统上,FTP匿名用户对某个目录有写权限。

 (7) anon_mkdir_wirte_enable= YES|NO

 控制是否允许匿名用户创建新目录。在文件系统上,FTP匿名用户必须对新目录的上层目录拥有写权限。

 (8) anon_other_write_enbale= YES|NO

 控制匿名用户是否拥有除了上传和新建目录之外的`其他权限。如删除、更名等。

 (9) chown_uploads= YES|NO

 是否修改匿名用户所上传文件的所有权。YES,匿名用户上传得文件所有权改为另一个不同的用户所有,用户由chown_username参数指定。

 (10) chown_username=whoever

 指定拥有匿名用户上传文件所有权的用户。

 ☆本地用户

 (1) local_enable= YES|NO

 控制vsftpd所在的系统的用户是否可以登录vsftpd。

 (2) local_root=

 定义本地用户的根目录。当本地用户登录时,将被更换到此目录下。

 ☆虚拟用户

 (1) guest_enable= YES|NO

 启动此功能将所有匿名登入者都视为guest

 (2) guest_username=

 定义vsftpd的guest用户在系统中的用户名。

4 安全措施

 ☆用户登录控制

 (1) /etc/vsftpdftpusers

 Vsftpd禁止列在此文件中的用户登录FTP服务器。此机制是默认设置的。

 (2) userlist_enable= YES|NO

 此选项激活后,vsftpd将读取userlist_file参数所指定的文件中的用户列表。

 (3) userlist_file=/etc/vsftpduser_list

 指出userlist_enable选项生效后,被读取的包含用户列表的文件。默认值是/etc/vsftpduser_list

 (4) userlist_deny= YES|NO

 决定禁止还是只允许由userlist_file指定文件中的用户登录FTP服务器。userlist_enable选项启动后才能生效。默认值为YES,禁止文中的用户登录,同时不向这些用户发出输入口令的指令。NO,只允许在文中的用户登录FTP服务器。

 ☆目录访问控制

 (1) chroot_list_enable= YES|NO

 锁定某些用户在自己的目录中,而不可以转到系统的其他目录。

 (2) chroot_list_file=/etc/vsftpd/chroot_list

 指定被锁定在主目录的用户的列表文件。

 (3) chroot_local_users= YES|NO

 将本地用户锁定在主目中。

按下列步骤开启设置LINXU中的FTP服务:

1、开启linuxh环境下的FTP service

过程如下:

输入命令:

/etc/rcd/initd/vsftpd start

/etc/rcd/initd/vsftpd restart

若要关闭这个服务:

/etc/rcd/initd/ vsftpd stop

2、配置文件:

进入/etc配置vsftpdftpusers和vsftpduser_list,用vi打开他们,将这两个文件里的root给去掉,保存退出。

3、此时可以打开flshFXP,快速连接,输入IP地址、用户名及密码就可以连接linux系统的FTP服务器。

4、vsftpd的配置

在Red Hat Linux 里的vsftpd共有3个配置文件,它们分别是:

vsftpdftpusers:位于/etc目录下。它指定了哪些用户账户不能访问FTP服务器,例如root等。

vsftpduser_list:位于/etc目录下。该文件里的用户账户在默认情况下也不能访问FTP服务器,仅当vsftpd conf配置文件里启用userlist_enable=NO选项时才允许访问。

vsftpdconf:位于/etc/vsftpd目录下。它是一个文本文件,我们可以用Kate、Vi等文本编辑工具对它进行修改,以此来自定义用户登录控制、用户权限控制、超时设置、服务器功能选项、服务器性能选项、服务器响应消息等FTP服务器的配置。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » linux vsftp 虚拟用户配置方法

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情