- 浏览: 285640 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
jim8757:
能提供下完整的代码吗?
实例解析java + jQuery + json工作过程(登录) -
befairy:
收藏,谢谢LZ
基于Java、jQuery应用的账务管理系统开源了(09.3.19更新) -
Gilbert_Sam:
我看过这本书,很好,看到二十几章的地方,结果网站就登陆不上,写 ...
Linux C编程一站式学习 http://learn.akae.cn/ -
ljy520zhiyong:
这个网址进入不了呀
Linux C编程一站式学习 http://learn.akae.cn/ -
蜀山红日:
如果后台要向前台返回复杂数据该怎么办呢
实例解析java + jQuery + json工作过程(登录)
# vi /etc/vsftpd/vsftpd.conf
1,开启ACSII上传下载传输模式
ascii_download_enable=YES //开启了下载时的ASCII模式数据传输
ascii_upload_enable=YES //开启了上传时的ASCII模式数据传输
因为二进制传输不用进行二进制和ASCII码之间的相互转化,因而速度较ASCII模式快,VSFTP在默认情况下是不开启ASCII码传输模式的,上述两个语句使ASCII上传下载传输模式分别开启。
2,更改FTP服务器默认监听端口
listen_port=3021 //改变默认的21端口号为3021
3,设置用户会话的空闲中断时间
idle_session_timeout=180 //连接服务器的用户在3分钟时间内没有任何动作将被断开,默认为300
4,设置空闲的数据连接的中断时间
data_connection_timeout=300 //数据连接空闲5分钟将被断开,默认为300秒
5,设置客户端空闲时的自动中断和激活连接的时间
accept_timeout=60 //客户端建立PASV模式数据连接空闲1分钟自动中断,默认为60秒
connect_timeout=60 //客户端在中断1分钟后自动激活连接,默认为60秒
6,设置最大传输速率限制
local_max_rate=50000 //本地用户最大传输速率为50kbytes/s
anon_max_rate=30000 //匿名用户最大传输速率为30kbytes/s
若把上述的数值设为0则为不限速,这也是VSFTP的默认值。
7,设置最大客户端连接数
max_clients=30 //服务器最大连接数设为30,默认为0,即不加以限制,安全的FTP应该加以限制
8,设置客户端连接时的端口范围
pasv_min_port=50000
pasv_max_port=60000
上述语句使客户端连接端口范围在50000至60000之间,这有利于提高服务器的安全。默认两个值都是0,即不限制,使用任意端口。
9,把用户限制在家目录,即设置chroot()
chroot_local_user
chroot_list_enable
chroot_list_file
要设置chroot(),可以使用
chroot_local_user=YES
上述语句是使全部的本地用户都被限制在家目录,这无法只限制特定的用户,要限制特定用户,使用下面的方法:
chroot_local_user=NO //关闭本地用户chroot()
chroot_list_enable=YES //开启要设置chroot()用户项
chroot_list_file=/etc/vsftpd.chroot_list //指定要设置chroot()的特定用户文件,这个文件的格式应该每个用户名占用一行
11,开启进站或进入目录的欢迎或说明性文字
dirmessage_enable=YES //开启目录文字选项
message_file=.welcome //欢迎或说明性文字文件设为.welcome,在默认是.message
这样在目录下建立文件.welcome(默认是.message),在用户进入目录时可把该文件的内容显示出来。
10,开启FTP服务器的日志功能
xferlog_enable=YES //启动日志记录功能,记录在xferlog_file指明的文件里xferlog_file=/var/log/ftp.log //日志记录在文件/var/log/ftp.log里,默认值为/var/log/xferlog
上面不是默认配置,默认配置是如下语句
xferlog_enable=YES
vsftpd_log_file=/var/log/vsftpd.log //日志记录在/var/log/vsftpd.log里,
默认也是这个文件
默认配置xferlog_std_format语句没有启用。
d)配置基于用户的访问控制
有两种方法:
A)使用认证文件,前面我们让本地用户能够登录服务器的时候是使用源码树里的一个样本pam文件(RedHat/vsftpd.pam),把它复制到/etc/pam.d/目录下并改名为ftp就可使本地用户登录,改名为ftp的原因是VSFTP默认的pam认证文件名为ftp,但我们可以使用下面的语句来改变
pam_service_name=vsftppam //这样设置后VSFTP使用/etc/pam.d/vsftppam文件来认证用户
回来主题,应该如何使本地用户不能登录呢?回想到原来本地用户不能够登录是因为没有ftp这个认证文件,那么我们把它删除就可以了。
B)使用VSFTP相关的几个语句
userlist_enable
userlist_deny
userlist_file
用这三个语句可以控制指定用户不能登录,方法如下:
userlist_enable=YES //用户清单功能开启
userlist_deny=YES //把用户清单设为拒绝用户清单
userlist_file=/etc/vsftpd.user_list //用户清单文件为
/etc/vsftpd.user_list,这个文件的格式也是一个用户名占用一行
因为第二个语句把文件/etc/vsftpd.user_list设为拒绝用户清单,那么,文件里
面的用户名都不能登录。
或是另外一种设置方法:
userlist_enable=YES //用户清单功能开启
userlist_deny=NO //把用户清单设为接受用户清单
userlist_file=/etc/vsftpd.user_list //用户清单文件为/etc/vsftpd.user_list
因为第二个语句把文件/etc/vsftpd.user_list设为接受用户清单,那么,文件里面的用户名都能登录,不在文件里的用户不能登录。
从这里可以看出userlist_deny语句起了开关的作用,可把用户清单文件设为拒绝或是接受,是不是很有趣?:)
e)配置安全的匿名FTP站点。要求匿名用户只有浏览和下载权限,没有其他的用户。
通过上面的学习,配置这种常见的匿名FTP站点很容易:
首先,把本地用户禁止登录,可以使用上面介绍的方法,这里不再复述。
然后,确定把下面的语句设为下面的样例:
anon_world_readable_only=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=NO
这样做之后,就能有一个满足要求的FTP站点了,其实只要设
anon_world_readable_only=YES也可以做到上述效果的了。
f)上面讲述的启动服务器的方法是都是以独立(standalone)进程的方式启动的,还有一种启动VSFTP的方法,就是使用超级服务器xinetd启动,这两种方法的区别是,xinetd的启动使支持的并发进程比独立进程方式启动少,不适合访问人数多的大站点,一般如果访问的流量少可以使用xinetd启动,如果是访问的流量多应该以独立方式启动。好了,下面介绍以xinetd启动的方法:
编辑/etc/vsftpd.conf把原来加入的listen=YES这行删除,或前面加注释#
编辑/etc/xinetd.d/vsftpd(这个文件在源码安装时已经被复制存在了),确定这行值为NO:
disable= NO
执行下面的命令重启xinetd服务器:
#service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
#ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 1.2.1)
Name (127.0.0.1:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
成功通过xinetd启动VSFTP了。
可以通过xinetd的功能实现控制VSFTP,下面一一介绍:
1,配置基于主机的访问控制
配置基于主机的访问控制可以使用超级服务器xinetd的功能,由xinetd去控制特定的IP可以访问FTP服务器,VSFTP只提供基于本地用户的访问控制,控制特定的访问可使用下面的xinetd的语句:
only_from //允许访问IP
no_access //拒绝访问IP
per_source //每个IP的最大连接数
instances //并发最高连接数
access_time //访问时间
banner_fail //登录失败显示的内容文件
这里的具体使用属于xinetd的内容,读者可以参考相关内容,这里就不多说了
2,配置绑定IP的FTP服务器
LINUX下可以使用虚拟网卡,这样我们就可以利用xinetd为VSFTP配置几个绑定IP的FTP服务器,执行如下的步骤来创建一个新的虚拟网卡,网卡IP可以自己指定,假定我们原来的IP为192.168.0.2,新加的IP为192.168.0.3,则:
#cp /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0:0
编辑/etc/sysconfig/network-scripts/ifcfg-eth0,把其中的相关字段改为如下的值:
DEVICE="eth0:0"
IPADDR="192.168.0.3"
保存后退出,执行下面的命令激活虚拟网卡eth0:0
#ifup eth0:0
这样就成功配置了虚拟网卡,现在我们要配置两个FTP服务器,分别绑定到192.168.0.2和192.168.0.3。
编辑/etc/xinetd.d/vsftpd,加入下面两行
server_args=/etc/vsftp.conf
bind=192.168.0.2
并确定disable=NO。
复制/etc/xinetd.d/vsftpd为/etc/xinetd.d/ftp,复制配置文件
/etc/vsftpd.conf为第二个服务器的配置文件/etc/ftp.conf
#cp /etc/xinetd.d/vsftpd /etc/xinetd.d/ftp
#cp /etc/vsftpd.conf /etc/ftp.conf
编辑/etc/xinetd.d/ftp,改bind=192.168.0.2为bind=192.168.0.3,改
server_args=/etc/vsftp.conf为server_args=/etc/ftp.conf同样disable=NO。
保存并退出。
为新的服务器加一个匿名用户映射的本地用户,类似我们安装的时候执行的命令一样:
#mkdir /var/ftp2/
#useradd -d /var/ftp2 ftp2
#chown root.root /var/ftp2
#chmod og-w /var/ftp2
这样就建立了映射的本地用户ftp2,家目录为/var/ftp2,这也是该服务器匿名用户登录时的根目录。
现在可以编辑第二个FTP服务器的配置文件/etc/ftp.conf了,首先把映射用户由默认的ftp改为我们新建的用户ftp2,但要注意,匿名用户登录的时候还是用anonymous或是ftp,用ftp2不能登录。使用下面的语句:
ftp_username=ftp2
另外,因为VSFTP默认是使用/etc/pam.d/ftp为本地用户的认证文件,所以现在两个服务器都是共用一个/etc/pam.d/ftp认证文件的,可以编辑/etc/ftp.conf使用下面的语句更改默认的认证文件使IP为192.168.0.3的新的FTP服务器使用新的认证文件,从而把两个服务器完全的独立开来:
pam_service_name=ftp2
这样就把192.168.0.3FTP服务器的认证文件改为/etc/pam.d/ftp2,若这个文件不存在,本地用户不能登录该服务器。
好了,另外的修改你可以参照上面的介绍修改以定制新的服务器的属性来满足需求。
修改/etc/ftp.conf完毕,保存退出。
用下面的命令重启xinetd:
#service xinetd restart
另外要确定两个服务器的配置文件没有listen=YES这一句,因为我们是以xinetd启动VSFTP服务器的。好了,可以进行测试了,具体过程不说了,结果说一下:以127.0.0.1不能访问任何的FTP服务器,但以192.168.0.2和192.168.0.3却可以分别访问两个服务器。
g)其实以独立方式启动FTP也可以创建虚拟服务器,下面把上面的两个服务器改为由独立方式启动的模式,直接更改它们两个配置文件就可以了:
编辑第一个服务器的配置文件/etc/vsftpd.conf,加入下面的两行:
listen_address=192.168.0.2
listen=YES
编辑第二个服务器的配置文件/etc/ftp.conf,加入下面的两行:
listen_address=192.168.0.3
listen=YES
保存后退出,由下面的命令来启动服务器:
#/usr/local/sbin/vsftpd /etc/ftp.conf &
[1] 2196
# /usr/local/sbin/vsftpd /etc/vsftpd.conf &
[2] 2201
测试一下,两个服务器都成功运行了。
h)VSFTP一个称为安全的保证是采用了虚拟用户的认证方式,它靠对/etc/pam.d/目录下指定的一个认证文件对用户进行认证,认证成功后再把虚拟用户映射为本地用户,该本地用户由服务器配置文件里的语句ftp_username的值指定。现在详细介绍虚拟用户的使用方法,使用PAM文件认证虚拟用户的方法需要有一个口令数据库文件来存储虚拟用户名和对应密码,首先建立一个文本文件,里面包含虚拟用户名和对应的密码,格式为虚拟用户名和密码各占一行,虚拟用户名后紧跟对应密码,举个例子,在我的家目录下有一个虚拟用户名和密码的文本文件test.txt
#cat ~/test.txt
test1
test1password
test2
test2password
格式就像上面的一样。
把上面的文本文件生成口令数据库文件以供PAM认证,这要用到db_load命令:
#db_load -T -t hash -f ~/test.txt /etc/user_passwd.db
这样我们就生成了/etc/user_passwd.db口令数据库文件。
在192.168.0.2服务器的PAM文件中加入这个口令数据库文件/etc/pam.d/ftp,删除掉原来的所有行或在前面加#注释掉,然后加入下面两行
auth required /lib/security/pam_userdb.so db=/etc/user_passwd
account required /lib/security/pam_userdb.so db=/etc/user_passwd
保存后退出,因为虚拟用户要映射为本地的用户,因此我们应该再加一个用户:
#adduser -d /var/ftp3/ ftp3
#chmod 605 /var/ftp3
然后编辑192.168.0.2服务器的配置文件/etc/vsftpd.conf:
加入或修改下面几个语句(值):
guest_enable=YES //开启虚拟用户的功能
guest_username=ftp3 //虚拟用户映射为本地用户ftp3
pam_service_name=ftp //PAM认证文件为/etc/pam.d/ftp
保存后退出。
启动服务:
# /usr/local/sbin/vsftpd /etc/vsftpd.conf &
分别用ftp或anonymous和test1或test2测试服务器,结果都能连通服务器,并且,匿名和虚拟用户登录后的根目录都不同,但在VSFTP推荐是不开启匿名服务,以策安全,但小心设置用户权限之后还是可以在保证系统安全的情况下一起开启匿名和虚拟用户的。
对虚拟用户分别分配权限,具体做法如下:
1,修改服务器配置文件,在这里192.168.0.2服务器的配置文件为
/etc/vsftpd.conf,在顶部加入一行:
user_config_dir=/etc/user_config //存放用户权限的配置文件的目录为
/etc/user_config
2,建立存放用户权限的配置文件的目录/etc/user_config/
#mkdir /etc/user_config/
3,在上面的目录下分别建立以每个用户的名称为文件名的文件,每个用户的文件里写入此用户的权限。在下面的例子里,我为test1用户建立具有浏览,下载,上传的权限,为test2用户建立具有浏览,下载的权限。
#echo "anon_world_readable_only=YES">/etc/user_config/test2 //test2用户只有读权限
#echo<<! >/etc/user_config/test2
>anon_world_readable_only=YES
>write_enable=YES
>anon_upload_enable=YES
>! //test1用户有浏览,上传,下载的权限
4,重启服务器:
#killall vsftpd
# /usr/local/sbin/vsftpd /etc/vsftpd.conf &
测试发现,两个用户的权限和我们希望的一样:)
5,不一定所有的测试都能成功,因为上面的讲解还不完善,还需要有几点特别注意的问题:
a)在服务器的配置文件(我们的例子里是/etc/vsftpd.conf)里的设置能覆盖用户权限的配置文件的设置(这里是目录/etc/user_config/下的文件),举个例子说明,像上面如果配置了用户了test2只有读权限,但在服务器配置文件里我们设置了匿名用户有读写权限,那么,可怕的事情会发生,test2也拥有读写权限!并且,像上面配置的匿名用户和虚拟用户test2即使不在同一个根目录,匿名用户在服务器
配置文件里的匿名用户根目录的读写权限也一样会使虚拟用户它的根目录拥有读写权限,听起来好像很复杂,但只要读者测试一下就会明白。
b)设置用户权限时要考虑用户映射的用户的文件系统权限,举个例子,如果用户虽然在配置文件里设置了有可写权限,但它在文件系统上是没有写权限的,综合的结果用户还是没有写权限。
c)这里总结一下,对于权限的设置不言而喻是很重要的,上面给出的要考虑方面应该综合起来分析,权限之间的制约关系要分清,才能正确的设置用户的权限。
1,开启ACSII上传下载传输模式
ascii_download_enable=YES //开启了下载时的ASCII模式数据传输
ascii_upload_enable=YES //开启了上传时的ASCII模式数据传输
因为二进制传输不用进行二进制和ASCII码之间的相互转化,因而速度较ASCII模式快,VSFTP在默认情况下是不开启ASCII码传输模式的,上述两个语句使ASCII上传下载传输模式分别开启。
2,更改FTP服务器默认监听端口
listen_port=3021 //改变默认的21端口号为3021
3,设置用户会话的空闲中断时间
idle_session_timeout=180 //连接服务器的用户在3分钟时间内没有任何动作将被断开,默认为300
4,设置空闲的数据连接的中断时间
data_connection_timeout=300 //数据连接空闲5分钟将被断开,默认为300秒
5,设置客户端空闲时的自动中断和激活连接的时间
accept_timeout=60 //客户端建立PASV模式数据连接空闲1分钟自动中断,默认为60秒
connect_timeout=60 //客户端在中断1分钟后自动激活连接,默认为60秒
6,设置最大传输速率限制
local_max_rate=50000 //本地用户最大传输速率为50kbytes/s
anon_max_rate=30000 //匿名用户最大传输速率为30kbytes/s
若把上述的数值设为0则为不限速,这也是VSFTP的默认值。
7,设置最大客户端连接数
max_clients=30 //服务器最大连接数设为30,默认为0,即不加以限制,安全的FTP应该加以限制
8,设置客户端连接时的端口范围
pasv_min_port=50000
pasv_max_port=60000
上述语句使客户端连接端口范围在50000至60000之间,这有利于提高服务器的安全。默认两个值都是0,即不限制,使用任意端口。
9,把用户限制在家目录,即设置chroot()
chroot_local_user
chroot_list_enable
chroot_list_file
要设置chroot(),可以使用
chroot_local_user=YES
上述语句是使全部的本地用户都被限制在家目录,这无法只限制特定的用户,要限制特定用户,使用下面的方法:
chroot_local_user=NO //关闭本地用户chroot()
chroot_list_enable=YES //开启要设置chroot()用户项
chroot_list_file=/etc/vsftpd.chroot_list //指定要设置chroot()的特定用户文件,这个文件的格式应该每个用户名占用一行
11,开启进站或进入目录的欢迎或说明性文字
dirmessage_enable=YES //开启目录文字选项
message_file=.welcome //欢迎或说明性文字文件设为.welcome,在默认是.message
这样在目录下建立文件.welcome(默认是.message),在用户进入目录时可把该文件的内容显示出来。
10,开启FTP服务器的日志功能
xferlog_enable=YES //启动日志记录功能,记录在xferlog_file指明的文件里xferlog_file=/var/log/ftp.log //日志记录在文件/var/log/ftp.log里,默认值为/var/log/xferlog
上面不是默认配置,默认配置是如下语句
xferlog_enable=YES
vsftpd_log_file=/var/log/vsftpd.log //日志记录在/var/log/vsftpd.log里,
默认也是这个文件
默认配置xferlog_std_format语句没有启用。
d)配置基于用户的访问控制
有两种方法:
A)使用认证文件,前面我们让本地用户能够登录服务器的时候是使用源码树里的一个样本pam文件(RedHat/vsftpd.pam),把它复制到/etc/pam.d/目录下并改名为ftp就可使本地用户登录,改名为ftp的原因是VSFTP默认的pam认证文件名为ftp,但我们可以使用下面的语句来改变
pam_service_name=vsftppam //这样设置后VSFTP使用/etc/pam.d/vsftppam文件来认证用户
回来主题,应该如何使本地用户不能登录呢?回想到原来本地用户不能够登录是因为没有ftp这个认证文件,那么我们把它删除就可以了。
B)使用VSFTP相关的几个语句
userlist_enable
userlist_deny
userlist_file
用这三个语句可以控制指定用户不能登录,方法如下:
userlist_enable=YES //用户清单功能开启
userlist_deny=YES //把用户清单设为拒绝用户清单
userlist_file=/etc/vsftpd.user_list //用户清单文件为
/etc/vsftpd.user_list,这个文件的格式也是一个用户名占用一行
因为第二个语句把文件/etc/vsftpd.user_list设为拒绝用户清单,那么,文件里
面的用户名都不能登录。
或是另外一种设置方法:
userlist_enable=YES //用户清单功能开启
userlist_deny=NO //把用户清单设为接受用户清单
userlist_file=/etc/vsftpd.user_list //用户清单文件为/etc/vsftpd.user_list
因为第二个语句把文件/etc/vsftpd.user_list设为接受用户清单,那么,文件里面的用户名都能登录,不在文件里的用户不能登录。
从这里可以看出userlist_deny语句起了开关的作用,可把用户清单文件设为拒绝或是接受,是不是很有趣?:)
e)配置安全的匿名FTP站点。要求匿名用户只有浏览和下载权限,没有其他的用户。
通过上面的学习,配置这种常见的匿名FTP站点很容易:
首先,把本地用户禁止登录,可以使用上面介绍的方法,这里不再复述。
然后,确定把下面的语句设为下面的样例:
anon_world_readable_only=YES
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=NO
这样做之后,就能有一个满足要求的FTP站点了,其实只要设
anon_world_readable_only=YES也可以做到上述效果的了。
f)上面讲述的启动服务器的方法是都是以独立(standalone)进程的方式启动的,还有一种启动VSFTP的方法,就是使用超级服务器xinetd启动,这两种方法的区别是,xinetd的启动使支持的并发进程比独立进程方式启动少,不适合访问人数多的大站点,一般如果访问的流量少可以使用xinetd启动,如果是访问的流量多应该以独立方式启动。好了,下面介绍以xinetd启动的方法:
编辑/etc/vsftpd.conf把原来加入的listen=YES这行删除,或前面加注释#
编辑/etc/xinetd.d/vsftpd(这个文件在源码安装时已经被复制存在了),确定这行值为NO:
disable= NO
执行下面的命令重启xinetd服务器:
#service xinetd restart
Stopping xinetd: [ OK ]
Starting xinetd: [ OK ]
#ftp 127.0.0.1
Connected to 127.0.0.1 (127.0.0.1).
220 (vsFTPd 1.2.1)
Name (127.0.0.1:root): test
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
成功通过xinetd启动VSFTP了。
可以通过xinetd的功能实现控制VSFTP,下面一一介绍:
1,配置基于主机的访问控制
配置基于主机的访问控制可以使用超级服务器xinetd的功能,由xinetd去控制特定的IP可以访问FTP服务器,VSFTP只提供基于本地用户的访问控制,控制特定的访问可使用下面的xinetd的语句:
only_from //允许访问IP
no_access //拒绝访问IP
per_source //每个IP的最大连接数
instances //并发最高连接数
access_time //访问时间
banner_fail //登录失败显示的内容文件
这里的具体使用属于xinetd的内容,读者可以参考相关内容,这里就不多说了
2,配置绑定IP的FTP服务器
LINUX下可以使用虚拟网卡,这样我们就可以利用xinetd为VSFTP配置几个绑定IP的FTP服务器,执行如下的步骤来创建一个新的虚拟网卡,网卡IP可以自己指定,假定我们原来的IP为192.168.0.2,新加的IP为192.168.0.3,则:
#cp /etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth0:0
编辑/etc/sysconfig/network-scripts/ifcfg-eth0,把其中的相关字段改为如下的值:
DEVICE="eth0:0"
IPADDR="192.168.0.3"
保存后退出,执行下面的命令激活虚拟网卡eth0:0
#ifup eth0:0
这样就成功配置了虚拟网卡,现在我们要配置两个FTP服务器,分别绑定到192.168.0.2和192.168.0.3。
编辑/etc/xinetd.d/vsftpd,加入下面两行
server_args=/etc/vsftp.conf
bind=192.168.0.2
并确定disable=NO。
复制/etc/xinetd.d/vsftpd为/etc/xinetd.d/ftp,复制配置文件
/etc/vsftpd.conf为第二个服务器的配置文件/etc/ftp.conf
#cp /etc/xinetd.d/vsftpd /etc/xinetd.d/ftp
#cp /etc/vsftpd.conf /etc/ftp.conf
编辑/etc/xinetd.d/ftp,改bind=192.168.0.2为bind=192.168.0.3,改
server_args=/etc/vsftp.conf为server_args=/etc/ftp.conf同样disable=NO。
保存并退出。
为新的服务器加一个匿名用户映射的本地用户,类似我们安装的时候执行的命令一样:
#mkdir /var/ftp2/
#useradd -d /var/ftp2 ftp2
#chown root.root /var/ftp2
#chmod og-w /var/ftp2
这样就建立了映射的本地用户ftp2,家目录为/var/ftp2,这也是该服务器匿名用户登录时的根目录。
现在可以编辑第二个FTP服务器的配置文件/etc/ftp.conf了,首先把映射用户由默认的ftp改为我们新建的用户ftp2,但要注意,匿名用户登录的时候还是用anonymous或是ftp,用ftp2不能登录。使用下面的语句:
ftp_username=ftp2
另外,因为VSFTP默认是使用/etc/pam.d/ftp为本地用户的认证文件,所以现在两个服务器都是共用一个/etc/pam.d/ftp认证文件的,可以编辑/etc/ftp.conf使用下面的语句更改默认的认证文件使IP为192.168.0.3的新的FTP服务器使用新的认证文件,从而把两个服务器完全的独立开来:
pam_service_name=ftp2
这样就把192.168.0.3FTP服务器的认证文件改为/etc/pam.d/ftp2,若这个文件不存在,本地用户不能登录该服务器。
好了,另外的修改你可以参照上面的介绍修改以定制新的服务器的属性来满足需求。
修改/etc/ftp.conf完毕,保存退出。
用下面的命令重启xinetd:
#service xinetd restart
另外要确定两个服务器的配置文件没有listen=YES这一句,因为我们是以xinetd启动VSFTP服务器的。好了,可以进行测试了,具体过程不说了,结果说一下:以127.0.0.1不能访问任何的FTP服务器,但以192.168.0.2和192.168.0.3却可以分别访问两个服务器。
g)其实以独立方式启动FTP也可以创建虚拟服务器,下面把上面的两个服务器改为由独立方式启动的模式,直接更改它们两个配置文件就可以了:
编辑第一个服务器的配置文件/etc/vsftpd.conf,加入下面的两行:
listen_address=192.168.0.2
listen=YES
编辑第二个服务器的配置文件/etc/ftp.conf,加入下面的两行:
listen_address=192.168.0.3
listen=YES
保存后退出,由下面的命令来启动服务器:
#/usr/local/sbin/vsftpd /etc/ftp.conf &
[1] 2196
# /usr/local/sbin/vsftpd /etc/vsftpd.conf &
[2] 2201
测试一下,两个服务器都成功运行了。
h)VSFTP一个称为安全的保证是采用了虚拟用户的认证方式,它靠对/etc/pam.d/目录下指定的一个认证文件对用户进行认证,认证成功后再把虚拟用户映射为本地用户,该本地用户由服务器配置文件里的语句ftp_username的值指定。现在详细介绍虚拟用户的使用方法,使用PAM文件认证虚拟用户的方法需要有一个口令数据库文件来存储虚拟用户名和对应密码,首先建立一个文本文件,里面包含虚拟用户名和对应的密码,格式为虚拟用户名和密码各占一行,虚拟用户名后紧跟对应密码,举个例子,在我的家目录下有一个虚拟用户名和密码的文本文件test.txt
#cat ~/test.txt
test1
test1password
test2
test2password
格式就像上面的一样。
把上面的文本文件生成口令数据库文件以供PAM认证,这要用到db_load命令:
#db_load -T -t hash -f ~/test.txt /etc/user_passwd.db
这样我们就生成了/etc/user_passwd.db口令数据库文件。
在192.168.0.2服务器的PAM文件中加入这个口令数据库文件/etc/pam.d/ftp,删除掉原来的所有行或在前面加#注释掉,然后加入下面两行
auth required /lib/security/pam_userdb.so db=/etc/user_passwd
account required /lib/security/pam_userdb.so db=/etc/user_passwd
保存后退出,因为虚拟用户要映射为本地的用户,因此我们应该再加一个用户:
#adduser -d /var/ftp3/ ftp3
#chmod 605 /var/ftp3
然后编辑192.168.0.2服务器的配置文件/etc/vsftpd.conf:
加入或修改下面几个语句(值):
guest_enable=YES //开启虚拟用户的功能
guest_username=ftp3 //虚拟用户映射为本地用户ftp3
pam_service_name=ftp //PAM认证文件为/etc/pam.d/ftp
保存后退出。
启动服务:
# /usr/local/sbin/vsftpd /etc/vsftpd.conf &
分别用ftp或anonymous和test1或test2测试服务器,结果都能连通服务器,并且,匿名和虚拟用户登录后的根目录都不同,但在VSFTP推荐是不开启匿名服务,以策安全,但小心设置用户权限之后还是可以在保证系统安全的情况下一起开启匿名和虚拟用户的。
对虚拟用户分别分配权限,具体做法如下:
1,修改服务器配置文件,在这里192.168.0.2服务器的配置文件为
/etc/vsftpd.conf,在顶部加入一行:
user_config_dir=/etc/user_config //存放用户权限的配置文件的目录为
/etc/user_config
2,建立存放用户权限的配置文件的目录/etc/user_config/
#mkdir /etc/user_config/
3,在上面的目录下分别建立以每个用户的名称为文件名的文件,每个用户的文件里写入此用户的权限。在下面的例子里,我为test1用户建立具有浏览,下载,上传的权限,为test2用户建立具有浏览,下载的权限。
#echo "anon_world_readable_only=YES">/etc/user_config/test2 //test2用户只有读权限
#echo<<! >/etc/user_config/test2
>anon_world_readable_only=YES
>write_enable=YES
>anon_upload_enable=YES
>! //test1用户有浏览,上传,下载的权限
4,重启服务器:
#killall vsftpd
# /usr/local/sbin/vsftpd /etc/vsftpd.conf &
测试发现,两个用户的权限和我们希望的一样:)
5,不一定所有的测试都能成功,因为上面的讲解还不完善,还需要有几点特别注意的问题:
a)在服务器的配置文件(我们的例子里是/etc/vsftpd.conf)里的设置能覆盖用户权限的配置文件的设置(这里是目录/etc/user_config/下的文件),举个例子说明,像上面如果配置了用户了test2只有读权限,但在服务器配置文件里我们设置了匿名用户有读写权限,那么,可怕的事情会发生,test2也拥有读写权限!并且,像上面配置的匿名用户和虚拟用户test2即使不在同一个根目录,匿名用户在服务器
配置文件里的匿名用户根目录的读写权限也一样会使虚拟用户它的根目录拥有读写权限,听起来好像很复杂,但只要读者测试一下就会明白。
b)设置用户权限时要考虑用户映射的用户的文件系统权限,举个例子,如果用户虽然在配置文件里设置了有可写权限,但它在文件系统上是没有写权限的,综合的结果用户还是没有写权限。
c)这里总结一下,对于权限的设置不言而喻是很重要的,上面给出的要考虑方面应该综合起来分析,权限之间的制约关系要分清,才能正确的设置用户的权限。
发表评论
-
Linux下停止sendmail服务
2010-12-18 07:41 3091每次LINUX启动到sendmail时候就不动了,等了好久才进 ... -
25+ 实用的Linux和Unix手册
2009-11-02 09:02 1412手册中包括 Linux的命令行,Linux安全,Liunx管理 ... -
linux下安装sendmail
2009-03-17 08:20 2075一、比较完整的应该包括以下包:1、sendmail软件包是服务 ... -
linux设置网关修改ip
2009-03-16 14:49 10321修改ip地址即时生效:# if ... -
一个检测show128文件更新的shell脚本
2009-03-16 10:41 897一个检测show128文件更新的shell脚本2004-04- ... -
Sqlite for Linux的安装方法
2009-03-16 10:37 1757下载 sqlite-3.3.5.tar.gz KMmLinux ... -
如何成为一名效率更高的linux系统管理员的 10 个关键技巧
2009-03-16 10:35 1486学会这 10 个技巧后,您将成为世界上最强大的 Linux® ... -
在linux下怎么查看自己机器的端口开放情况
2009-03-13 13:17 19451、今天配置jira的邮件服务器的时候,遇到了java.net ... -
Linux C编程一站式学习 http://learn.akae.cn/
2009-03-05 08:55 2349Blog荒了有半年了,这半年集中精力在写这本书,目前已经初见成 ... -
shell常用知识总结收藏
2009-02-20 08:52 1211var $tag=''; var $tag_code='210 ... -
crontab命令设置使用详解
2009-02-20 08:50 13631名称 : crontab 使用权限 : 所有使用者 使用方 ... -
Linux 查看磁盘分区、文件系统、使用情况的命令和相关工具介绍
2009-02-20 08:48 1173作者:北南南北 来自:LinuxSir.Org 提要:Lin ...
相关推荐
本篇文章将详细介绍如何在Ubuntu环境下安装并配置VSFTPD,以及提供一份完整的`vsftp.conf`配置文件示例。 首先,我们需要通过Ubuntu的包管理器`apt`来安装VSFTPD。打开终端并输入以下命令: ```bash sudo apt ...
`vsftpd.conf` 是 VSFTP(Very Secure FTP Daemon)服务器的核心配置文件,它决定了服务器如何运行、哪些功能被启用以及各种安全措施等。以下是对该配置文件中部分关键配置项的详细解释。 #### 二、详细配置说明 #...
主要的配置文件是`/etc/vsftpd.conf`,在这个文件中,你可以根据需求调整各种设置,如是否允许匿名登录、本地用户登录、写权限等。例如,为了启用匿名访问,你需要取消注释`anonymous_enable=YES`行。 启动或重启...
安装后,可以通过编辑`/etc/vsftpd.conf`配置文件来调整服务器设置。 3. **用户模式**:VSFTPD支持两种主要的用户模式:本地用户模式(Local User Mode)和虚拟用户模式(Virtual User Mode)。本地模式使用系统...
sed -i 's|anonymous_enable=YES|anonymous_enable=NO|g' /etc/vsftpd/vsftpd.conf sed -i 's|listen=NO|listen=YES|g' /etc/vsftpd/vsftpd.conf sed -i 's|listen_ipv6=YES|listen_ipv6=NO|g' /etc/vsftpd/vsftpd....
sed -i 's|anonymous_enable=YES|anonymous_enable=NO|g' /etc/vsftpd/vsftpd.conf sed -i 's|listen=NO|listen=YES|g' /etc/vsftpd/vsftpd.conf sed -i 's|listen_ipv6=YES|listen_ipv6=NO|g' /etc/vsftpd/vsftpd....
`vsftpd.conf`是VSFTPD服务的主要配置文件,它控制着服务器的行为和设置。对于初学者来说,理解和配置这个文件可能有些挑战,因为其中包含了大量的英文选项和指令。下面将详细介绍`vsftpd.conf`中的一些关键配置项,...
sed -i 's|anonymous_enable=YES|anonymous_enable=NO|g' /etc/vsftpd/vsftpd.conf sed -i 's|listen=NO|listen=YES|g' /etc/vsftpd/vsftpd.conf sed -i 's|listen_ipv6=YES|listen_ipv6=NO|g' /etc/vsftpd/vsftpd....
配置文件通常位于`/etc/vsftpd.conf`。修改此文件以设置用户权限、匿名访问、日志记录等。 7. **启动服务**:启动或重启`vsftpd`服务以应用更改: ```bash sudo systemctl start vsftpd 或 sudo service vsftpd...
配置文件通常位于`/etc/vsftpd.conf`,在这里可以调整服务器的行为,例如监听的端口、日志级别、用户权限等。 标签`vsftpd-3.0.3`明确指出了讨论的主题,表明重点是这个特定的VSFTPD版本。由于这是一个较旧的版本,...
默认情况下,VSFTPD的配置文件位于`/etc/vsftpd/vsftpd.conf`。根据需求修改这个配置文件,例如设置用户权限、匿名访问、被动模式端口等。完成后,启动并启用VSFTPD服务: ```bash sudo systemctl start vsftpd ...
接下来,我们需要修改VSFTP的配置文件`/etc/vsftpd/vsftpd.conf`,以启用虚拟用户和相关设置: ```bash echo "anonymous_enable=NO" >> /etc/vsftpd/vsftpd.conf echo "pam_service_name=vsftpd.vu" >> /etc/vsftpd...
6. **启动与配置**:安装完成后,需要创建并编辑`/etc/vsftpd/vsftpd.conf`配置文件,根据实际需求设置FTP服务器的行为,如匿名用户访问、本地用户访问、权限控制等。然后启动服务: ``` sudo systemctl start ...
复制 vsftpd.conf 配置文件,并命名为 vsftpd.conf.bak。然后,复制 vsftpd.conf 文件,并命名为 vsftpd2.conf。修改站点一的配置文件,添加 listen_address=10.1.5.120。 六、建立虚拟用户认证的口令库文件 使用 ...
- **检查配置文件**:确保`/etc/vsftpd.conf`中的设置符合需求。特别注意`listen=YES`和`anonymous_enable=NO`(除非你需要匿名访问)等选项。 - **验证防火墙设置**:确保防火墙规则允许FTP流量通过。可以尝试...
Linux 下 FTP 服务器安装配置 VSftp VSftp(Very Secure FTP)是一种在 Unix/Linux 中非常安全且快速稳定的 FTP 服务器,目前已经被许多大型站点所采用。VSftp 的实现有三种方式:匿名用户形式、本地用户形式和虚拟...
本文介绍了CentOS5中vsftp虚拟用户配置的实例,包括安装db4-utils软件包、创建logins_list文件、生成vsftpd_login.db文件、配置PAM认证、创建vsftpd_user_conf目录、配置vsftpd.conf文件、重启vsftpd服务等步骤。...
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.bak 4) 如果运行了vsftpd,则先停止: systemctl stop vsftpd 5) 安装升级vsftpd 3.0.4 rpm -Uvh vsftpd-3.0.4-1.el7.x86_64.rpm rpm -Uvh vsftpd-...
5. **配置vsftpd**:主要通过编辑`/etc/vsftpd.conf`配置文件来调整服务器设置,包括监听端口、用户权限、匿名FTP设置等。修改后需要重启服务使更改生效,如`sudo systemctl restart vsftpd`。 6. **vsftpd-3.0.2...
编辑 vsftpd 的配置文件 /etc/vsftpd/vsftpd.conf,添加 SSL 配置,开启 SSL 加密,并指定证书文件的路径。 5. 开启 vsftpd 服务 开启 vsftpd 服务,使得客户端可以使用 SSL 加密方式访问 FTP 服务器。 6. 查看...