
linux下搭建ftp服务器
下面我就为大家整理了一些Linux认证复习备考资料。希望大家可以从中学习答题方法,让自己的得到进步!最近为了方便目标板与PC机上LINUX之间的通讯,就在LINUX搭建了FTP,工作不难,写个总结。主要经过以下几个步骤:
1.检查是否安装了vsftpd服务器
可以用rpm -q vsftpd命令来查看,若显示"vsftpd-1.1.3-8",则说明系统已经安装vsftpd服务器,若没有则可以在图形环境下单击"主菜单→系统设置→添加删除应用程序"菜单项,在出现的"软件包管理"对话框里确保选中"FTP服务器"选项,然后单击"更新"按钮,按照屏幕提示插入第3张安装光盘即可开始安装。
2.启动/重新启动/停止vsftpd服务
从Red Hat Linux 9.0开始,vsftpd默认只采用standalone方式启动vsftpd服务,方法是在终端命令窗口运行以下命令:
[root@ahpeng root] /etc/rc.d/init.d/vsftpd start
重新启动vsftpd服务:
[root@ahpeng root] /etc/rc.d/init.d/ vsftpd restart
关闭vsftpd服务:
[root@ahpeng root] /etc/rc.d/init.d/ vsftpd stop
3.vsftpd的配置
在Red Hat Linux 9.0里的vsftpd共有3个配置文件,它们分别是:
vsftpd.ftpusers:位于/etc目录下。它指定了哪些用户账户不能访问FTP服务器,例如root等。
vsftpd.user_list:位于/etc目录下。该文件里的用户账户在默认情况下也不能访问
FTP服务器,仅当vsftpd .conf配置文件里启用userlist_enable=NO选项时才允许访问。
vsftpd.conf:位于/etc/vsftpd目录下。它是一个文本文件,我们可以用Kate、Vi等文本编辑工具对它进行修改,以此来自定义用户登录控制、用户权限控制、超时设置、服务器功能选项、服务器性能选项、服务器响应消息等FTP服务器的配置。
(1)用户登录控制
anonymous_enable=YES,允许匿名用户登录。
no_anon_password=YES,匿名用户登录时不需要输入密码。
local_enable=YES,允许本地用户登录。
deny_email_enable=YES,可以创建一个文件保存某些匿名电子邮件的黑名单,以防止这些人使用Dos攻击。
banned_email_file=/etc/vsftpd.banned_emails,当启用deny_email_enable功能时,所需的电子邮件黑名单保存路径(默认为/etc/vsftpd.banned_emails)。
(2)用户权限控制
write_enable=YES,开启全局上传权限。
local_umask=022,本地用户的上传文件的umask设为022(系统默认是077,一般都可以改为022)。
anon_upload_enable=YES,允许匿名用户具有上传权限,很明显,必须启用write_enable=YES,才
可以使用此项。同时我们还必须建立一个允许ftp用户可以读写的目录(前面说过,ftp是匿名用户的映射用户账号)。
anon_mkdir_write_enable=YES,允许匿名用户有创建目录的权利。
chown_uploads=YES,启用此项,匿名上传文件的属主用户将改为别的用户账户,注意,这里建议不要指定root账号为匿名上传文件的属主用户!
chown_username=whoever,当启用chown_uploads=YES时,所指定的属主用户账号,此处的whoever自然要用合适的用户账号来代替。
chroot_list_enable=YES,可以用一个列表限定哪些本地用户只能在自己目录下活动,如果chroot_local_user=YES,那么这个列表里指定的用户是不受限制的。
chroot_list_file=/etc/vsftpd.chroot_list,如果chroot_local_user=YES,则指定该列表(chroot_local_user)的保存路径(默认是/etc/vsftpd.chroot_list)。
nopriv_user=ftpsecure,指定一个安全用户账号,让FTP服务器用作完全隔离和没有特权的独立用户。这是vsftpd系统推荐选项。
async_abor_enable=YES,强烈建议不要启用该选项,否则将可能导致出错!
ascii_upload_enable=YESascii_download_enable=YES,默认情况下服务器会假装接受ASCⅡ模式请求但实际上是忽略这样的'请求,启用上述的两个选项可以让服务器真正实现ASCⅡ模式的传输。
(注意:启用ascii_download_enable选项会让恶意远程用户们在ASCⅡ模式下用"SIZE/big/file"这样的指令大量消耗FTP服务器的I/O资源。)
这些ASCⅡ模式的设置选项分成上传和下载两个,这样我们就可以允许ASCⅡ模式的上传(可以防止上传脚本等恶意文件而导致崩溃),而不会遭受拒绝服务攻击的危险。
(3)用户连接和超时选项
idle_session_timeout=600,可以设定默认的空闲超时时间,用户超过这段时间不动作将被服务器踢出。
data_connection_timeout=120,设定默认的数据连接超时时间。
(4)服务器日志和欢迎信息
dirmessage_enable=YES,允许为目录配置显示信息,显示每个目录下面的message_file文件的内容
ftpd_banner=Welcome to blah FTP service,可以自定义FTP用户登录到服务器所看到的欢迎信息。
xferlog_enable=YES,启用记录上传/下载活动日志功能。
xferlog_file=/var/log/vsftpd.log,可以自定义日志文件的保存路径和文件名,默认是/var/log/vsftpd.log.
知道了上面各个选项的含义,你可以根据自己的需要进行配置,达部分的选项一般用不着改动,配置完了以后,确认vsftpd服务已经启动后,我们可以在Windows主机的S命令窗口里输入"ftp Addres"(用实际的FTP服务器IP地址或者域名代替Addres),注意用户名、密码都是ftp(ftp是匿名用户的映射用户账号)。
如果登陆不上,可以试验在LINUX下本地登陆看看,还有可以在LINUX登陆WINDOWS下的FTP,试验能否登陆成功,如果可以,那很有可能登陆不上LINUX下的FTP的原因是LINUX的防火墙的原因,可以用rpm -q vsftpd命令来查看,如果防火墙开启,可以用命令把其关闭,也可以在图形界面下"主菜单"中的"system settings"中选择"seurity level",安装系统的时候如果没有改动,默认是的seurity level是"Medium",你可以不改动该设置,选中下面"allow incomning"中的"FTP",当然你也可以设置seurity level为"NO firewall",这样再在Windows下登陆LINUX的FTP,应该可以登陆了。
登陆后具体ftp下的 *** 作就参考有关ftp的命令了,登陆后的路径为/var/ftp/pub,把你所需要 *** 作的文件可以放在该目录下,我这里用付ftp主要是在下载linux编译后的文件到板子上,上传文件到LINUX上一般不用通过ftp,注意你在ftp下对文件进行一些 *** 作的时候很可能被fail掉,注意根据情况设置文件的 *** 作权限。
在LINXU平台上使用的FTP软件有Wu-ftpd、Proftpd和vsftpd等。Wu-ftpd的历史悠久,是最流行的FTP服务器程序,稳定、出色,但发布较早,安全不及Proftpd及vsftpd。Proftpd在Wu-ftpd之后开发,安全性及稳定性有所提高。而vsftpd则是在Proftpd之后开发的,意为Very Sucure,吸取了Wu-ftpd和Proftpd的优点,安全性、速度、稳定性都有很大提高。RHEL4(AS)中vsftpd的RPM软件包在第1张光盘中,名为vsftpd-2.0.1-5.i386.rpm。默认情况下没有安装。Vsftpd的主配置文件是/etc/vsftpd.conf。未修改的主配置文件去掉注释后如下(“”后为解释):
anonymous_enable=YES 是否允许匿名访问
local_enable=YES 是否允许本地用户登录
write_enable=YES 是否允许本地用户写入
local_umask=022生向掩码(文件生成掩码),跟权限有关,我记不住了,有兴趣的朋友可以去查查,知道的朋友也请告诉我一下
dirmessage_enable=YES 切换到FTP中的某目录时,是否显示该目录下的隐含文件“.message”
xferlog_enable=YES 是否启用启用上传和下载日志
connect_from_port_20=YES 是否启用FTP数据端口的连接请求
xferlog_std_format=YES 是否让FTP使用ftpd xferlog日志格式
pam_service_name=vsftpd设置PAM认证服务的配置文件,位于/etc/pam.d目录下
userlist_enable=YES需与userlist_file配合使用,稍后介绍
listen=YES 是否处于独立启动模式
tcp_wrappers=YES 为YES时,以tcp_wrappers作为主机访问控制方式
(去掉后,vsftpd的配置文件就这么一点^_^。)
/etc/vsftpd.ftpusers保存着不允许进行FTP登录的用户帐户,通常是权限很高的用户,以提高FTP的安全。
至于/etc/vsftpd.user_list文件,里面有说明:
# vsftpd userlist
# If userlist_deny=NO, only allow users in this file
# If userlist_deny=YES (default), never allow users in this file, and do not even prompt for a password.
# Note that the default vsftpd pam config also checks /etc/vsftpd.ftpusers
…………(后略)
前面说的userlist_enalbe就跟这有关(重点是第二、三行)
另外,/vsr/ftp是匿名用户的宿主目录.
配置vsftpd的虚拟用户:
1. 建立虚拟用户口令库文件(奇数行为用户名,偶数行为密码):
[root@localhost.localdomain]cat vsftpd
abc
abc12321cba
efg
vsftpd.conf
2. 生成认证文件(db_load生成认证文件,“-f”用于指明虚拟用户的口令库文件,即:vsftpd. *** 作中,口令库文件名可随便取.“-t hash”指加密方式)
db_load -T -t hash -f vsftpd /etc/vsftpd/vsftpd_login.db
3.设置权限,以提高安全:
chmod 600 /etc/vsftpd/vsftpd_login.db
4. 建立虚拟用户的PAM文件:
cat /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
5.建立虚拟用户的目录,并设置相应权限:
useradd -d /home/vsftpd virtual
chmod 700 /home/vsftpd/
6. 编辑vsftpd的配置文件:
vi /etc/vsftpd/vsftpd.conf
guest_enable=yes
guest_username=virtual
pam_service_name=vsftpd.vu
7. 对虚拟用户设置不同权限:
vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/vsftpd_user_conf 设置主配置文件
(:wq #保存退出)
mkdri /etc/vsftpd_user_conf
vi /etc/vsftpd_user_conf/abc 为虚拟用户配置权限
anon_world_readable_only=no 用户可以浏览目录并下载文件
anon_upload_enable=yes 用户可以上传文件
anon_mkdir_write_enable=yes 用户可以添加和删除目录
anon_other_write_enable=yes 用户可以进行其它 *** 作,如改名、删除文件等。
(:wq)
service vsftpd restart
如果只想让用户下载的话,则配置为:
anon_world_readable_only=no
好了,自个儿看效果吧!!!
常见问题:
1.无法匿名访问?
可能是vsftpd.conf中的anonyoums_enable出的错,或者是你根本就没连接到服务器,也有可能是服务器的iptables出的问题(过滤掉了),这种情况下一般与selinux无关。还有就是服务未运行。
2.创建的虚拟用户无法访问vsftpd?
原因或许是在创建虚拟用户的时候出的错,如果无法使用虚拟用户访问vsftpd的时候,建议先检查在创建虚拟用户时,打错什么字没有,如果还是没有检查出什么问题来的话,建议你直接推倒重做。还是一点差点忘记说了,就是在创建虚拟用户的时候,尽量将虚拟用户的密码设长一点、复杂一点,我在测试的时候,就是因为密码太短而几次没有成功。
3.在cmd下用虚拟用户登录vsftpd时,出现“200 PORT command successful. Consider using PASV.”的字样是怎么回事啊?
你所访问的电脑上的防火墙在做怪!!!我就上过这个当!!!
4.其它问题?
一般情况下,vsftpd出现问题大多数都是因为配置文件出错的,如果想要测试的话,建议在命令行了进行测试,当vsftpd出现问题时,它会在访问端的界面上显示原因。另外不成功的原因是因为服务器上的防火墙没有配置好。
Linux之ftp命令使用方法及案例
Example 1:登陆
[root@iZ25ja2kaemZ ~]# ftp 121.199.5.52
Connected to 121.199.5.52 (121.199.5.52).
220 Microsoft FTP Service
Name (121.199.5.52:root): baitongsj
331 User name okay, need password.
Password:
230 User logged in, proceed.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>ll
?Invalid command
ftp>
Example2:dir,cd ,quit 命令用法
ftp>dir ./app
227 Entering Passive Mode (121,199,5,52,128,234)
150 Opening ASCII mode data connection for /bin/ls.
total 0
drw-rw-rw- 1 user group 0 Nov 9 18:26 .
drw-rw-rw- 1 user group 0 Nov 9 18:26 ..
drw-rw-rw- 1 user group 0 Nov 9 18:24 Common
drw-rw-rw- 1 user group 0 Nov 9 18:24 Conf
drw-rw-rw- 1 user group 0 Nov 9 18:19 Lang
drw-rw-rw- 1 user group 0 Nov 9 18:23 Lib
drw-rw-rw- 1 user group 0 Nov 9 18:26 Runtime
drw-rw-rw- 1 user group 0 Nov 9 18:35 Tpl
226 Transfer complete.
ftp>cd base
250 Directory changed to /crms/Base
ftp>dir
227 Entering Passive Mode (121,199,5,52,128,235)
150 Opening ASCII mode data connection for /bin/ls.
drw-rw-rw- 1 user group 0 Nov 9 18:18 .
drw-rw-rw- 1 user group 0 Nov 9 18:18 ..
drw-rw-rw- 1 user group 0 Nov 9 18:12 Common
drw-rw-rw- 1 user group 0 Nov 9 18:13 Conf
drw-rw-rw- 1 user group 0 Nov 9 18:17 Extend
-rw-rw-rw- 1 user group 1854 Jan 18 2016 LICENSE.txt
drw-rw-rw- 1 user group 0 Nov 9 18:17 Lang
drw-rw-rw- 1 user group 0 Nov 9 18:17 Lib
-rw-rw-rw- 1 user group 5600 Jan 18 2016 README.txt
-rw-rw-rw- 1 user group 1568 Jan 18 2016 ThinkPHP.php
drw-rw-rw- 1 user group 0 Nov 9 18:18 Tpl
-rw-rw-rw- 1 user group 7396 Jan 18 2016 logo.png
226 Transfer complete.
ftp>quie
?Invalid command
ftp>quit
221 Goodbye!
[root@iZ25ja2kaemZ ~]#
example3:帮助文件
ftp>help
Commands may be abbreviated. Commands are:
! debug mdir sendport site
$ dir mget put size
account disconnect mkdir pwd status
append exit mls quit struct
ascii form mode quote system
bell get modtime recv sunique
binary glob mput reget tenex
bye hash newer rstatus tick
case help nmap rhelp trace
cd idle nlist rename type
cdup image ntrans reset user
chmod lcd open restart umask
close ls prompt rmdir verbose
cr macdef passive runique ?
delete mdelete proxy send
ftp>help dir
dir list contents of remote directory
ftp>help mdir
mdir list contents of multiple remote directories
ftp>
example4:重命名文件
ftp>dir
227 Entering Passive Mode (121,199,5,52,128,234)
150 Opening ASCII mode data connection for /bin/ls.
drw-rw-rw- 1 user group 0 Nov 9 18:46 .
drw-rw-rw- 1 user group 0 Nov 9 18:46 ..
drw-rw-rw- 1 user group 0 Nov 9 18:39 Install
drw-rw-rw- 1 user group 0 Nov 9 18:36 appImg
drw-rw-rw- 1 user group 0 Nov 11 11:08 css
drw-rw-rw- 1 user group 0 Nov 9 18:37 excelmodel
drw-rw-rw- 1 user group 0 Nov 9 18:46 file
drw-rw-rw- 1 user group 0 Nov 9 18:37 ico
drw-rw-rw- 1 user group 0 Nov 9 18:38 img
drw-rw-rw- 1 user group 0 Nov 11 11:11 js
-rw-rw-rw- 1 user group 3 Oct 25 15:56 ni.txt
drw-rw-rw- 1 user group 0 Nov 9 18:46 sound
drw-rw-rw- 1 user group 0 Nov 9 18:46 sql
226 Transfer complete.
ftp>rename ni.txt ss
350 File or directory exists, ready for destination name
250 RNTO command successful.
ftp>dir
227 Entering Passive Mode (121,199,5,52,128,235)
150 Opening ASCII mode data connection for /bin/ls.
drw-rw-rw- 1 user group 0 Nov 16 16:57 .
drw-rw-rw- 1 user group 0 Nov 16 16:57 ..
drw-rw-rw- 1 user group 0 Nov 9 18:39 Install
drw-rw-rw- 1 user group 0 Nov 9 18:36 appImg
drw-rw-rw- 1 user group 0 Nov 11 11:08 css
drw-rw-rw- 1 user group 0 Nov 9 18:37 excelmodel
drw-rw-rw- 1 user group 0 Nov 9 18:46 file
drw-rw-rw- 1 user group 0 Nov 9 18:37 ico
drw-rw-rw- 1 user group 0 Nov 9 18:38 img
drw-rw-rw- 1 user group 0 Nov 11 11:11 js
drw-rw-rw- 1 user group 0 Nov 9 18:46 sound
drw-rw-rw- 1 user group 0 Nov 9 18:46 sql
-rw-rw-rw- 1 user group 3 Oct 25 15:56 ss
226 Transfer complete.
example5 :格式 get [remote-file] [local-file],将文件从远端主机中传送至本地主机中,如要获取服务器上\rose\1.bmp,则 ftp>get /rose/1.bmp /tmp/1.bmp (回车),必须给出第二个参数,否则会复制失败,登录后执行:
ftp>get robots.txt /tmp/
local: /tmp/ remote: robots.txt
227 Entering Passive Mode (121,199,5,52,128,233)
150 Opening BINARY mode data connection for robots.txt (26 Bytes).
local: /tmp/: Is a directory
226 Transfer complete.
226 ABOR command successful.
ftp>
example 6:lcd 命令
ftp>lcd ..
Local directory now /
ftp>lcd /tmp/flower
Local directory now /tmp/flower
example 7: put命令
格式:put local-file [remote-file]
将本地一个文件传送至远端主机中.
如要把本地的1.bmp传送到远端主机e:\rose,并改名为333.bmp
ftp>put 1.bmp /rose/333.bmp (回车)
ftp>put /tmp/tt.txt ./nihaol.txt
local: /tmp/tt.txt remote: ./nihaol.txt
227 Entering Passive Mode (121,199,5,52,128,232)
150 Opening BINARY mode data connection for nihaol.txt.
226 Transfer complete.
5 bytes sent in 2.6e-05 secs (192.31 Kbytes/sec)
example 8: mput命令
格式:mput local-files
将本地主机中一批文件传送至远端主机.
如要把本地当前目录下所有bmp文件上传到服务器e:\rose 下
ftp>cd /rose (回车)
ftp>mput *.bmp (回车)
注意:上传文件都来自于主机的当前目录下。比如,在 /root/test下运行的ftp命令,则只有在/root/test下的文件linux才会 上传到服务器e:\rose 下
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)