ftp匿名用户,虚拟用户,配置文件参数含义

作者: 不详 2014/2/20 19:04:55

网络文件共享的几种方式

HTTP NFS(unix like) SAMBA FTP

vsftpd (Very Secure FTP)

ftp需要两个端口

21:命令端口

20:数据端口

是一种跨平台的文件传输工具。

ftp有两种传输模式

1、主动模式

服务器的端口:21,20

2、被动模式

服务器的端口:21,随机端口

ftp主动模式和被动模式的区别:

主动模式:

主动模式的过程:

任何端口到FTP服务器的21端口(客户端初始化的连接 S<-C)

FTP服务器的21端口到大于1023的端口(服务器响应客户端的控制端口S->C)

FTP服务器的20端口到大于1023的端口(服务器端初始化数据连接到客户端的数据端口 S->C)

大于1023端口到FTP服务器的20端口(客户端发送ACK响应到服务器的数据端口 S<-C)

当用户登录到ftp服务器的时候,匿名用户进入到/var/ftp,系统帐户进入到自己的家目录

ftp的被动模式

从任何端口到服务器的21端口(客户端初始化的连接 S<-C)

服务器的21端口到任何大于1023的端口(服务器响应到客户端的控制端口的连接 S->C)

从任何端口到服务器的大于1023端口(入;客户端初始化数据连接到服务器指定的任意端口 S<-C)

服务器的大于1023端口到远程的大于1023的端口(出;服务器发送 ACK响应和数据到客户端的数据端口 S->C)

软件安装:

#yum install vsftpd -y

服务启动:

#servicevsftpd start

#/etc/init.d/vsftpdstart

#chkconfigvsftpd on

# netstat -antulp | grep vsftpd

tcp  0   0 0.0.0.0:21     0.0.0.0:*       LISTEN      28997/vsftpd

配置文件的位置:

/etc/vsftpd/vsftpd.conf

在编辑配置文件之前,最好备份一份,以防万一

ftp配置的目标:

1、搞定匿名帐户的访问

2、本地帐户

3、虚拟帐户

匿名用户访问:

#vi /etc/vsftpd/vsftpd.conf

12anonymous_enable=YES   //允许匿名用户登录

//匿名用户指的是: ftpanonymous

28anon_upload_enable=YES //匿名用户可以上传

#cd /

# touch a

# ftp localhost

Connected to localhost.localdomain.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (localhost:root): ftp

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

227 Entering Passive Mode (127,0,0,1,50,241)

150 Here comes the directory listing.

drwxr-xr-x   2 0        0            4096 Oct 13 13:29 pub

226 Directory send OK.

ftp> cd pub

250 Directory successfully changed.

ftp> ls

227 Entering Passive Mode (127,0,0,1,191,136)

150 Here comes the directory listing.

226 Directory send OK.

ftp> put a

local: a remote: a

227 Entering Passive Mode (127,0,0,1,192,96)

553 Could not create file.

ftp> quit

221 Goodbye.

允许匿名用户上传但是为什么上传不了文件呢?

还必须看目录有没有可写权限。

# chmod 777 /var/ftp/pub

# ftp localhost

Connected to localhost.localdomain.

220 (vsFTPd 2.0.5)

530 Please login with USER and PASS.

530 Please login with USER and PASS.

KERBEROS_V4 rejected as an authentication type

Name (localhost:root): ftp

331 Please specify the password.

Password:

230 Login successful.

Remote system type is UNIX.

Using binary mode to transfer files.

ftp> ls

227 Entering Passive Mode (127,0,0,1,200,175)

150 Here comes the directory listing.

drwxrwxrwx   2 0        0            4096 Oct 13 13:29 pub

226 Directory send OK.

ftp> cd pub

250 Directory successfully changed.

ftp> put a

local: a remote: a

227 Entering Passive Mode (127,0,0,1,168,25)

150 Ok to send data.

226 File receive OK.

ftp> quit

221 Goodbye.

----------------------------------------------

本地帐户

指的就是服务器本身的拥有的帐号

vim/etc/vsftpd/vsftpd.conf

anonymouns_enable=NO

#anon_upload_enable=YES

15  local_enable=YES

//本地帐户认证方式启动

18  write_enable=YES

//表示开启写权限

22  local_umask=022

//表示上传文件的权限掩码

/etc/init.d/vsftpdrestart

ftplocalhost

ftp>cd /etc

ftp>pwd

/etc

那么这个时候,就可以下载u1拥有权限的任意文件。用户u1可以随意切换所在目录

解决用户瞎溜达的问题?

vim/etc/vsftpd/vsftpd.conf

96  chroot_list_enable=YES

98  chroot_list_file=/etc/vsftpd/chroot_list

vim /etc/vsftpd/chroot_list

u1

u2

//表示这是一个关于chroot的黑名单,凡是在chroot_list中出现的用户名

//都会实现chroot的限制

限制所有的本地用户:

vim/etc/vsftpd/vsftpd.conf

chroot_local_user=YES

限制用户chroot的白名单设置:

vim/etc/vsftpd/vsftpd.conf

chroot_local_user=YES

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/chroot_list

//chroot_list文件中,列出不进行chroot限制的用户列表

ftp

虚拟帐户

具体实现:

1.通过创建本地数据库实现虚拟用户

#yum   install db4-utils -y

创建一个用于映射虚拟用户的真实用户:

#useradd -d /var/ftp/vuserdir -s /sbin/nlogin  vuser

2.修改配置文件:

#vim/etc/vsftpd/vsftpd.conf

guest_enable=YES

guest_username=vuser

3.生成虚拟用户文件

#vim/etc/vsftpd/vftpuser.txt

neo

123

mike

456

4.生成虚拟用户数据文件

#db_load -T -t hash -f /etc/vsftpd/vftpuser.txt/etc/vsftpd/vftpuser.db

#chmod600 /etc/vsftpd/vftpuser.db

5.创建一个新的pam认证程序

vim/etc/pam.d/vsftpd1

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

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

#vim /etc/vsftpd/vsftpd.conf

pam_service_name=vsftpd1

/etc/init.d/vsftpdrestart

登录之后,出现这样的问题:

226Transfer done (but failed to open directory).

修改配置文件:

vim/etc/vsftpd/vsftpd.conf

anon_world_readable_only=NO

额外的ftp配置:

vim/etc/vsftpd/vsftpd.conf

ftpd_banner=Welcometo uplooking ftp service

anon_max_rate=100  (单位是字节)

max_clients=1

deny_file={*.ext,*.dll}

关于用户访问控制的两个文件:

user_list

ftpusers

综合练习:

在一台主机上创建三个基于域名的虚拟主机,每个主机的磁盘配额为80M,90M,100M,使用ftp分别管理三个虚拟主机,每个虚拟主机的管理员,只能管理自己的虚拟主机。要求,每个网站的磁盘具有高性能,高可靠性,并且可以磁盘扩展。

特别推荐

玩家留言 跟帖评论
查看更多评论