linux文件服务器之ftp配置教程

发布时间:2019-07-18编辑:脚本学堂
本文介绍了linux下ftp文件服务器的配置方法,使用vsftpd配置ftp文件服务器,包括ftp匿名用户、ftp匿名用户共享目录、ftp授权用户等知识点,还有些其它vsftpd教程中未提及的秘诀,需要的朋友参考下。

linux文件服务器之ftp配置教程 第五部分
3.11 ftp——授权用户个性化设置(某个用户可以上传,其他用户不可以)
 

 --第一步,修改vsftpd.conf配置文件,加入user_config_dir参数  (www.jb200.com)
[root@serv01 vsftpd]# vim vsftpd.conf 
[root@serv01 vsftpd]# cat vsftpd.conf 
listen=yes 
anonymous_enable=no 
local_enable=yes 
pam_service_name=vsftpd 
local_root=/share 
#write_enable=yes 
local_max_rate=1024000 
#max_clients=10 
#max_per_ip=2 
#userlist_enable=yes 
#userlist_deny=yes 
chroot_list_enable=yes 
chroot_local_user=yes 
chroot_list_file=/etc/vsftpd/chroot_list 
user_config_dir=/etc/vsftpd/user_conf 
 --第二步,创建目录,并创建以用户名为文件名的文件 
[root@serv01 vsftpd]# mkdir/etc/vsftpd/user_conf 
[root@serv01 vsftpd]# ll user_conf/ -ld 
drwxr-xr-x. 2 root root 4096 Aug 13 23:53user_conf/ 
[root@serv01 vsftpd]# cd user_conf/ 
[root@serv01 user_conf]# vim larry 
[root@serv01 user_conf]# cat larry 
write_enable=yes 
--第三步,重启服务 
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart 
Shutting down vsftpd:      [  OK  ] 
Starting vsftpd for vsftpd:[  OK  ] 
  --第四步,测试。发现larry用户可以上传,justdb用户不可以上传 
 [root@serv02 ~]# ftp 192.168.1.11 
Connected to 192.168.1.11 (192.168.1.11). 
220 (vsFTPd 2.2.2) 
Name (192.168.1.11:root): larry 
331 Please specify the password. 
Password: 
230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp> cd upload 
250 Directory successfully changed. 
ftp> !ls 
aa01.txt aa02.txt  anaconda-ks.cfg  initramfs-2.6.32-131.0.15.el6.x86_64.img  install.log install.log.syslog  -l 
ftp> put aa01.txt 
local: aa01.txt remote: aa01.txt 
227 Entering Passive Mode(192,168,1,11,214,219). 
150 Ok to send data. 
226 Transfer complete. 
6 bytes sent in 0.0001 secs (60.00Kbytes/sec) 
ftp> exit 
221 Goodbye. 
[root@serv02 ~]# ftp 192.168.1.11 
Connected to 192.168.1.11 (192.168.1.11). 
220 (vsFTPd 2.2.2) 
Name (192.168.1.11:root): justdb 
331 Please specify the password. 
Password: 
230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp> cd upload 
250 Directory successfully changed. 
ftp> put aa02.txt 
local: aa02.txt remote: aa02.txt 
227 Entering Passive Mode(192,168,1,11,183,231). 
550 Permission denied. 
  
#注意:局部优先,也就是vsftpd.conf中包含write_enable=yes,且用户中#write_enable=no,那么该用户仍不能上传。 

3.12 ftp——授权用户——局部优先测试
 

