本文介绍了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 refu
sed.
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.