首页 > 代码库 > [计算机网络] vsftpd的安装与使用

[计算机网络] vsftpd的安装与使用

简介:

vsftpd是一个可以运行在类UNIX操作系统上的FTP服务器软件,它可以运行在Linux、BSD、Solaris、HP-UX等系统上。


1 vsftpd的安装

在ubuntu系统上安装vsftpd:

sudo apt-get install vsftpd

2 vsftpd的配置

在linux系统中,配置文件一般位于/etc目录下,在ubuntu中,vsftpd的配置文件是/etc/vsftpd.conf。

FTP服务一般是供文件共享之用,一般在登陆FTP服务器时需要输入用户名和密码,其中有一种用户叫做匿名用户,也就是任何人都可以用这个用户名进行登陆,匿名用户的用户名一般是anonymous或者ftp。

vsftpd安装之后,默认是不准匿名用户登陆的,为了使匿名用户登陆,可以对/etc/vsftpd.conf进行修改,主要是下面几个部分的修改:

//允许匿名用户登陆,默认关闭
anonymous_enable=YES
//允许本地用户登陆
local_enable=YES
//允许写命令
write_enable=YES
//允许匿名用户上传
anon_upload_enable=YES
//允许匿名用户创建目录
anon_mkdir_write_enable=YES
//设定匿名用户的文件创建屏蔽字
anon_umask=022

之后,发现可以下载,但是不能上传,使用put命令时会发生553 Could not create file,原因是没有对FTP服务器的目录进行权限修改:

由于不同系统上,FTP服务器所使用的目录是不一样的,使用下面的命令可以知道FTP服务器所使用的目录:

cat /etc/passwd | grep ftp |awk -F: '{print $6}'

在我的系统上是/srv/ftp,于是用下面的命令对该文件的权限进行修改:

sudo chmod 777 /srv/ftp
发现登陆后,会出现以下错误:

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

这是由于文件的安全问题而引起的,解决办法是,在/srv/ftp下面新建一个文件夹,将它的权限修改为777,之后的上传操作都在这个文件夹中进行。


3 vsftpd的使用

3.1 vsftpd的开启和关闭

//开启vsftpd服务
service vsftpd start

//关闭vsftpd服务
service vsftpd stop

//重启vsftpd
service vsftpd restart

//重新加载配置文件
service vsftpd reload

3.2 vsftpd的登陆和登出

//链接FTP服务器
ftp 127.0.0.1

之后会要求输入用户名和密码,如果是匿名用户,用户名是anonymous或者ftp,密码随意。

如果要退出ftp服务器,在ftp的命令行下输入exit即可。


3.3 上传和下载

在ftp的命令行下输入help可以列出该服务器支持的命令:

ftp> help
Commands may be abbreviated.  Commands are:

!		dir		mdelete		qc		site
$		disconnect	mdir		sendport	size
account		exit		mget		put		status
append		form		mkdir		pwd		struct
ascii		get		mls		quit		system
bell		glob		mode		quote		sunique
binary		hash		modtime		recv		tenex
bye		help		mput		reget		tick
case		idle		newer		rstatus		trace
cd		image		nmap		rhelp		type
cdup		ipany		nlist		rename		user
chmod		ipv4		ntrans		reset		umask
close		ipv6		open		restart		verbose
cr		lcd		prompt		rmdir		?
delete		ls		passive		runique
debug		macdef		proxy		send

上传可以使用send或者put,下载可以使用recv或者get。

//上传文件,将本地的local_file上传到服务器上,命名为remote_file
put local_file remote_file

//下载文件,将服务器上的remote_file下载到本地,命名为local_file
get remote_file local_file