--第一步,修改配置文件,把write_enable参数加入,把larry文件中改为no 
[root@serv01 vsftpd]# cat vsftpd.conf 
listen=yes 
anonymous_enable=no 
local_enable=yes 
pam_service_name=vsftpd 
local_root=/share 
write_enable=yes 
local_max_rate=1024000 
#max_clients=10 
#max_per_ip=2 
#userlist_enable=yes 
#userlist_deny=yes 
chroot_list_enable=yes 
chroot_local_user=yes 
chroot_list_file=/etc/vsftpd/chroot_list 
user_config_dir=/etc/vsftpd/user_conf 
[root@serv01 vsftpd]# cat user_conf/larry 
write_enable=no 
--第二步,重启服务 
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart 
Shutting down vsftpd:      [  OK  ] 
Starting vsftpd for vsftpd:[  OK  ] 
--第三步,测试。larry用户不能上传,justdb用可以上传 
[root@serv02 ~]# ftp 192.168.1.11 
Connected to 192.168.1.11 (192.168.1.11). 
220 (vsFTPd 2.2.2) 
Name (192.168.1.11:root): larry 
331 Please specify the password. 
Password: 
230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp> cd upload 
250 Directory successfully changed. 
ftp> put aa01.txt 
local: aa01.txt remote: aa01.txt 
227 Entering Passive Mode(192,168,1,11,147,45). 
550 Permission denied. 
ftp> exit 
221 Goodbye. 
[root@serv02 ~]# ftp 192.168.1.11 
Connected to 192.168.1.11 (192.168.1.11). 
220 (vsFTPd 2.2.2) 
Name (192.168.1.11:root): justdb 
331 Please specify the password. 
Password: 
230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp> cd upload 
250 Directory successfully changed. 
ftp> put aa02.txt 
local: aa02.txt remote: aa02.txt 
227 Entering Passive Mode(192,168,1,11,90,8). 
150 Ok to send data. 
226 Transfer complete. 
6 bytes sent in 9.1e-05 secs (65.93Kbytes/sec) 

3.13 ftp——授权用户虚拟帐号
 

[root@serv01 vsftpd]# cd/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS 
[root@serv01 VIRTUAL_USERS]# ll 
  
--第一步,创建真实用户larry并设定密码 
[root@serv01 vsftpd]# useradd larry 
[root@serv01 vsftpd]# passwd larry 
--第二步,创建logins.txt文件,并添加内容如下 
[root@serv01 ~]# vim logins.txt 
[root@serv01 ~]# cat logins.txt 
#注意:一行用户名,一行密码;交替使用 
larry01 
123456 
larry02 
123456 
larry03 
123456 
larry04 
123456 
--第三步,创建login.db文件 
[root@serv01 ~]# db_load -T -t hash -flogins.txt /etc/vsftpd/login.db 
[root@serv01 ~]# cd /etc/vsftpd/ 
--第四步,修改权限 
[root@serv01 vsftpd]# chmod 600 login.db 
--第五步,创建PAM文件,加入如下内容(可以到/usr/share/doc/vsftpd-2.2.2/EXAMPLE/VIRTUAL_USERS/README文件复制),注意因为我使用的系统是64位,所以需要把lib改成lib64,不然找不到这个模块文件 
[root@serv01 vsftpd]# vim /etc/pam.d/ftp 
[root@serv01 vsftpd]# cat /etc/pam.d/ftp 
auth required /lib/security/pam_userdb.sodb=/etc/vsftpd/login 
account required /lib/security/pam_userdb.sodb=/etc/vsftpd/login 
[root@serv01 vsftpd]# ls/lib/security/pam_userdb.so 
ls: cannot access/lib/security/pam_userdb.so: No such file or directory 
[root@serv01 vsftpd]# vim /etc/pam.d/ftp 
[root@serv01 vsftpd]# ls/lib64/security/pam_userdb.so 
/lib64/security/pam_userdb.so 
[root@serv01 vsftpd]# cat /etc/pam.d/ftp 
auth required /lib64/security/pam_userdb.sodb=/etc/vsftpd/login 
account required/lib64/security/pam_userdb.so db=/etc/vsftpd/login 
--第六步,修改vsftpd.conf配置文件 
[root@serv01 vsftpd]# vim vsftpd.conf 
[root@serv01 vsftpd]# cat vsftpd.conf 
listen=yes 
anonymous_enable=no 
local_enable=yes 
pam_service_name=ftp 
local_root=/share 
write_enable=yes 
local_max_rate=1024000 
#max_clients=10 
#max_per_ip=2 
#userlist_enable=yes 
#userlist_deny=yes 
chroot_list_enable=yes 
chroot_local_user=yes 
chroot_list_file=/etc/vsftpd/chroot_list 
user_config_dir=/etc/vsftpd/user_conf 
guest_enable=yes 
guest_username=larry 
--第七步,重启服务 
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart 
Shutting down vsftpd:      [  OK  ] 
Starting vsftpd for vsftpd:[  OK  ] 
--第八步,测试,注意使用虚拟用户登录,比如larry01 larry02 
[root@serv02 ~]# ftp 192.168.1.11 
Connected to 192.168.1.11 (192.168.1.11). 
220 (vsFTPd 2.2.2) 
Name (192.168.1.11:root): larry01 
331 Please specify the password. 
Password: 
230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp> exit 
221 Goodbye. 
[root@serv02 ~]# ftp 192.168.1.11 
Connected to 192.168.1.11 (192.168.1.11). 
220 (vsFTPd 2.2.2) 
Name (192.168.1.11:root): larry02 
331 Please specify the password. 
Password: 
230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp> exit 
221 Goodbye. 
--第九步,验证。可以发现up01和up02在真实系统中不存在 
[root@serv01 vsftpd]# ip up01 
Object "up01" is unknown, try"ip help". 
[root@serv01 vsftpd]# ip larry01 
Object "larry01" is unknown, try"ip help". 
[root@serv01 vsftpd]# ip larry02 
Object "larry02" is unknown, try"ip help". 

