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

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

linux文件服务器之ftp配置教程 第四部分
三、ftp——授权用户
3.1 ftp——授权用户测试授权用户的简单使用
 

--第一步,创建本地帐号 
#使用本地帐号(用户名和密码) 
[root@serv01 vsftpd]# useradd larry 
[root@serv01 vsftpd]# passwd larry 
[root@serv01 vsftpd]# useradd justdb 
[root@serv01 vsftpd]# passwd justdb 
[root@serv01 vsftpd]# id larry 
uid=500(larry) gid=500(larry)groups=500(larry) 
[root@serv01 vsftpd]# id justdb  (www.jb200.com)
uid=501(justdb) gid=501(justdb) groups=501(justdb) 
  
--第二步,修改配置文件 
[root@serv01 vsftpd]# vim vsftpd.conf 
[root@serv01 vsftpd]# cat vsftpd.conf 
listen=yes 
anonymous_enable=no 
local_enable=yes 
--第三步,重启服务 
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart 
Shutting down vsftpd:      [  OK  ] 
Starting vsftpd for vsftpd:[  OK  ] 
  
--第四步,测试。发现匿名用户和本地将帐号都不可以登录 
[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): ftp 
331 Please specify the password. 
Password: 
530 Login incorrect. 
Login failed. 
ftp> ls 
530 Please login with USER and PASS. 
Passive mode refused
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): larry 
331 Please specify the password. 
Password: 
530 Login incorrect. 
Login failed. 
ftp> 
  
#PAM:Plug Auth Modele 可插拔认证模块 
#思路:将具体认证和具体的系统隔离,灵活 
[root@serv01 upload]# ls /etc/pam.d/ 
chfnfingerprint-auth-ac  passwd     reboot runuser-l   sshd su-l 
chshhalt   password-auth     remote smartcard-auth     ssh-keycat system-auth 
config-utillogin  password-auth-ac  rhn_register smartcard-auth-ac  su   system-auth-ac 
crond      newrolepolkit-1   run_init      smtp sudovsftpd 
fingerprint-auth  other  poweroff   runusersmtp.postfixsudo-i 
[root@serv01 upload]# cat /etc/pam.d/vsftpd 
#%PAM-1.0 
session   optional     pam_keyinit.so    force revoke 
auth      requiredpam_listfile.soitem=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed 
auth      requiredpam_shells.so 
auth      include  password-auth 
account   include   password-auth 
session   required     pam_loginuid.so 
session   include    password-auth 

3.2 ftp——授权用户解决授权用户不能登录的问题
 

