感谢支持
我们一直在努力

Linux基础教程 – 架设FTP服务器[下部]

相关阅读:Linux基础教程 – 架设FTP服务器[上部]

六、搭建FTP服务器,禁止匿名用户访问,实现公共用户public只可以访问下载共享目录文件share1,内部员工internal可以上传下载内部共享目录share2,所有用户

不得离开默认目录,并且对客户端的连接数及下载速度做不同的限制。

  1. 禁止匿名用户访问

直接编辑FTP的主配置文件,把如下一行的匿名访问又“YES”改成“NO”:
anonymous_enable=NO
重启FTP服务测试:
[root@51cto ~]# service vsftpd restart
关闭 vsftpd:                                              [确定]
为 vsftpd 启动 vsftpd:                                    [确定]
[root@51cto ~]# ftp 218.192.86.145
Connected to 218.192.86.145.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (218.192.86.145:root): ftp
331 Please specify the password.
Password:
530 Login incorrect.
Login failed.
ftp>

  1. 创建用户数据库文件(创建用户文本文件–>生成数据库–>修改数据库文件访问权限)

1、创建用户文本文件vsftpd_virtualuser.txt,添加两个虚拟帐号publicinternal
[root@51cto ~]# vim /etc/vsftpd/vsftpd_virtualuser.txt
[root@51cto ~]# cat /etc/vsftpd/vsftpd_virtualuser.txt
public
123
internal
456
如上表示public用户密码123internal用户密码456,所以必须设置该文本文件权限只有root可见
2、安装db4-utils-4.3.29-9.fc6.i386.rpm包,以实现数据库的生成
[root@51cto ~]# mount /dev/cdrom /mnt/
mount: block device /dev/cdrom is write-protected, mounting read-only
[root@51cto ~]# rpm -ivh /mnt/Server/db4-utils-4.3.29-9.fc6.i386.rpm
warning: /mnt/Server/db4-utils-4.3.29-9.fc6.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186
Preparing…                ########################################### [100%]
  1:db4-utils              ########################################### [100%]
因为虚拟帐号和密码的文本文件无法被系统帐号直接调用,所以必须使用db_load命令生成db数据库文件,
[root@51cto ~]# db_load -T -t hash -f /etc/vsftpd/vsftpd_virtualuser.txt
/etc/vsftpd/vsftpd_virtualuser.db        //生成数据库文件
[root@51cto ~]# ll /etc/vsftpd/
总计 56
-rw——- 1 root root  125 2007-12-13 ftpusers
-rw——- 1 root root  361 2007-12-13 user_list
-rw——- 1 root root  4396 10-19 21:52 vsftpd.conf
-rwxr–r– 1 root root  338 2007-12-13 vsftpd_conf_migrate.sh
-rw-r–r– 1 root root 12288 10-19 22:11 vsftpd_virtualuser.db
-rw-r–r– 1 root root    25 10-19 22:04 vsftpd_virtualuser.txt
可以看到已经生成了数据库文件,但该文件的权限默认644,必须修改为600只是root可见
3、修改数据库文件访问权限
[root@51cto ~]# chmod 600 /etc/vsftpd/vsftpd_virtualuser.db
[root@51cto ~]# ll /etc/vsftpd/vsftpd_virtualuser.db
-rw——- 1 root root 12288 10-19 22:11 /etc/vsftpd/vsftpd_virtualuser.db

  1. 配置PAM文件(修改vsftpd对应的PAM配置文件/etc/pam.d/vsftpd)

为了使服务器能够使用数据库文件,对客户端进行身份验证,需要调用系统的PAM模块.
PAM(Plugable Authentication Module)为可插拔认证模块。PAM模块配置文件路径为/etc/pam.d/目录
,此目录下保存着大量与认证有关的配置文件,并以服务名称命名。
[root@51cto ~]# cat /etc/pam.d/vsftpd      //查看该文件
#%PAM-1.0
session    optional    pam_keyinit.so    force revoke
auth      required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth      required    pam_shells.so
auth      include      system-auth
account    include      system-auth
session    include      system-auth
session    required    pam_loginuid.so对于该文件直接把源文件使用“#”全部注释,然后添加新的认证配置文件,使得最终如下:
[root@51cto ~]# cat /etc/pam.d/vsftpd
#%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include     system-auth
#account    include     system-auth
#session    include     system-auth
#session    required     pam_loginuid.so
auth  required /lib/security/pam_userdb.so      db=/etc/vsftpd/vsftpd_virtualuser
account  required  /lib/security/pam_userdb.so  db=/etc/vsftpd/vsftpd_virtualuser


  1. 创建虚拟帐号对应的系统用户ftppublicftpinternal