四、ftp——实验
需求
 

/share:匿名用户和账户访问都可以下载
/share/upload:匿名用户不能进入(下载),授权用户(up01 up02 up03)可以下载,只有up01可以上传
Samba:匿名帐号和授权账户不可以访问
 

解决方法:
 

--第一步,安装vsftp 
[root@serv01 dhcp]# yum install vsftpd*-y 
--第二步,创建目录,share目录权限为755,upload权限为777 
[root@serv01 vsftpd]# mkdir /share 
[root@serv01 vsftpd]# mkdir /share/upload 
[root@serv01 vsftpd]# chmod 755 /share 
[root@serv01 vsftpd]# chmod 777 /share/upload 
--第三步,创建用户,并设置密码 
[root@serv01 user_conf]# useradd up01 
[root@serv01 user_conf]# passwd up01 
[root@serv01 user_conf]# useradd up02 
[root@serv01 user_conf]# passwd up02 
[root@serv01 user_conf]# useradd up03 
[root@serv01 user_conf]# passwd up03 
  
--第四步,修改配置文件,配置如下 
[root@serv01 vsftpd]# mv vsftpd.confvsftpd.conf.bak 
  
[root@serv01 vsftpd]# mv vsftpd.confvsftpd.conf.bak 
[root@serv01 vsftpd]# echo "" >vsftpd.conf 
  
[root@serv01 vsftpd]# vim vsftpd.conf 
[root@serv01 vsftpd]# cat vsftpd.conf 
listen=yes 
anon_upload_enable=yes 
anon_root=/share 
local_enable=yes 
anonymous_enable=yes 
pam_service_name=vsftpd 
local_root=/share/upload 
user_config_dir=/etc/vsftpd/user_conf 
  
--第五步,创建user_conf目录,新建up01 up02 up03文件内容如下 
[root@serv01 ~]# mkdir /etc/vsftpd/user_conf 
[root@serv01 ~]# cd /etc/vsftpd/user_conf 
  
[root@serv01 user_conf]# vim up01 
[root@serv01 user_conf]# vim up02 
[root@serv01 user_conf]# vim up03 
  
[root@serv01 user_conf]# cat up01 
write_enable=yes 
[root@serv01 user_conf]# cat up02 
write_enable=no 
[root@serv01 user_conf]# cat up03 
write_enable=no 
--第六步,重启服务 
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart 
Shutting down vsftpd:      [  OK  ] 
Starting vsftpd for vsftpd:[  OK  ] 
  
--第七步,测试 
 

 
其他实现方式:
 

[root@serv01 vsftpd]# cat vsftpd.conf 
listen=yes 
anon_upload_enable=yes 
anon_root=/share 
local_enable=yes 
anonymous_enable=yes 
pam_service_name=vsftpd 
local_root= /upload 
user_config_dir=/etc/vsftpd/user_conf 
  
#/share/upload/目录权限为770或者744,而且所属组为uplook,up01、up02、up03三个用户均属于这个组。通过组和目录的权限控制部分权限。 
[root@serv01 vsftpd]# chmod 770 /share/upload 
  
#其他一致 

五、参考资料
ftp——百度百科 http://baike.baidu.com/subview/369/6149695.htm?fromId=369&from=rdtself
vsftpd——百度百科 http://baike.baidu.com/view/1806035.htm
tftp——百度百科 http://baike.baidu.com/view/23881.htm