前段时间想在rh9下拷一些数据到fedora的机子,手头没有可用的U盘,于是想采用ftp的方式,将rh9作成一个ftp服务器,然后fedora作为一个客户端get到自己想要的数据
先查了一下rh9有没有安装vsftp,rpm -qa| grep vsftp,结果显示了相应的版本号,一切OK
在rh9端先用命令 /etc/init.d/vsftp start,启动了ftp服务器
在fedora的终端敲入 ftp ftpserverip,回车,用户名输入anonymous,密码直接回车
输入help可以直接查看可用命令,输入dir显示当前目录下的文件夹,可见有一个pub文件,cd pub后ls却什么都看不到,这是因为服务器端还没有将相应的公共文件放到共享目录
于是回到rh9.公共文件目录在/var/ftp/pub中,将公共文件放到该文件夹,然后/etc/init.d/vsftp restart一下
然后客户端就可以用get命令下载文件了
简单的架设ftp服务器和使用就这样简单,当然我只是想在两台机子间传一些文件,复杂的使用可以参考下面的文章
以下是一些参考:
-----------------------------------------------------------
http://www.5dlinux.com/article/9/2009/linux_29773.html
现如今越来 越多的人选择了开源的Linux操作系统,其不逊于Windows的性能和平易近人的价格是人们选择它的最好理由,而Red Hat Linux 9是Linux操作系统中使用最广的一种。Red Hat Linux 9利用其简单的配置和用户熟悉的图形界面为人们提供了丰富的Internet服务,FTP便是其提供的服务之一。在众多的网络应用中,FTP有着非常重要 的地位,互联网中各种各样的软件资源大多数都放在FTP服务器中。与大多数互联网服务一样,FTP也是一个客户机/服务器系统。下面我就给大家简单介绍一 下如何在Red Hat Linux 9 下架设FTP服务器,希望藉此抛砖引玉。
1.安装vsftpd服务器
vsftpd是目前Linux最好的FTP服务器工具之一,其中的vs就是“Very Secure”(很安全)的缩写,可见它的最大优点就是安全,除此之外,它还具有体积小,可定制强,效率高的优点。
如果选择完全安装Red Hat Linux 9.0,则系统会默认安装vsftpd服务器。我们可以在终端命令窗口输入以下命令进行验证:
[root@ahpeng root] rpm -qagrep vsftpd
如果结果显示为“vsftpd-1.1.3-8”,则说明系统 已经安装vsftpd服务器。如果安装Red Hat Linux 9.0时没有选择vsftpd服务器,则可以在图形环境下单击“主菜单→系统设置→添加删除应用程序”菜单项,在出现的“软件包管理”对话框里确保选中 “FTP服务器”选项,然后单击“更新”按钮,按照屏幕提示插入第3张安装光盘即可开始安装。
另外,你也可以直接插入第3张安装光盘,定位到/RedHat/RPMS下的vsftpd-1.1.3-8.i386.rpm安装包,然后在终端命令窗口运行以下命令即可开始安装进程:
[root@ahpeng RPMS] rpm -ivh vsftpd-1.1.3-8.i386.rpm
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
确认vsftpd服务已经启动后,我们可以在任意一台 Windows主机的DOS命令窗口里输入“ftp FTPAddres”(用实际的FTP服务器IP地址或者域名代替FTPAddres),注意用户名、密码都是ftp(ftp是匿名用户的映射用户账 号),如下所述:
Microsoft Windows XP [版本 5.1.2600]
(C) 版权所有 1985-2001 Microsoft Corp.
F:/Peter>ftp FTPAddress
Connected to FTPAddress
220 (vsFTPd 1.1.3)//vsftpd的响应请求
User (FTPAddress:(none)): ftp//输入用户账号ftp
331 Please specify the password.
Password://输入密码ftp
230 Login successful. Have fun.
ftp>
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=YES;ascii_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.
http://bbs.51cto.com/archiver/tid-17681.html
FTP服务器的配置
1. vsftpd的FTP服务器的配置文件名称、路径,及其配置文件格式和作用?
2. 在重新配置 vsftpd的FTP服务器后,如何重启FTP服务器?如何关闭FTP服务器?
3. vsftpd的FTP服务器的共享文件存放路径?
4. 请在虚拟终端下用匿名账号和本地账号测试vsftpd的默认配置,并写出整个实验过程以及结论。
实验平台:Red Hat Linux 9.0
实验过程:
1、
主配置文件: /etc/vsftpd/vsftpd.conf
anonymous_enable=YES //允许匿名登录
local_enable=YES //允许本地用户登录
write_enable=YES //开放本地用户的写权限
local_umask=022 //开放本地用户的文件生成掩码为022,默认值为077
dirmessage_enable=YES //当切换到目录时,显示该目录下的.message隐含文件的内容
这是由于默认情况下有message_file=.message的设置
xferlog_enable=YES //激活上传和下载日志
connect_from_port_20=YES //启用FTP数据端口的连接请求
xferlog_std_format=YES //使用标准的ftpd xferlog日志格式
pam_service_name=vsftpd //设置PAM认证服务的配置文件名称,该文件存放在/etc/pam.d/目录下
userlist_enable=YES //激活vsftpd检查userlist_file指定的用户是否可以访问vsftpd服务器,userlist_file的默认值是/etc /vsftpd.user_list,由于默认情况下userlist_deny=YES,所以/etc/vsftpd.user_list文件中所列的 用户均不能访问此服务器
listen=YES //使vsftpd处于独立启动模式
tcp_wrappers=YES //使用tcp_wrappers作为主机访问控制方式
2、
[root@localhost root]# /etc/rc.d/init.d/vsftpd restart
[root@localhost root]# /etc/rc.d/init.d/vsftpd stop
3、
/var/ftp/pub
[b]4[/b][b]、[/b][b][/b]
[b]测试[/b][b]vsftpd[/b][b]的默认配置——匿名账号[/b][b][/b]
在默认下,匿名服务器下载目录/ var/ftp/pub没有任何内容,可先向该目录复制些文件。
[root@localhost root]# cd /var/ftp
[root@localhost ftp]# ls
pub
[root@localhost ftp]# cd
[root@localhost root]# cp /tmp/Screenshot-1.png /var/ftp/pub
[b]1[/b][root@localhost root]# echo "[b]welcome to this Directory.[/b]">/var/ftp/pub/[b].[/b]message
//生成目录信息文件 /var/ftp/pub/.message,用户也可用vi 编辑此文件
[root@localhost root]# cat /var/ftp/pub/.message
welcome to this Directory.
[root@localhost root]# cd /var/ftp/pub
[root@localhost pub]# ls
Screenshot-1.png
[root@localhost pub]# ls -a
. .. .message Screenshot-1.png
[b]2[/b][root@localhost pub]# cd
[root@localhost[b] root[/b]]# [url=ftp://ftp%20127.0.0.1/]ftp 127.0.0.1[/url] //使用FTP客户端连接本地FTP服务器
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 1.1.3)
Name (127.0.0.1:root): anonymous //使用匿名FTP账号(ftp或anonymous)
331 Please specify the password.
Password: //输入E-mail地址作为FTP匿名账号的口令
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls //列出显示匿名FTP服务器目录(/var/ftp/pub)
227 Entering Passive Mode (127,0,0,1,161,17)
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Apr 05 22:44 pub
226 Directory send OK.
ftp> cd pub //进入匿名FTP服务器下载目录
250-welcome to this Directory. //此处显示了.message文件的内容
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (127,0,0,1,229,132)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 133816 Mar 13 23:09 Screenshot-1.png
226 Directory send OK.
[b]3[/b]ftp> mget Scr* //下载文件Screenshot-1.png
mget Screenshot-1.png? y
227 Entering Passive Mode (127,0,0,1,188,222)
150 Opening BINARY mode data connection for Screenshot-1.png (133816 bytes).
226 File send OK.
133816 bytes received in 0.0413 secs (3.2e+03 Kbytes/sec)
[b]4[/b]ftp> [b]![/b]ls //显示本地文件 “本地”即“/root”下
285- dirlist Mail
285-~ index mbox
anaconda-ks.cfg nohup.out
bbb Index of _private_文件 Screenshot-1.png
dead.letter install.log scrollkeeper-tempfile.1
Desktop install.log.syslog 你好吗?
//确认已经将文件下载到本地“/root”下
[b]5[/b]ftp> put install.log //上传文件install.log
local: install.log remote: install.log
227 Entering Passive Mode (127,0,0,1,156,19)
550 Permission denied. //上传文件失败
ftp> cd / //切换到根目录(即/var/ftp/)
250 Directory successfully changed.
ftp> ls //显示根目录下的内容
227 Entering Passive Mode (127,0,0,1,44,41)
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Apr 05 22:44 pub
226 Directory send OK.
ftp> bye //退出FTP
221 Goodbye.
[b]6[/b][root@localhost root]# cat /var/log/vsftpd.log //查看日志
[b]测试[/b][b]vsftpd[/b][b]的默认配置——本地账号[/b][b][/b]
[b][root@localhost root]# tail -5 /etc/passwd //[/b][b]查看本地普通用户[/b]
gdm:x:42:42::/var/gdm:/sbin/nologin
postgres:x:26:26:PostgreSQL Server:/var/lib/pgsql:/bin/bash
desktop:x:80:80:desktop:/var/lib/menu/kde:/sbin/nologin
gcb:x:500:500::/home/gcb:/bin/bash
osmond:x:501:501::/home/osmond:/bin/bash
[b][root@localhost root]# ftp 127.0.0.1[/b]
ftp: connect: Connection refused
ftp> bye
[b][root@localhost root]#/etc/rc.d/init.d/vsftpd start[/b]
为 vsftpd 启动 vsftpd: [ 确定 ]
[b][root@localhost root]# ftp 127.0.0.1[/b]
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 1.1.3)
Name (127.0.0.1:root): [b]gcb[/b] //[b]本地账号gcb[/b]登录
331 Please specify the password.
Password: //输入gcb的口令
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
[b]ftp> ls //[/b][b]显示远程主机gcb[/b][b]自家目录(/home/gcb[/b][b])[/b]
227 Entering Passive Mode (127,0,0,1,120,244)
150 Here comes the directory listing.
drwxrwxr-x 2 500 500 1024 Mar 28 22:44 public_html
226 Directory send OK.
[b]ftp> cd public_html //[/b][b]进入public_html[/b][b]目录[/b]
250 Directory successfully changed.
[b]ftp> ls[/b]
227 Entering Passive Mode (127,0,0,1,92,199)
150 Here comes the directory listing.
-rw-rw-r-- 1 500 500 15 Mar 12 17:22 index.html
-rw-r--r-- 1 500 500 21856 Mar 28 22:44 install.log
226 Directory send OK.
[b]ftp> get index.html //[/b][b]下载文件index.html[/b]
local: index.html remote: index.html
227 Entering Passive Mode (127,0,0,1,225,109)
150 Opening BINARY mode data connection for index.html (15 bytes).
226 File send OK.
15 bytes received in 0.0318 secs (0.46 Kbytes/sec)
[b]ftp> !ls[/b]
。。。
anaconda-ks.cfg fcitx-3.0.0rc-tar-bz2的安装~ nohup.out
bbb index Screenshot-1.png
dead.letter [b]index.html[/b] scrollkeeper-tempfile.1
Desktop Index of _private_文件 你好吗?
[b]ftp> !ls –l //[/b][b]显示本地文件,检查下载到/root[/b][b]目录情况 [/b]
。。。
-rw-r--r-- 1 root root 3471 4月 5 23:46 fcitx-3.0.0rc-tar-bz2的安装~
lrwxrwxrwx 1 root root 11 3月 13 22:53 index -> /root/index
-rw-r--r-- 1 root root 15 4月 6 00:42 [b]index.html[/b]
[b]ftp> put fcitx-3.0.0rc.tar.bz2 //[/b][b]上传文件fcitx-3.0.0rc.tar.bz2[/b]
local: fcitx-3.0.0rc.tar.bz2 remote: fcitx-3.0.0rc.tar.bz2
227 Entering Passive Mode (127,0,0,1,202,93)
150 Ok to send data.
226 File receive OK.
1445049 bytes sent in 0.147 secs (9.6e+03 Kbytes/sec)
[b]ftp> ls //[/b][b]显示远程主机上的文件,确认文件fcitx-3.0.0rc.tar.bz2[/b][b]已经上传 [/b]
227 Entering Passive Mode (127,0,0,1,143,85)
150 Here comes the directory listing.
-rw-r--r-- 1 500 500 1445049 Apr 06 00:45 [b]fcitx-3.0.0rc.tar.bz2[/b]
-rw-rw-r-- 1 500 500 15 Mar 12 17:22 index.html
-rw-r--r-- 1 500 500 21856 Mar 28 22:44 install.log
226 Directory send OK.
[b]ftp> cd / //[/b][b]切换到根目录[/b]
250 Directory successfully changed.
[b]ftp> ls[/b]
227 Entering Passive Mode (127,0,0,1,108,155)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 129431 Mar 16 22:18 223
-rw-r--r-- 1 0 0 6515 Mar 09 16:45 P14-19
drwxr-xr-x 2 0 0 4096 Mar 07 01:16 bin
drwxr-xr-x 4 0 0 1024 Mar 07 00:57 boot
drwxr-xr-x 20 0 0 118784 Apr 06 00:32 dev
drwxr-xr-x 63 0 0 8192 Apr 06 00:31 etc
-rwxr-xr-x 1 0 0 10 Mar 28 23:22 gcb
drwxr-xr-x 5 0 0 1024 Mar 16 22:46 home
-rwxr-xr-x 1 0 0 15 Mar 28 23:23 index.html
drwxr-xr-x 2 0 0 4096 Jan 24 2003 initrd
drwxr-xr-x 9 0 0 4096 Mar 07 01:16 lib
drwx------ 2 0 0 16384 Mar 07 00:52 lost+found
drwxr-xr-x 2 0 0 4096 Jan 28 2003 misc
drwxr-xr-x 8 0 0 4096 Mar 28 23:16 mnt
drwxr-xr-x 2 0 0 4096 Jan 24 2003 opt
dr-xr-xr-x 81 0 0 0 Apr 06 00:31 proc
drwxr-x--- 27 0 0 4096 Apr 06 00:45 root
drwxr-xr-x 2 0 0 8192 Mar 15 22:46 sbin
drwxr-xr-x 3 0 0 4096 Mar 07 01:19 tftpboot
drwxrwxrwt 14 0 0 4096 Apr 06 00:39 tmp
drwxr-xr-x 15 0 0 4096 Mar 07 00:55 usr
drwxr-xr-x 21 0 0 4096 Mar 07 01:25 var
-rw-r--r-- 1 0 0 1860 Mar 08 22:47 未命名 1
226 Directory send OK.
[b]ftp> cd /tmp[/b]
250 Directory successfully changed.
[b]ftp> ls[/b]
227 Entering Passive Mode (127,0,0,1,242,207)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 510932 Feb 24 2003 dhcp-3.0pl1-23.i386.rpm
-rw-r--r-- 1 500 500 21856 Mar 28 22:48 install.log
-r-xr-xr-x 1 0 0 707027 Mar 07 12:52 install_flash_player_6_linux.tar.gz
drwx------ 2 0 0 4096 Mar 19 15:20 kde-root
drwx------ 2 0 0 4096 Mar 28 10:47 ksocket-root
-r-xr-xr-x 1 0 0 23179241 Jul 21 2004 lumaqq-0.1b.tar(1).bz2
drwx------ 2 0 0 4096 Mar 19 15:21 mcop-root
drwx------ 2 500 500 4096 Mar 16 00:38 orbit-gcb
drwx------ 2 0 0 24576 Apr 06 00:59 orbit-root
-rwxr--r-- 1 0 0 39848 Mar 20 21:00 scrollkeeper-tempfile.1
drwx------ 2 0 0 4096 Mar 21 21:25 ssh-XXNZyHzO
drwx------ 2 500 500 4096 Mar 15 23:51 ssh-XXOQq8QO
drwx------ 2 0 0 4096 Mar 13 19:06 ssh-XXaA9E5e
drwx------ 2 0 0 4096 Apr 06 00:32 ssh-XXrAzc3X
226 Directory send OK.
[b]ftp> mget dhc* //[/b][b]下载远程主机/ tmp[/b][b]目录下的文件dhcp-3.0pl1-23.i386.rpm[/b]
mget dhcp-3.0pl1-23.i386.rpm? y
227 Entering Passive Mode (127,0,0,1,170,48)
150 Opening BINARY mode data connection for dhcp-3.0pl1-23.i386.rpm (510932 bytes).
226 File send OK. //下载文件dhcp-3.0pl1-23.i386.rpm成功
510932 bytes received in 0.354 secs (1.4e+03 Kbytes/sec)
[b]ftp> !ls[/b]
285- fcitx-3.0.0rc install.log.syslog
285-~ fcitx-3.0.0rc.tar.bz2 Mail
anaconda-ks.cfg fcitx-3.0.0rc-tar-bz2的安装 mbox
bbb fcitx-3.0.0rc-tar-bz2的安装~ nohup.out
dead.letter index Screenshot-1.png
Desktop index.html scrollkeeper-tempfile.1
[b]dhcp-3.0pl1-23.i386.rpm[/b] Index of _private_文件 你好吗?
dirlist install.log
[b]ftp> ls[/b]
227 Entering Passive Mode (127,0,0,1,229,140)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 510932 Feb 24 2003 dhcp-3.0pl1-23.i386.rpm
-rw-r--r-- 1 500 500 21856 Mar 28 22:48 install.log
-r-xr-xr-x 1 0 0 707027 Mar 07 12:52 install_flash_player_6_linux.tar.gz
drwx------ 2 0 0 4096 Mar 19 15:20 kde-root
drwx------ 2 0 0 4096 Mar 28 10:47 ksocket-root
-r-xr-xr-x 1 0 0 23179241 Jul 21 2004 lumaqq-0.1b.tar(1).bz2
drwx------ 2 0 0 4096 Mar 19 15:21 mcop-root
drwx------ 2 500 500 4096 Mar 16 00:38 orbit-gcb
drwx------ 2 0 0 24576 Apr 06 00:59 orbit-root
-rwxr--r-- 1 0 0 39848 Mar 20 21:00 scrollkeeper-tempfile.1
drwx------ 2 0 0 4096 Mar 21 21:25 ssh-XXNZyHzO
drwx------ 2 500 500 4096 Mar 15 23:51 ssh-XXOQq8QO
drwx------ 2 0 0 4096 Mar 13 19:06 ssh-XXaA9E5e
drwx------ 2 0 0 4096 Apr 06 00:32 ssh-XXrAzc3X
226 Directory send OK.
[b]ftp> !ls[/b]
285- fcitx-3.0.0rc install.log.syslog
285-~ fcitx-3.0.0rc.tar.bz2 Mail
anaconda-ks.cfg fcitx-3.0.0rc-tar-bz2的安装 mbox
bbb fcitx-3.0.0rc-tar-bz2的安装~ nohup.out
dead.letter index Screenshot-1.png
Desktop index.html scrollkeeper-tempfile.1
dhcp-3.0pl1-23.i386.rpm Index of _private_文件 你好吗?
dirlist install.log
ftp> pwd
257 "/root"
[b]ftp> put bbb //[/b][b]上传bbb[/b][b]文件到远程主机的/tmp[/b][b]目录 [/b]
local: bbb remote: bbb
227 Entering Passive Mode (127,0,0,1,48,217)
150 Ok to send data.
226 File receive OK.
7 bytes sent in 5.1e-05 secs (1.3e+02 Kbytes/sec)
[b]ftp> ls[/b]
227 Entering Passive Mode (127,0,0,1,29,32)
150 Here comes the directory listing.
-rw-r--r-- 1 500 500 133816 Apr 06 00:56 Screenshot-1.png
-rw-r--r-- 1 500 500 7 Apr 06 01:14[b] bbb[/b]
drwxrwxr-x 2 500 500 1024 Apr 06 00:45 public_html
226 Directory send OK.
[b]ftp> pwd[/b]
257 "/home/gcb"
[b]ftp> bye[/b]
221 Goodbye.
//查看日志
[b][root@localhost root]# cat /var/log/vsftpd.log[/b]
重新连接本地FTP服务器
[root@localhost root]# ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 1.1.3)
Name (127.0.0.1:root): root //以root 用户登录
530 Permission denied.
Login failed. //登录失败
ftp> bye
221 Goodbye.
//以下是登录失败的原因:由于root用户写在了/etc/vsftpd.ftpusers文件中。
[root@localhost root]# cat /etc/vsftpd.ftpusers |grep root
root
[b] [/b]
[b] [/b]
[b] [/b]
[b] [/b]
[b]通过以上的操作,得出在Red Hat Linux 9[/b][b]默认设置下的结论:[/b]
(1) 允许匿名用户和本地用户登录。
(2) 匿名用户的登录为ftp(或anonymous),口令为一个E-mail地址。
(3) 匿名用户不能离开匿名服务器目录/var/ftp,且只能下载不能上传。
(4) 本地用户的登录名为本地用户名,口令为此本地用户的口令。
(5) 本地用户可以离开自家目录切换到有权访问的其他目录,并在权限允许的情况下进行上传/下载。
(6) 写在文件/etc/ftpusers 中的本地用户禁止登录。
(7) 要使用户在下载文件时能够续传文件,必须保证文件对其他用户有读的权限,否则,当续传时不能读取已传的服务器上的文件。
/etc/vsftpd/vsftpd.conf文件详解,分好类,方便大家查找与学习
#################匿名权限控制###############
anonymous_enable=YES #是否启用匿名用户
no_anon_password=YES #匿名用户login时不询问口令
下面这四个主要语句控制这文件和文件夹的上传、下载、创建、删除和重命名。
anon_upload_enable=(yes/no); #控制匿名用户对文件(非目录)上传权限。
anon_world_readable_only=(yes/no); #控制匿名用户对文件的下载权限
anon_mkdir_write_enable=(yes/no); #控制匿名用户对文件夹的创建权限
anon_other_write_enable=(yes/no); #控制匿名用户对文件和文件夹的删除和重命名
注:匿名用户下载是使用的是nobody这个用户,所以相应的O这个位置要有R权限才能被下载。若想让匿名用户能上传和删除权限,必需设置
write_enable=YES #全局设置,是否容许写入(无论是匿名用户还是本地用户,若要启用上传权限的话,就要开启他)
anon_root=(none) #匿名用户主目录
anon_max_rate=(0) #匿名用户速度限制
anon_umask=(077) #匿名用户上传文件时有掩码(若想让匿名用户上传的文件能直接被匿名下载,就这设置这里为073)
chown_uploads=YES #所有匿名上传的文件的所属用户将会被更改成chown_username
chown_username=whoever #匿名上传文件所属用户名
#################本地用户权限控制###############
write_enable=YES #可以上传(全局控制) 删除,重命名
local_umask=022 #本地用户上传文件的umask
userlist_enable=YES #限制了这里的用户不能访问
local_root #设置一个本地用户登录后进入到的目录
user_config_dir #设置用户的单独配置文件,用哪个帐户登陆就用哪个帐户命名
download_enable #限制用户的下载权限
chown_uploads=YES #所有匿名上传的文件的所属用户将会被更改成chown_username
chown_username=whoever #匿名上传文件所属用户名
chroot_list_enable=YES #如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录
chroot_list_file=/etc/vsftpd/chroot_list #指定限制的用户文件
user_config_dir= #后面跟存放配置文件的目录。用来实现不同用户不同权限。
#在vsftpd.conf文件中加入这一句,
#在相应的目录里面,为每个用户创建自己的配置文件,用来实现不同的权限
可以通过以下三条配置文件来控制用户切换目录。
chroot_list_enable=YES/NO #设置是否启用chroot_list_file配置项指定的用户列表文件。
#如果启动这项功能,则所有列在chroot_list_file之中的使用者不能更改根目录 .默认值为yes。
chroot_list_file=/etc/vsftpd/chroot_list #指出被锁定在自家目录中的用户的列表文件。
chroot_list_enable=YES
通过与chroot_local_user=YES/NO搭配能实现以下几种效果:
1、当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd.chroot_list文件中列出的用户,可以切换到其他目录;未在文件中列出的用户,不能切换到其他目录。
2、当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd.chroot_list文件中列出的用户,不能切换到其他目录;未在文件中列出的用户,可以切换到其他目录。
3、当chroot_list_enable=NO,chroot_local_user=YES时,所有的用户均不能切换到其他目录。
4、当chroot_list_enable=NO,chroot_local_user=NO时,所有的用户均可以切换到其他目录。
下面是个实例,希望对大家有用:
1、只能上传。不能下载、删除、重命名。
cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,SIZE,STOR,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST
对于参数的详细的解释
cmds_allowed=ABOR,ACCT,APPE,CWD,CDUP,DELE,HELP,LIST,MODE,MDTM,MKD,NOOP,NLST,PASS,PASV,PORT,PWD,QUIT,REIN,RETR,RMD,RNFR,RNTO,SITE,SIZE,STOR,STAT,STOU,STRU,SYST,TYPE,USER
CWD - change working directory 更改目录
DELE - delete a remote file 删除文件
LIST - list remote files 列目录
MKD - make a remote directory 新建文件夹
NLST - name list of remote directory
PWD - print working directory 显示当前工作目录
RETR - retrieve a remote file 下载文件
RMD - remove a remote directory 删除目录
RNFR - rename from 重命名
RNTO - rename to 重命名
STOR - store a file on the remote host 上传文件
# ABOR - abort a file transfer 取消文件传输
# CWD - change working directory 更改目录
# DELE - delete a remote file 删除文件
# LIST - list remote files 列目录
# MDTM - return the modification time of a file 返回文件的更新时间
# MKD - make a remote directory 新建文件夹
# NLST - name list of remote directory
# PASS - send password
# PASV - enter passive mode
# PORT - open a data port 打开一个传输端口
# PWD - print working directory 显示当前工作目录
# QUIT - terminate the connection 退出
# RETR - retrieve a remote file 下载文件
# RMD - remove a remote directory
# RNFR - rename from
# RNTO - rename to
# SITE - site-specific commands
# SIZE - return the size of a file 返回文件大小
# STOR - store a file on the remote host 上传文件
# TYPE - set transfer type
# USER - send username
# less common commands:
# ACCT* - send account information
# APPE - append to a remote file
# CDUP - CWD to the parent of the current directory
# HELP - return help on using the server
# MODE - set transfer mode
# NOOP - do nothing
# REIN* - reinitialize the connection
# STAT - return server status
# STOU - store a file uniquely
# STRU - set file transfer structure
# SYST - return system type
2、只能下载。不能上传、删除、重命名。write_enable=NO
3、只能上传、删除、重命名。不能下载。download_enable=NO
4、只能下载、删除、重命名。不能上传。
cmds_allowed=FEAT,REST,CWD,LIST,MDTM,MKD,NLST,PASS,PASV,PORT,PWD,QUIT,RMD,RNFR,RNTO,RETR,DELE,SIZE,TYPE,USER,ACCT,APPE,CDUP,HELP,MODE,NOOP,REIN,STAT,STOU,STRU,SYST
###################虚拟用户设置###################
虚拟用户使用PAM认证方式。
pam_service_name=vsftpd #设置PAM使用的名称,默认值为/etc/pam.d/vsftpd。
check_shell=YES #(注意:仅在没有pam验证版本时有用,是否检查用户有一个有效的shell来登录 )
guest_enable= YES/NO #启用虚拟用户。默认值为NO。
guest_username=ftp #这里用来映射虚拟用户。默认值为ftp。
virtual_use_local_privs=YES/NO #当该参数激活(YES)时,虚拟用户使用与本地用户相同的权限。
#当此参数关闭(NO)时,虚拟用户使用与匿名用户相同的权限。默认情况下此参数是关闭的(NO)。
###################访问控制设置###################
两种控制方式:一种控制主机访问,另一种控制用户访问。
1、控制主机访问:
tcp_wrappers=YES/NO
设置vsftpd是否与tcp wrapper相结合来进行主机的访问控制。默认值为YES。如果启用,则vsftpd服务器会检查/etc/hosts.allow 和/etc/hosts.deny 中的设置,来决定请求连接的主机,是否允许访问该FTP服务器。这两个文件可以起到简易的防火墙功能。
比如:若要仅允许192.168.10.1—192.168.10.254的用户可以连接FTP服务器,
则在
/etc/hosts.allow
/etc/hosts.deny
文件中添加以下内容:
其格式如下:
限制的服务:ip(网段)
vsftpd:192.168.1.
vsftpd:192.168.1.12
vsftpd:192.168.1.0/255.255.255.0这里不能写成192.168.1.0/24
2、控制用户访问:
vsftpd.ftpusers #用于保存不允许进行FTP登录的本地用户帐号。就是vsftp用户的黑名单
vsftpd.user_list
(1)设置禁止vsftpd.user_list文件中的用户登录:要在主配置文件vsftpd.conf中修改如下两项,
userlist_enable=yes
userlist_deny=yes
说明:配置完以后,除了vsftpd.ftpusers文件和vsftpd.user_list文件中记录的ftp用户不能登录vsftp服务以外,其他的ftp用户都可以登录。
(2)设置只允许vsftpd.user_list文件中的用户登录;同样的道理要把主配置文件vsftpd.conf 中的语句修改如下两项:
userlist_enable=yes
userlist_deny=no
说明:配置完以后,只允许vsftpd.user_list文件中记录的ftp用户能登录vsftp服务,其他的ftp用户都不可以登录。
###################超时设置##################
idle_session_timeout=600 #空闲连接超时
data_connection_timeout=120 #数据传输超时
ACCEPT_TIMEOUT=60 #PAVS请求超时
connect_timeout=60 #PROT模式连接超时
################服务器功能选项###############
xferlog_enable=YES #开启日记功能
xferlog_std_format=YES #使用标准格式
log_ftp_protocol=NO #当xferlog_std_format关闭且本选项开启时,记录所有ftp请求和回复,当调试比较有用.
pasv_enable=YES #允许使用pasv模式
pasv_promiscuous+NO #关闭安全检查,小心呀.
port_enable=YES #允许使用port模式
prot_promiscuous #关闭安全检查
tcp_wrappers=YES #开启tcp_wrappers支持
pam_service_name=vsftpd #定义PAM 所使用的名称,预设为vsftpd。
nopriv_user=nobody #当服务器运行于最底层时使用的用户名
pasv_address=(none) #使vsftpd在pasv命令回复时跳转到指定的IP地址.(服务器联接跳转?)
#################服务器性能选项##############
ls_recurse_enable=YES #是否能使用ls -R命令以防止浪费大量的服务器资源
one_process_model #是否使用单进程模式
listen=YES 绑定到listen_port指定的端口,既然都绑定了也就是每时都开着的,就是那个什么standalone模式
text_userdb_names=NO #当使用者登入后使用ls -al 之类的指令查询该档案的管理权时,预设会出现拥有者的UID,而不是该档案拥有者的名 #称。若是希望出现拥有者的名称,则将此功能开启。
use_localtime=NO #显示目录清单时是用本地时间还是GMT时间,可以通过mdtm命令来达到一样的效果
#use_sendfile=YES #测试平台优化
################信息类设置################
ftpd_banner=welcome to FTP . #login时显示欢迎信息.如果设置了banner_file则此设置无效
dirmessage_enable=YES #允许为目录配置显示信息,显示每个目录下面的message_file文件的内容
setproctitle_enable=YES #显示会话状态信息,关!
############## 文件定义 ##################
chroot_list_file=/etc/vsftpd/vsftpd.chroot_list #定义不能更改用户主目录的文件
userlist_file=/etc/vsftpd/vsftpd.user_list #定义限制/允许用户登录的文件
banner_file=/etc/vsftpd/banner #定义登录信息文件的位置
banned_email_file=/etc/vsftpd.banned_emails #禁止使用的匿名用户登陆时作为密码的电子邮件地址
xferlog_file=/var/log/vsftpd.log #日志文件位置
message_file=.message #目录信息文件
############## 目录定义 #################
user_config_dir=/etc/vsftpd/userconf #定义用户配置文件的目录
local_root=webdisk #此项设置每个用户登陆后其根目录为/home/username/webdisk
#定义本地用户登陆的根目录,注意定义根目录可以是相对路径也可以是绝对路径.相对路径是针对用户家目录 #来说的.
anon_root=/var/ftp #匿名用户登陆后的根目录
#############用户连接选项#################
max_clients=100 #可接受的最大client数目
max_per_ip=5 #每个ip的最大client数目
connect_from_port_20=YES #使用标准的20端口来连接ftp
listen_address=192.168.0.2 #绑定到某个IP,其它IP不能访问
listen_port=2121 #绑定到某个端口
ftp_data_port=2020 #数据传输端口
pasv_max_port=0 #pasv连接模式时可以使用port 范围的上界,0 表示任意。默认值为0。
pasv_min_port=0 #pasv连接模式时可以使用port 范围的下界,0 表示任意。默认值为0。
##############数据传输选项#################
anon_max_rate=51200 #匿名用户的传输比率(b/s)
local_max_rate=5120000 #本地用户的传输比率(b/s)
##############安全选项#################
Idle_session_timeout=600 #(用户会话空闲后10分钟)
Data_connection_timeout=120 #(将数据连接空闲2分钟断)
Accept_timeout=60 #(将客户端空闲1分钟后断)
Connect_timeout=60 #(中断1分钟后又重新连接)
Local_max_rate=50000 #(本地用户传输率50K)
Anon_max_rate=30000 # (匿名用户传输率30K)
Pasv_min_port=50000 # (将客户端的数据连接端口改在
Pasv_max_port=60000 #50000—60000之间)
Max_clients=200 #(FTP的最大连接数)
Max_per_ip=4 #(每IP的最大连接数)
Listen_port=5555 #(从5555端口进行数据连接)
以上如果有什么不全或错误的地方,请大家与我联系,我及时改进,谢谢
【案例1】建立基于虚拟用户的FTP服务器,并根据以下要求配置FTP服务器。
(1)配置FTP匿名用户的主目录为/var/ftp/anon。下载带宽限制为100kB/s
(2)建立一个名为abc,口令为xyz的FTP账户。下载带宽限制为500kB/s。
(3)设置FTP服务器同时登录到FTP服务器的最大链接数为100;每个IP最大链接数为3;用户空闲时间超过限值为5分钟。
mkdir /var/fpt/anon
useradd abc
passwd abc
vim /etc/vsftpd/vsftpd.conf
主要内容如下
anonymous_enable=YES
anon_root=/var/ftp/anon
anon_max_rate=100
# Uncomment this to allow local users to log in.
local_enable=YES
local_max_rate=500
max_clients=100
max_per_ip=3
connect_timeout=300
以上是本地的LOCAL用户
下面是用虚拟用户来实现
vim /etc/vsftpd/vuser
内容如下
tom
123
生成数据库文件
db_load -T -t hash -f /etc/vsftpd/vuser /etc/vsftpd/vuser.db
chmod 600 /etc/vsftpd/vuser.db
vim /etc/pam.d/vsftpd
注释掉原来的内容
然后加入
auth required pam_userdb.so db=/etc/vsftpd/vuser
account required pam_userdb.so db=/etc/vsftpd/vuser
最后编辑VSFTPD.CONF加入下面两句
guest_enable=YES
guest_username=abc
大家可以自行测试。
到此,案例一完成
【案例2】
1、新建一分区,10G空间,ext3 文件系统,挂在到 /ftp下,作为 ftp服务器数据存放地方。
2、四个部门:dep1,dep2, dep3, dep4,分别对应目录 /ftp/dep1,/ftp/dep2,/ftp/dep3,/ftp/dep4。另外设定一个公共目录 /ftp/public。
3、五个用户:admin,user1,user2,user3,user4。其中:user 1/2/3/4分别对应部门dep 1/2/3/4,他们只能访问自己所属部门的目录和public目录。如:user1只能访问dep1和public目录,不能访问其它目录。admin为管理员用户,可以访问 ftp 服务器上的任何目录。
4、用户访问权限限制:user1/2/3/4在所能访问的目录,具有上传文件、下载文件的功能,但是不能够删除文件、更改文件权限等功能。admin管理员用户对所有目录具有文件上传、下载、删除、权限更改等功能。
5、对每个部门定制一个 quota,设置该账户的文件配额为1000个;磁盘配额为2G。
6、匿名用户不能访问。
第一、增加一块硬盘,然后分区,把分区挂载情况写入/etc/fstab
# fdisk /dev/hdb
# mkfs.ext3 /dev/hdb1
# mkidr /ftp
# mount /dev/hdb1 /ftp -o usrquota,grpquota
# vim /etc/fstab
加入下面一句
/dev/hdb1 /ftp ext3 defaults,usrquota,grpquota 0 0
第二、建立用户组和用户和相应的文件夹并更改权限,达到题目要求
# groupadd dep1
# groupadd dep2
# groupadd dep3
# groupadd dep4
# groupadd boobooke
# usradd -G dep1,boobooke user1
# usradd -G dep2,boobooke user2
# usradd -G dep3,boobooke user3
# usradd -G dep4,boobooke user4
# usradd -G dep1,dep2,dep3,dep4,boobooke admin
# passwd user1
# passwd user2
# passwd user3
# passwd user4
# passwd admin
# mkdir /ftp/dep1
# mkdir /ftp/dep2
# mkdir /ftp/dep3
# mkdir /ftp/dep4
# mkdir /ftp/public
# chmod uesr1:dep1 /ftp/dep1
# chmod uesr2:dep2 /ftp/dep2
# chmod uesr3:dep3 /ftp/dep3
# chmod uesr4:dep4 /ftp/dep4
# chmod admin:boobooke /ftp/public
# chmod 770 /ftp/dep1
# chmod 770 /ftp/dep2
# chmod 770 /ftp/dep3
# chmod 770 /ftp/dep4
# chmod 770 /ftp/pubic
最终结果如下
-rw------- 1 root root 8192 Jul 26 11:46 aquota.group
-rw------- 1 root root 7168 Jul 26 11:46 aquota.user
drwxrwx--- 2 user1 dep1 4096 Jul 25 20:47 dep1
drwxrwx--- 2 user2 dep2 4096 Jul 25 20:47 dep2
drwxrwx--- 2 user3 dep3 4096 Jul 25 20:47 dep3
drwxrwx--- 2 user4 dep4 4096 Jul 25 20:47 dep4
drwx------ 2 root root 16384 Jul 25 20:44 lost+found
drwxrwx--- 2 admin boobooke 4096 Jul 25 20:48 public
第三、创建quota,配置磁盘配额
#mount /dev/hdb1 /ftp -o usrquota,grpquota
# quotacheck -cuvg /dev/sdb1
# quotaon -a
# edquota -g dep1
Disk quotas for group dep1 (gid 503):
Filesystem blocks soft hard inodes soft hard
/dev/hdb1 0 1024000 2048000 0 500 1000
# edquota -g -p dep1 dep2 dep3 dep4(-u -g将源用户组和群组的quota设置套用至其他用户或群组。)
第四、编辑VSFTPD.CONF
# vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
加入
local_root=/ftp
user_config_dir=/etc/vsftpd/ftp_config_dir
开启chroot
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
第五、建立用户的独立文件
# mkdir /etc/vsftpd/ftp_config_dir
# vim /etc/vsftpd/ftp_config_dir/user1
cmds_allowed=ABOR,ACCT,APPE,CWD,CDUP,HELP,LIST,MODE,MDTM,NOOP,NLST,PASS,PASV,PORT,PWD,QUIT,REIN,RETR,SITE,SIZE,STOR,STAT,STOU,STRU,SYST,TYPE,USER
# cp /etc/vsftpd/ftp_config_dir/user1 /etc/vsftpd/ftp_config_dir/user2
# cp /etc/vsftpd/ftp_config_dir/user1 /etc/vsftpd/ftp_config_dir/user3
# cp /etc/vsftpd/ftp_config_dir/user1 /etc/vsftpd/ftp_config_dir/user4