--第一步,修改配置文件,新加入pam_service_name参数 
[root@serv01 vsftpd]# vim vsftpd.conf 
[root@serv01 vsftpd]# cat vsftpd.conf 
listen=yes 
anonymous_enable=no 
local_enable=yes 
pam_service_name=vsftpd 
--第二步,重启服务 
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart 
Shutting down vsftpd:      [  OK  ] 
Starting vsftpd for vsftpd:[  OK  ] 
--第三步,Serv02测试,使用larry登录,并输入对应的密码,发现登录成功,进入用户的家目录 
[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> 
ftp> pwd 
257 "/home/larry" 
#进入家目录,拷贝文件 
[root@serv01 upload]# cd /home/larry/ 
[root@serv01 larry]# ll 
total 0 
[root@serv01 larry]# cp/boot/initramfs-2.6.32-131.0.15.el6.x86_64.img . -rvf 
`/boot/initramfs-2.6.32-131.0.15.el6.x86_64.img'-> `./initramfs-2.6.32-131.0.15.el6.x86_64.img' 
#下载 
ftp> get initramfs-2.6.32-131.0.15.el6.x86_64.img 
local:initramfs-2.6.32-131.0.15.el6.x86_64.img remote:initramfs-2.6.32-131.0.15.el6.x86_64.img 
227 Entering Passive Mode(192,168,1,11,121,102). 
150 Opening BINARY mode data connection forinitramfs-2.6.32-131.0.15.el6.x86_64.img (12587318 bytes). 
226 Transfer complete. 
12587318 bytes received in 0.135 secs(93157.27 Kbytes/sec) 
ftp> exit 
221 Goodbye. 
[root@serv02 ~]# lsinitramfs-2.6.32-131.0.15.el6.x86_64.img 
initramfs-2.6.32-131.0.15.el6.x86_64.img 

3.3 ftp——授权用户修改共享目录
 

--第一步,修改配置文件,加入local_root参数 
[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 
--第二步,重启服务 
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart 
Shutting down vsftpd:      [  OK  ] 
Starting vsftpd for vsftpd:[  OK  ] 
--第三步,测试 
[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> pwd 
257 "/share" 
ftp> 

3.4 ftp——授权用户允许上传
 

--第一步,修改配置文件,加入write_enable参数 
[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 
--第二步,重启服务 
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart 
Shutting down vsftpd:      [  OK  ] 
Starting vsftpd for vsftpd:[  OK  ] 
--第三步,测试,可以上传 
[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,190,171). 
150 Ok to send data. 
226 Transfer complete. 
6 bytes sent in 5.4e-05 secs (111.11Kbytes/sec) 
ftp> 

3.5 ftp——授权用户——限制速度
 

--第一步,修改配置文件,加入local_max_rate参数 
[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 
--第二步,重启服务 
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart 
Shutting down vsftpd:      [  OK  ] 
Starting vsftpd for vsftpd:[  OK  ] 
--第三步,测试。 
[root@larrywen ~]# 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 RevolutionOS操作系统革命.rmvb 
local: RevolutionOS操作系统革命.rmvb remote: RevolutionOS操作系统革命.rmvb 
227 Entering Passive Mode(192,168,1,11,198,237). 
150 Ok to send data. 
126902272 bytes sent in 124 secs (1022.06Kbytes/sec) 
#可以使用watch动态查看文件的增长 
[root@serv01 upload]# watch ls -lh 

3.6 ftp——授权用户限制登录客户端数和每个IP的登录个数,同匿名用户
 

#max_clients=10
#max_per_ip=2

3.7 ftp——授权用户限制用户登录
 

#root用户不能登录 
[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): root 
331 Please specify the password. 
Password: 
530 Login incorrect. 
Login failed. 
  
--第一步,追加用户到ftpusers文件中 
[root@serv01 vsftpd]# cat ftpusers 
# Users that are not allowed to login via ftp 
root 
bin 
daemon 
adm 
lp 
sync 
shutdown 
halt 
mail 
news 
uucp 
operator 
games 
nobody 
[root@serv01 vsftpd]# echo "justdb">> ./ftpusers 
[root@serv01 vsftpd]# tail -n1 ftpusers 
Justdb 
--第二步,重启服务 
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart 
Shutting down vsftpd:      [  OK  ] 
Starting vsftpd for vsftpd:[  OK  ] 
--第三步,测试 
[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: 
530 Login incorrect. 
Login failed. 

3.8 ftp——授权用户允许root用户登录
 

[root@serv01 vsftpd]# vim ftpusers 
[root@serv01 vsftpd]# head -n2 ftpusers 
# Users that are not allowed to login via ftp 
#root 
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart 
Shutting down vsftpd:      [  OK  ] 
Starting vsftpd for vsftpd:[  OK  ] 
  
[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): root 
331 Please specify the password. 
Password: 
230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 
ftp> ls 
227 Entering Passive Mode(192,168,1,11,30,219). 
150 Here comes the directory listing. 
drwxr-xr-x   2 0 0     4096 Aug 13 11:28 download 
-rw-r--r--   1 0 012587318 Aug 13 11:11 initramfs-2.6.32-131.0.15.el6.x86_64.img 
drwxrwxrwx   2 0 0     4096 Aug 13 15:04 upload 
226 Directory send OK. 

3.9 ftp——授权用户允许部分用户登录
 

--第一步,修改配置文件 
[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=NO 
--第二步,修改配置文件,把larry加到user_list中 
[root@serv01 vsftpd]# vim user_list 
[root@serv01 vsftpd]# tail -n1 user_list 
larry 
--第三步,重启服务 
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart 
Shutting down vsftpd:      [  OK  ] 
Starting vsftpd for vsftpd:[ OK  ] 
--第四步,测试,发现justdb可以登录,larry用户不能登录 
[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 
530 Permission denied. 
Login failed. 
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): larry 
331 Please specify the password. 
Password: 
230 Login successful. 
Remote system type is UNIX. 
Using binary mode to transfer files. 

#不允许登录,直接写到ftpusers文件中
 

 
#这样的运用:假如有很多用户,都不允许他们登录,把他们写到ftpusers文件中,并且vsftpd.conf这样设置:userlist_enable=nouserlist_deny=YES(这个参赛不设置亦可);如果允许他们都能登录,那么把他们写到user_list文件中,并且vsftpd.conf这样设置:userlist_enable=yesuserlist_deny=NO
     
3.10 ftp——授权用户 chroot
 

#chroot:没应用的时候。普通用户都可以进入根目录,下载敏感文件 
 
[root@serv01 vsftpd]#vim 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=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里的用户不能被chroot限制,没有在chroot_list_file里的用户被限制。 
chroot_local_user=yes 
chroot_list_file=/etc/vsftpd/chroot_list 
#假如chroot_local_user为no,那么chroot_list_file里的用户能被chroot限制,没有在chroot_list_file里的用户不被限制。 
#chroot_local_user=no 
#chroot_list_file=/etc/vsftpd/chroot_list 
  
--第二步,新建chroot_list文件 
[root@serv01 vsftpd]# vim chroot_list 
[root@serv01 vsftpd]# cat chroot_list 
larry 
  
--第三步,重启服务 
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart 
Shutting down vsftpd:      [  OK  ] 
Starting vsftpd for vsftpd:[  OK  ] 
  
--第四步,测试,larry用户没有被chroot限制,不能进入根目录;justdb用户被chroot限制,不能进入根,只能进入共享的目录 
[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> pwd 
257 "/share" 
ftp> cd / 
250 Directory successfully changed. 
ftp> ls 
227 Entering Passive Mode(192,168,1,11,92,126). 
150 Here comes the directory listing. 
dr-xr-xr-x   2 0 0     4096 Jul 22 16:55 bin 
dr-xr-xr-x   5 0 0    1024 Jul 22 16:56 boot 
drwxr-xr-x  15 0 0     3580 Aug 13 11:46 dev 
drwxr-xr-x  73 0 0     4096 Aug 13 14:23 etc 
drwxr-xr-x   4 0 0     4096 Aug 13 14:23 home 
dr-xr-xr-x  12 0 0     8192 May 10 2011 iso 
dr-xr-xr-x   8 0 0     4096 Jul 22 16:55 lib 
dr-xr-xr-x   8 0 0    12288 Jul 22 16:55 lib64 
drwx------   2 0 0    16384 Jul 22 16:54 lost+found 
drwxr-xr-x   2 0 0     4096 Dec 04  2009 media 
drwxr-xr-x   2 0 0     4096 Dec 04  2009 mnt 
drwxr-xr-x   3 0 0     4096 Dec 04  2009 opt 
dr-xr-xr-x  89 0 0 0 Aug 13 10:22 proc 
dr-xr-x---   2 0 0     4096 Aug 13 15:44 root 
dr-xr-xr-x   2 0 0     4096 Jul 22 16:56 sbin 
drwxr-xr-x   7 0 0 0 Aug 13 10:22 selinux 
drwxr-xr-x   4 0 0     4096 Aug 13 11:26 share 
drwxr-xr-x   2 0 0     4096 Dec 04  2009 srv 
drwxr-xr-x  13 0 0 0 Aug 13 10:22 sys 
drwxrwxrwt   3 0 0     4096 Aug 13 15:29 tmp 
drwxr-xr-x  13 0 0     4096 Jul 22 16:54 usr 
drwxr-xr-x  18 0 0     4096 Aug 13 10:23 var 
226 Directory send OK. 
  
[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> pwd 
257 "/" 
ftp> cd / 
250 Directory successfully changed. 
ftp> pwd 
257 "/" 
ftp> ls 
227 Entering Passive Mode(192,168,1,11,208,89). 
150 Here comes the directory listing. 
drwxr-xr-x   2 0 0     4096 Aug 13 11:28 download 
-rw-r--r--   1 0 0 12587318 Aug 13 11:11initramfs-2.6.32-131.0.15.el6.x86_64.img 
drwxrwxrwx   2 0 0     4096 Aug 13 15:04 upload 
226 Directory send OK.