公共用户public对应系统帐号ftppublic,并指定其主目录为/var/ftp/share1
而内部员工internal对应系统帐号ftpinternal,指定主目录为/var/ftp/share2
由于公共用户public只允许下载,不能上传,所以对应目录权限是rx可读可执行
而内部员工internal允许下载上传,所以对应目录权限是rwx可读可写可执行
[root@51cto ~]# useradd -d /var/ftp/share1 ftppublic   //添加系统帐号,指定自家目录
[root@51cto ~]# useradd -d /var/ftp/share2 ftpinternal
[root@51cto ~]# chmod -R 500 /var/ftp/share1
[root@51cto ~]# chmod -R 700 /var/ftp/share2
[root@51cto ~]# ll /var/ftp/
总计 24
drwxr-xr-x 2 root        root        4096 2007-12-13 pub
dr-x—— 3 ftppublic   ftppublic   4096 10-19 22:33 share1
drwx—— 3 ftpinternal ftpinternal 4096 10-19 22:34 share2

  1. 建立配置文件(修改vsftpd.conf主配置文件–>建立虚拟帐号配置文件)

1、修改vsftpd.conf主配置文件,使得如下:
[root@51cto ~]# grep -v “#” /etc/vsftpd/vsftpd.conf
anonymous_enable=NO        //禁止匿名用户
local_enable=YES             //将所有本地用户限制在自家目录中
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
listen=YES
pam_service_name=vsftpd      //配置vsftpd使用的PAM模块为vsftpd
user_config_dir=/etc/vsftpd/51cto     //设置虚拟帐号的主目录为51cto
userlist_enable=YES
tcp_wrappers=YES
2、建立虚拟帐号配置文件
FTP主配置文件中的user_config_dir指定的路径/etc/vsftpd/51cto下建立与虚拟帐号同名的
配置文件并添加相应的配置字段
[root@51cto ~]# mkdir /etc/vsftpd/51cto        //创建虚拟帐号的主目录
[root@51cto ~]# touch /etc/vsftpd/51cto/public     //建立虚拟帐号配置文件
[root@51cto ~]# touch /etc/vsftpd/51cto/internal
[root@51cto ~]# vim /etc/vsftpd/51cto/public
[root@51cto ~]# cat /etc/vsftpd/51cto/public
guest_enable=yes        //开启虚拟帐号登录
guest_username=ftppublic          //设置ftp对应的系统帐号为ftppublic
anon_world_readable_only=no    //赋予浏览目录的权限
anon_max_rate=60000      //限定传输速率为60KB/s
[root@51cto ~]# vim /etc/vsftpd/51cto/internal
[root@51cto ~]# cat /etc/vsftpd/51cto/internal
guest_enable=yes
guest_username=ftpinternal
anon_world_readable_only=no
write_enable=yes
anon_mkdir_write_enable=yes
anon_upload_enable=yes
anon_max_rate=150000          //限定传输速率为150KB/s
然后重启服务测试:
[root@51cto ~]# service vsftpd restart
关闭 vsftpd:                                                    [确定]
为 vsftpd 启动 vsftpd:                                    [确定]3、测试
首先在share1share2目录中添加测试文件:
[root@51cto ~]# cp /mnt/Server/httpd-2.2.3-22.el5.i386.rpm /var/ftp/share1/public.xls
[root@51cto ~]# cp /mnt/Server/mysql-5.0.45-7.el5.i386.rpm /var/ftp/share2/internal.xls
[root@51cto ~]# ll /var/ftp/share1/public.xls
-r–r–r– 1 root root 1270589 10-19 23:08 /var/ftp/share1/public.xls
[root@51cto ~]# ll /var/ftp/share2/internal.xls
-r–r–r– 1 root root 4347498 10-19 23:08 /var/ftp/share2/internal.xls
对于公共用户public来说:

 

测试能否下载:

测试能否上传:

上传被拒绝!
测试限速60KB/s:

对于内部员工internal来说:

 

测试能否下载:

测试能否上传:

 

测试限速150KB/s:

 
测试成功!!!

赞(0) 打赏
转载请注明出处:服务器评测 » Linux基础教程 – 架设FTP服务器[下部]
分享到: 更多 (0)

听说打赏我的人,都进福布斯排行榜啦!

支付宝扫一扫打赏

微信扫一扫打赏