分类:
2006-11-30 15:43:46
安装一个软件实在是不许要在这里介绍,因此,这里的安装主要针对vsFTPd服务器的初级配置。
VSFTPD的菜鸟篇
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
[原文出处 ]
这
是我这个菜鸟学习LINUX所写的第一篇文章,是比较基础的FTP架设的应用,如果我写有什么问题请大家多指教,我后续会陆续出进阶篇把FTP中各种详细
的配置跟大家一起进行探讨。我所用的是Redhat Linux AS +
VSFTPD-1.2.0-4的系统架构,在这里说明的是如果对配置文件不是很熟悉,最好做个备份,以免误操作:
在/etc/vsftpd/vsftpd.conf配置文件中添加如下几项:
anonymous_enable=yes (允许匿名登陆)
dirmessage_enable=yes (切换目录时,显示目录下.message的内容)
local_umask=022 (FTP上本地的文件权限,默认是077)
connect_form_port_20=yes (启用FTP数据端口的数据连接)*
xferlog_enable=yes (激活上传和下传的日志)
xferlog_std_format=yes (使用标准的日志格式)
ftpd_banner=XXXXX (欢迎信息)
pam_service_name=vsftpd (验证方式)*
listen=yes (独立的VSFTPD服务器)*
功能:只能连接FTP服务器,不能上传和下传
注:其中所有和日志欢迎信息相关连的都是可选项,打了星号的无论什么帐户都要添加,是属于FTP的基本选项
在配置文件中添加以下的信息即可:
Anon_upload_enable=yes (开放上传权限)
Anon_mkdir_write_enable=yes (可创建目录的同时可以在此目录中上传文件)
Write_enable=yes (开放本地用户写的权限)
Anon_other_write_enable=yes (匿名帐号可以有删除的权限)
在配置文件中添加如下信息即可:
Anon_world_readable_only=no
注:要注意文件夹的属性,匿名帐户是其它(other)用户要开启它的读写执行的权限
(R)读-----下传 (W)写----上传 (X)执行----如果不开FTP的目录都进不去
在配置文件中添加如下信息即可:
Local_enble=yes (本地帐户能够登陆)
Write_enable=no (本地帐户登陆后无权删除和修改文件)
功能:可以用本地帐户登陆vsftpd服务器,有下载上传的权限
注:在禁止匿名登陆的信息后匿名服务器照样可以登陆但不可以上传下传
设置所有的本地用户都执行chroot
Chroot_local_user=yes (本地所有帐户都只能在自家目录)
设置指定用户执行chroot
Chroot_list_enable=yes (文件中的名单可以调用)
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list
注意:vsftpd.chroot_list 是没有创建的需要自己添加,要想控制帐号就直接在文件中加帐号即可
Userlist_enable=yes (用userlistlai 来限制用户访问)
Userlist_deny=no (名单中的人不允许访问)
Userlist_file=/指定文件存放的路径/ (文件放置的路径)
注:开启userlist_enable=yes匿名帐号不能登陆
Idle_session_timeout=600(秒) (用户会话空闲后10分钟)
Data_connection_timeout=120(秒) (将数据连接空闲2分钟断)
Accept_timeout=60(秒) (将客户端空闲1分钟后断)
Connect_timeout=60(秒) (中断1分钟后又重新连接)
Local_max_rate=50000(bite) (本地用户传输率50K)
Anon_max_rate=30000(bite) (匿名用户传输率30K)
Pasv_min_port=50000 (将客户端的数据连接端口改在
Pasv_max_port=60000 50000—60000之间)
Max_clients=200 (FTP的最大连接数)
Max_per_ip=4 (每IP的最大连接数)
Listen_port=5555 (从5555端口进行数据连接)
ps –xf |grep ftp
kill 进程号
VSFTPD的高手篇
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明
[原文出处 ]
我可不是高手!!!^_^我只不过是个菜鸟,尽我的能力写出了我这个菜鸟觉得的高手篇,所以有什么错误请大家指正哦!!!
环境:linux as 3.0 + vsftpd -1.2.0-4的系统架构,是在独立服务器下的哦!讨厌XINETD^_^
首先创建用户组 test和FTP的主目录
groupadd test
mkdir /tmp/test
然后创建用户
useradd -G test –d /tmp/test –M usr1
注:G:用户所在的组 d:表示创建用户的自己目录的位置给予指定
M:不建立默认的自家目录,也就是说在/home下没有自己的目录
useradd –G test –d /tmp/test –M usr2
接着改变文件夹的属主和权限
chown usr1.test /tmp/test ----这表示把/tmp/test的属主定为usr1
chmod 750 /tmp/test ----7表示wrx 5表示rx 0表示什么权限都没有
这个实验的目的就是usr1有上传、删除和下载的权限
而usr2只有下载的权限没有上传和删除的权限
当然啦大家别忘了我们的主配置文件vsftpd.conf
要确定local_enable=yes、write_enable=yes、chroot_local_usr=yes这三个选项是有的哦!
这个非常容易:在VSFTPD。CONF中添加
Listen_port=33333
就可以了啦!
(两个有读目录的权限,一个有浏览、上传、下载的权限,一个有浏览、下载、删除和改文件名的权限)
第一块网卡地址是10.2.3.4 掩码是255.255.0.0
ifconfig eth0:1 211.131.4.253 netmask 255.255.255.0 up
cd /etc/sysconfig/network-scripts
cp ifcfg-eth0 ifcfg-eth0:1
vi ifcfg-eth0:1在其中修改内容如下
DEVICE=eth0:1
BROADCAST=211.131.4.255
HWADDR=该网卡的MAC地址
IPADDR=211.131.4.253
NETMASK=255.255.255.0
NETWORK=211.131.4.0
onBOOT=yes
TYPE=Ethernet
wq退出
cp vsftpd.conf vsftpd2.conf
修改vsftpd.conf添加以下信息
Listen_address=10.2.3.4
修改vsftpd2.conf添加以下信息
Listen_address=211.131.4.253
Ftpd_banner=this is a virtual ftp test
到此虚拟的FTP服务器建立好了
vi /tmp/logins.txt
添加入下信息:
longlei------------用户名
longlei------------密码
zhangweibo
zhangweibo
jinhui
jinhui
lxp
lxp
格式要按照我的来哦,一个用户名,一个密码啦
db_load –T –t hash –f /tmp/logins.txt /etc/vsftpd_login.db
在此文件中添加如下信息
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
useradd -d /var/ftp/test qiang
chmod 700 /var/ftp/test
在目录中添加test_file测试文件
Listen_yes
Anonymous_enable=no
Local_enable=yes
Write_enable=no
Anon_upload_enable=no
Anon_mkdir_write_enable=no
Anon_other_write_enable=no
Chroot_local_user=yes
Guest_enable=yes----------起用虚拟用户
Guest_username=qiang------将虚拟用户映射为本地用户
Listen_port=5555
Max_client=10
Max_per_ip=1
Ftpd_banner=this is a virtual server and users
Pam_service_name=ftp.vu
注:在主配置文件中给的权限越低,在后面分用户管理的时候对拥护的权限划分的空间就越大,因为主配置文件最高的限制服务先读主配置文件,然后再读用户的配置文件
重起服务。到此虚拟USER就建好了
Longlei zhangweibo jinhui lxp
在longlei中添加:
Anon_world_readable_only=no
在lxp中添加
Anon_world_readable_only=no
这样此两个用户就有了浏览目录的权限了
在jinhui中添加
Anon_world_readable_only=no
Write_enable=yes
Anon_upload_enable=yes
此用户就有了上传、下载和浏览的权限
在zhangweibo中添加
Anon_world_readable_only=no
Write_enable=yes
Anon_upload_enable=yes
Anon_other_write_enable=yes
此用户就有了上传、下载、删除文件目录、修改文件名和浏览的权限
加入user_config_dir=/vsftpd.conf所在的目录/virtual
重起服务器就搞定了
Anonymous_enable=yes | 允许匿名登陆 |
Dirmessage_enable=yes | 切换目录时,显示目录下.message的内容 |
Local_umask=022 | FTP上本地的文件权限,默认是077 |
Connect_form_port_20=yes | 启用FTP数据端口的数据连接 * |
Xferlog_enable=yes | 激活上传和下传的日志 |
Xferlog_std_format=yes | 使用标准的日志格式 |
Ftpd_banner=XXXXX | 欢迎信息 |
Pam_service_name=vsftpd | 验证方式 * |
Listen=yes | 独立的VSFTPD服务器 * |
Anon_upload_enable=yes | 开放上传权限 |
Anon_mkdir_write_enable=yes | 可创建目录的同时可以在此目录中上传文件 |
Write_enable=yes | 开放本地用户写的权限 |
Anon_other_write_enable=yes | 匿名帐号可以有删除的权限 |
Anon_world_readable_only=no | 放开匿名用户浏览权限 |
Ascii_upload_enable=yes | 启用上传的ASCII传输方式 |
Ascii_download_enable=yes | 启用下载的ASCII传输方式 |
Banner_file=/var/vsftpd_banner_file | 用户连接后欢迎信息使用的是此文件中的相关信息 |
Idle_session_timeout=600(秒) | 用户会话空闲后10分钟 |
Data_connection_timeout=120(秒) | 将数据连接空闲2分钟断 |
Accept_timeout=60(秒) | 将客户端空闲1分钟后断 |
Connect_timeout=60(秒) | 中断1分钟后又重新连接 |
Local_max_rate=50000(bite) | 本地用户传输率50K |
Anon_max_rate=30000(bite) | 匿名用户传输率30K |
Pasv_min_port=50000 | 将客户端的数据连接端口改在 |
Pasv_max_port=60000 | 50000—60000之间 |
Max_clients=200 | FTP的最大连接数 |
Max_per_ip=4 | 每IP的最大连接数 |
Listen_port=5555 | 从5555端口进行数据连接 |
Local_enble=yes | 本地帐户能够登陆 |
Write_enable=no | 本地帐户登陆后无权删除和修改文件 |
下面这是一组 | |
Chroot_local_user=yes | 本地所有帐户都只能在自家目录 |
Chroot_list_enable=yes | 文件中的名单可以调用 |
Chroot_list_file=/任意指定的路径/vsftpd.chroot_list | 前提是chroot_local_user=no |
这又是一组 | |
Userlist_enable=yes | 在指定的文件中的用户不可以访问 |
Userlist_deny=yes | |
Userlist_file=/指定的路径/vsftpd.user_list | |
又开始单的了 | |
Banner_fail=/路径/文件名 | 连接失败时显示文件中的内容 |
Ls_recurse_enable=no | |
Async_abor_enable=yes | |
one_process_model=yes | |
Listen_address=10.2.2.2 | 将虚拟服务绑定到某端口 |
Guest_enable=yes | 虚拟用户可以登陆 |
Guest_username=所设的用户名 | 将虚拟用户映射为本地用户 |
User_config_dir=/任意指定的路径/为用户策略自己所建的文件夹 | 指定不同虚拟用户配置文件的路径 |
又是一组 | |
Chown_uploads=yes | 改变上传文件的所有者为root |
Chown_username=root | |
又是一组 | |
Deny_email_enable=yes | 是否允许禁止匿名用户使用某些邮件地址 |
Banned_email_file=//任意指定的路径/xx/ | |
又是单的 | |
Pasv_enable=yes | 服务器端用被动模式 |
User_config_dir=/任意指定的路径//任意文件目录 | 指定虚拟用户存放配置文件的路径 |
现在这里还没有关于维护vsftp服务器的资料。欢迎大家编辑2
我们要自己建一个文件,在/etc目录中
#touch /etc/vsftpd.chroot_list
以beinan和nanbei这两个用户限制在他们所在的家目录中,而其它的FTP用户不做此限制。
在vsftpd.chroot_list这个文件中,把beinan和nanbei添上去就行,注意,每个用户占一行。
beinan
nanbei
然后改/etc/vsftpd/vsftpd.conf文件,找如下的两行
#chroot_list_enable=YES
#chroot_list_file=/etc/vsftpd.chroot_list
把前面的#号去掉,也就是这样的
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd.chroot_list
如果没有这样的两行,就可以自己添加上去也是一样的。
设置好后,重新vsFTPD服务器。
补充一之补充:如何把系统内所有的FTP用户都限制在家目录中呢??经juliaugong兄的提示,我查找了vsFTPd的洋文说明,证明这个选项是一刀切的解决所有的用户都能限制在家目录中
我们可以通过更改vsftpd.conf文件,加入如下的一行
chroot_local_user=YES
改完配制文件,不要忘记重启vsFTPd服务器
[root@linuxsir001 root]# /etc/init.d/vsftpd restart
关闭 vsftpd: [ 确定 ]
为 vsftpd 启动 vsftpd: [ 确定 ]
[root@linuxsir001 root]#
把下面xferlog_file前面的#号对掉,也就是把vsftp的log功能打开,这样我们就能在/var/log目录下查看vsftpd.log。这是vsFTP的日志功能,这对于我们来说是极为重要的。
#xferlog_file=/var/log/vsftpd.log
也就是说,如何让用户只能通过某个IP来访问FTP。其实这个功能很有意思。如果绑定的是内网的IP,外部是没有办法访问的。如果绑定的是对外服务的IP,内网也只能通过对外服务的IP来访问FTP
在/etc/vsftpd/vsftpd.conf中加一行,以我的局域网为例,请看第一帖中的操作环境,这样外网就不能访问我的FTP了,内网也可能通过192.168.0.2来访问FTP
listen_address=192.168.0.2
加完后,要重启vsFTP服务器
[root@linuxsir001 root]# /etc/init.d/vsftpd restart
关闭 vsftpd: [ 确定 ]
为 vsftpd 启动 vsftpd: [ 确定 ]
[root@linuxsir001 root]#
答:应该改vsFTP服务器的配制文件vsftpd.conf,加入下面的两行:
max_clients=数字
max_per_ip=数字
举例:我想让我的vsFTP最大支持链接数为100个,每个IP,最多能支持5个链接,所以我应该在vsftpd.conf中加上如下的两行:
max_clients=100
max_per_ip=5
改好了配制文件,不要忘记启动vsftp服务器。
anon_max_rate=数字 注:这是匿名的下载速度 local_max_rate=数字 注:这是vsFTP服务器上普通用户的下载速度
注:这个数字的单位是字节,所以我们要计算一下。比如我想让匿名用户和vsFTP上的用户都以80KB下载,所以这个数字应该是1024x80=81920 所以我们要在vsftpd.conf中加入下面的两行
anon_max_rate=81920
local_max_rate=81920
不要忘记重启vsftpd服务
我的硬盘空间有限,如何把帐号ftp默认的路径/var/ftp更改到别处?或者是,我的linux所有的目录都放在/根分区,因为空间紧张,我能否把ftp这个用户的默认路径放到别的分区?
可以,应该如下操作!
首先要把ftp这个用户删除
#userdel -r ftp
会有错误信息,不过不用理,这是正常的。
然后我们再把这个用户添加上,比如我想为帐号ftp的家目录设置在/mnt/LinG/ftp,我们就可以如下操作
[root@linuxsir001 root]# mkdir /mnt/LinG
[root@linuxsir001 root]# adduser -d /mnt/LinG/ftp -g ftp -s /sbin/nologin ftp
仅仅是这样做还不行,因为这样还是不能让匿名用户找到它的家目录,所以我们必须改变/mnt/LinG/ftp这个目录的权限。
[root@linuxsir001 root]# chmod 755 /mnt/LinG/ftp/
[root@linuxsir001 root]# chown -R root.root /mnt/LinG/ftp/
如何在我们登入有些FTP之后,会出现类似:欢迎您来到LinuxSir FTP,在这里,您会得到最真诚的帮助,如果有什么问题和建议,请来信,多谢。
实现这个并不难,我们可以查看vsftpd.cof文件中,是否有这行。
dirmessage_enable=YES
如果没有就加上,如果dirmessage_enable=YES前面有#号,就把#号去掉。
然后我们制定一个.message文件,写上您想要写的东西,比如是.message的内容是如下的:
欢迎您来到LinuxSir FTP!
在这里,您会得到最真诚的帮助;
如果有什么问题和建议,请来信,多谢。
我们可以用编辑器来写这个.message,我想这个过程就不用说了吧。
然后我们把.message这个文件复制到各个用户的家目录中。比如我的FTP的一个用户是beinan,这个用户所在的家目录是/home/beinan
我 们就要把.message放在/home/beinan这个目录下。如果系统用户ftp,他的目录就是/var/ftp这个目录,这个是默认的,当匿名用 户登入时就访问的是/var/ftp这个目录。我们要让匿名用户能看到欢迎信息。就要把.message放在/var/ftp目录中。其它的用户,也无非 就是类似的操作。
比如: /home/a 映射为 /home/b/c 则为
其实这个不能说是vsFTPd的内容,其实我们早就接触过了,可能我们没有注意,我们可以通过如下的方法来实现。
#mount --bind [原有的目录] [新目录]
比如我的ftp的默认目录是/var/ftp,我想把/mnt/LinG/WinSoft文件夹,映射到/var/ftp目录中,我就如下操作
我们要先在/var/ftp目录中建一个目录
#mkdir /var/ftp/WinSoft
然后执行mount命令
#mount --bind /mnt/LinG/WinSoft /var/ftp/WinSoft
这样就OK了。
在默认的情况下,vsftp是不支持匿名用户的访问的,所以我们要自己打开相应的选项。现在我针对这个问题,我们要打开如下的选项。
anonymous_enable=YES 注:允许匿名访问
anon_upload_enable=YES 注:允许上传
anon_mkdir_write_enable=YES 注:允许建立相应的目录
anon_umask=022 把上传到FTP的文件或者目录改变权限
当然打开这些选项还是不行的,我们还要让匿名写入文件的上一级目录有写入权,以我所做的FTP为例,我所做的FTP的匿名访问的目录是 /var/ftp,在vsFTPd中,/var/ftp这个目录是不能让匿名用户有写入权限的,这是为了安全考虑,所以我们必须自己在/var/ftp目 录中建一个目录,让这个目录有写入权。
比如:我在/var/ftp目录建一个upload目录,然后把它的权限设置成777,这样匿名用户就能写入了。
#mkdir /var/ftp/upload
#chmod 777 /var/ftp/upload
改了一系列的文件,不要忘记重启vsFTPd服务器
我是用standalone模式的,当然用下面的方法
[root@linuxsir001 root]# service vsftpd restart
关闭 vsftpd: [ 确定 ]
为 vsftpd 启动 vsftpd: [ 确定 ]
[root@linuxsir001 root]#
如果您用的是xinetd模式来启动vsFTPd,我们要重启xinetd服务器
[root@linuxsir001 root]# service xinetd restart
停止 xinetd: [ 确定 ]
启动 xinetd: [ 确定 ]
[root@linuxsir001 root]# ]
通过pam认证,用db_load添加用户,是真正的虚拟用户。现在我们简单的介绍一下,通过以后的学习,我们再深入补充:
1。在/etc/pam.d/目录中创建一个文件ftp
[root@linuxsir001 root]# touch /etc/pam.d/ftp
2。在/etc/pam.d/ftp里面加上如下的两行
auth required /lib/security/pam_userdb.so db=/etc/vsftpd_login
account required /lib/security/pam_userdb.so db=/etc/vsftpd_login
3。创建一系统的用户名用密码的文件logins.txt
[root@linuxsir001 root]# touch logins.txt
在logins.txt文件中,输入如下的内容。这个内容您可以自己来定。比如我下面的。其实linuxsir007是FTP的虚拟用 户名,123456是linuxsir007的密码;linuxsir008是虚拟用户名,234567是linuxsir008的密码,以此类推,您想 加入几个就是几个;下面是我添加的FTP的虚拟用户名和密码。
linuxsir007
123456
linuxsir008
234567
linuxsir009
567890
linuxsir010
678901
linuxsir011
789012
4。创建一个真实的用户名linuxsir006,这个linuxsir006的用户,所在的家目录由您来定。我在这里不多说了。我是按系统默认的来添加的。
[root@linuxsir001 root]# useradd linuxsir006
5。把/etc/hosts复制到/home/linuxsir006,并改变它的属主
[root@linuxsir001 root]#cp /etc/hosts /home/linuxsir006/hosts
[root@linuxsir001 root]#chown linuxsir006.linuxsir006 /home/linuxsir006/hosts
6。通过db_load来创建虚拟用户的库文件。我们在前面建的logins.txt文件,我是放在了/root用户目录下。所以咱们得把目录切换到/root目录来创建虚拟用户的库文件。
[root@linuxsir001 root]# db_load -T -t hash -f logins.txt /etc/vsftpd_login.db
7。更改vsftpd.conf文件,加入如下的几行
pam_service_name=ftp
guest_enable=YES
guest_username=linuxsir006
anon_world_readable_only=NO
8。重启vsFTPd服务器;改了一系列的文件,不要忘记重启vsFTPd服务器
我是用standalone模式的,当然用下面的方法
[root@linuxsir001 root]# service vsftpd restart
关闭 vsftpd: [ 确定 ]
为 vsftpd 启动 vsftpd: [ 确定 ]
[root@linuxsir001 root]#
如果您用的是xinetd模式来启动vsFTPd,我们要重启xinetd服务器
[root@linuxsir001 root]# service xinetd restart
停止 xinetd: [ 确定 ]
启动 xinetd: [ 确定 ]
[root@linuxsir001 root]#
9。如果您想让用户登入FTP时,登入成功的相应的信息,请把您制作的.message复制到您的用户的家目录中,这方面的请参考前面的补充。
10。测试:
[root@linuxsir001 root]# ftp 192.168.0.1
Connected to 192.168.0.1.
220 (vsFTPd 1.1.3)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (192.168.0.1:root): linuxsir007
331 Please specify the password.
Password:
230-欢迎光临LinuxSir自由FTP
230-在这里,您将得到最真诚的帮助!
230-本站限度为30KB!
230-每个IP限四个线程
230-请大家遵守FTP的有关规定。
230-多谢合作!
230-
230-LinuxSir管理部
230 Login successful. Have fun.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode (192,168,0,1,85,171)
150 Here comes the directory listing.
-rw-r--r-- 1 ftp ftp 174 Jun 01 12:59 hosts
drwxr-xr-x 3 ftp ftp 4096 Jun 01 13:29 linuxsir008
drwxr-xr-x 2 ftp ftp 4096 Jun 01 13:24 sun
226 Directory send OK.
ftp>
如何把Redhat 9.0中系统默认安装的vsftpd-1.1.3-8.i386.rpm,系统默认vsFTPd是用standalone启动方式 ,改为xinetd启动方式 ?如果是用源码包安装的,安装后就是xinetd模式,如果是用RPM包安装的,在Redhat 9.0中,应该用下面的方法来解决。
1.在/etc/xinetd.d/目录中创建一个文件vsftpd
[root@linuxsir001 root]# touch /etc/xinetd.d/vsftpd
/etc/xinetd.d/vsftpd内容如下:
service ftp
{
socket_type = stream
wait = no
user = root
server = /usr/sbin/vsftpd
# server_args =
# log_on_success += DURATION USERID
# log_on_failure += USERID
nice = 10
disable = no
}
2。复制vsftpd.conf到/etc/目录下,因为xinetd对vsFTPd配制文件应该在/etc目录下,所以我们就必须把 这个文件复制到/etc目录下,否则会出现系统中local用户无法登入,也就是说,不复制这个文件会出现ftp非匿名用户无法访问,只能用匿名用户访 问。
[root@linuxsir001 root]# cp /etc/vsftpd/vsftpd.conf /etc/vsftpd.conf
3。更改配制文件/etc/vsftpd.conf,把如下的项注掉:也就是把
listen=YES
改为
#listen=YES
或者是把这行删除也行。
4。把/etc/init.d/vsftpd这个文件删除。其实最好的备份到别处,因为我们有时实验来实验去,可能还会转到standalone模式启动。我就直接移动到别的目录,比如是/root下面的backup目录。
[root@linuxsir001 root]#mkdir /root/backup
[root@linuxsir001 root]# mv /etc/init.d/vsftpd /root/backup
5。运行ntsysv,把vsftpd的服务取消
[root@linuxsir001 root]#ntsysv
[ ] vsftpd
6。重启xinetd服务
[root@linuxsir001 root]# service xinetd restart