文件服務器——ftp
一 ftp相關知識
什麼是ftp
FTP 是File TransferProtocol(文件傳輸協議)的英文簡稱,而中文簡稱為“文傳協議”。用於Internet上的控制文件的雙向傳輸。同時,它也是一個應用程序(Application)。基於不同的操作系統有不同的FTP應用程序,而所有這些應用程序都遵守同一種協議以傳輸文件。在FTP的使用當中,用戶經常遇到兩個概念:"下載"(Download)和"上傳"(Upload)。"下載"文件就是從遠程主機拷貝文件至自己的計算機上;"上傳"文件就是將文件從自己的計算機中拷貝至遠程主機上。用Internet語言來說,用戶可通過客戶機程序向(從)遠程主機上傳(下載)文件。
實現該協議的軟件
vsftp
vsftpd 是“very secure FTP daemon”的縮寫,安全性是它的一個最大的特點。vsftpd 是一個 UNIX 類操作系統上運行的服務器的名字,它可以運行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統上面,是一個完全免費的、開發源代碼的ftp服務器軟件,支持很多其他的 FTP 服務器所不支持的特征。比如:非常高的安全性需求、帶寬限制、良好的可伸縮性、可創建虛擬用戶、支持IPv6、速率高等。[1]
vsftpd是一款在Linux發行版中最受推崇的FTP服務器程序。特點是小巧輕快,安全易用。
在開源操作系統中常用的FTPD套件主要還有ProFTPD、PureFTPd和wuftpd等
tftp
TFTP(Trivial File Transfer Protocol,簡單文件傳輸協議)是TCP/IP協議族中的一個用來在客戶機與服務器之間進行簡單文件傳輸的協議,提供不復雜、開銷不大的文件傳輸服務。端口號為69。
FTP通訊原理
主動傳輸模式:客戶端向服務端發送請求,服務器端同客戶建立連接,在20端口傳輸數據(需要客戶端可以在互聯網上可以看到IP地址)
被動傳輸模式:服務器隨機開一個端口向客戶讀發送數據;使用較多,端口隨機,不好使用防火牆控制
傳輸數據
字符傳輸方式和二進制傳輸方式。
文本:二者皆可,假如是非文本,只能使用二進制傳輸方式,使用文本傳輸方式文件會損害。
服務器:默認是二進制模式
二 ftp——匿名用戶
2.1 ftp——匿名用戶下載
[sql]
--第一步,安裝vsftpd
[root@serv01 ~]# yum install vsftpd -y
--第二步,測試配置文件的參數——listen
[root@serv01 ~]# rpm -ql vsftpd
[root@serv01 ~]# cd /etc/vsftpd/
[root@serv01 vsftpd]# ll
[root@serv01 vsftpd]# mv vsftpd.confvsftpd.conf.bak
[root@serv01 vsftpd]# cp vsftpd.conf.bakvsftpd.conf
[root@serv01 vsftpd]# ll
#文件為空,啟動失敗
[root@serv01 vsftpd]# echo "" >vsftpd.conf
[root@serv01 vsftpd]# /etc/init.d/vsftpdstart
Starting vsftpd for vsftpd: 500 OOPS: vsftpd:not configured for standalone, must be started from inetd
[FAILED]
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
[root@serv01 vsftpd]# /etc/init.d/vsftpdstart
Starting vsftpd for vsftpd: [ OK ]
--第三步,Serv02安裝ftp客戶端
#ftp客戶端
[root@serv02 ~]# yum install ftp -y
#匿名用戶
[root@serv02 vsftpd]# 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:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
ftp> ?
Commands may be abbreviated. Commands are:
! debug mdir sendport site
$ dir mget put size
account disconnect mkdir pwd status
append exit mls quit struct
ascii form mode quote system
bell get modtime recv sunique
binary glob mput reget tenex
bye hash newer rstatus tick
case help nmap rhelp trace
cd idle nlist rename type
cdup image ntrans reset user
chmod lcd open restart umask
close ls prompt rmdir verbose
cr macdef passive runique ?
delete mdelete proxy send
ftp> ls
227 Entering Passive Mode(192,168,1,11,93,120).
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Aug 13 10:29 pub
226 Directory send OK.
[root@serv02 ~]# cd /var/ftp/pub/
[root@serv02 pub]# cp/boot/initramfs-2.6.32-131.0.15.el6.x86_64.img .
ftp> cd pub
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode(192,168,1,11,149,33).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 12587318 Aug 13 10:29initramfs-2.6.32-131.0.15.el6.x86_64.img
226 Directory send OK.
ftp> getinitramfs-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,105,144).
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.0368 secs(341693.86 Kbytes/sec)
ftp> exit
221 Goodbye.
[root@serv02 vsftpd]# lsinitramfs-2.6.32-131.0.15.el6.x86_64.img
initramfs-2.6.32-131.0.15.el6.x86_64.img
2.2 ftp——匿名用戶上傳
[sql]
[root@serv01 vsftpd]# man vsftpd.conf
#!ls:顯示本機的文件和目錄
#ls:顯示服務器的文件和目錄
--第一步,編輯配置文件,加上anon_upload_enable參數
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
anon_upload_enable=yes
--第二步,重啟服務
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
--第三步,Serv02做測試
[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:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> !ls
aa01.txt anaconda-ks.cfg initramfs-2.6.32-131.0.15.el6.x86_64.img install.log install.log.syslog
#上傳文件,發生失敗,權限拒絕
ftp> put aa01.txt
local: aa01.txt remote: aa01.txt
227 Entering Passive Mode(192,168,1,11,152,86).
550 Permission denied.
--第四步,修改ftp文件夾的權限,發現重新登錄失敗,把權限還原後登錄正常(這樣是安全考慮)
[root@serv01 var]# pwd
/var
[root@serv01 var]# chmod 777 ftp
[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:
500 OOPS: vsftpd: refusing to run with writableanonymous root
Login failed.
[root@serv01 var]# chmod 755 ftp/
[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:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
--第五步,我們這樣解決,新建一個文件夾,然後修改文件夾的權限,上傳文件時上傳到新建的目錄裡
[root@serv01 ftp]# pwd
/var/ftp
[root@serv01 ftp]# mkdir upload
[root@serv01 ftp]# chmod 777 upload
[root@serv01 ftp]# ls -ld upload/
drwxrwxrwx. 2 root root 4096 Aug 13 18:48upload/
--第六步,重新修改配置文件,加上write_enable參數,重啟服務,然後重新測試,上傳成功
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
write_enable=yes
anon_upload_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:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> !ls
aa01.txt anaconda-ks.cfg initramfs-2.6.32-131.0.15.el6.x86_64.img install.log install.log.syslog
ftp> ls
227 Entering Passive Mode(192,168,1,11,161,243).
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Aug 13 10:29 pub
drwxrwxrwx 2 0 0 4096 Aug 13 10:48 upload
226 Directory send OK.
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,214,139).
150 Ok to send data.
226 Transfer complete.
6 bytes sent in 0.000119 secs (50.42Kbytes/sec)
2.3 ftp——匿名用戶共享目錄在其他位置
[sql]
--第一步,創建共享目錄
[root@serv01 vsftpd]# mkdir /share
[root@serv01 vsftpd]# ls -ld /share/
drwxr-xr-x. 2 root root 4096 Aug 13 19:09/share/
--第二步,編輯配置文件
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
write_enable=yes
anon_upload_enable=yes
anon_root=/share
--第三步,重啟服務
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
--第四步,拷貝文件,測試
[root@serv01 vsftpd]# cp /boot/initramfs-2.6.32-131.0.15.el6.x86_64.img/share/ -rvf
`/boot/initramfs-2.6.32-131.0.15.el6.x86_64.img'-> `/share/initramfs-2.6.32-131.0.15.el6.x86_64.img'
[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:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
227 Entering Passive Mode(192,168,1,11,78,233).
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 12587318 Aug 13 11:11initramfs-2.6.32-131.0.15.el6.x86_64.img
226 Directory send OK.
ftp> pwd
257 "/"
ftp>
ftp> getinitramfs-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,120,127).
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.149 secs(84466.18 Kbytes/sec)
ftp> exit
221 Goodbye.
[root@serv02 ~]# ls
aa01.txt anaconda-ks.cfg initramfs-2.6.32-131.0.15.el6.x86_64.img install.log install.log.syslog
2.4 ftp——匿名用戶登錄時顯示提示信息
[sql]
--第一步,修改配置文件
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
write_enable=yes
anon_upload_enable=yes
anon_root=/share
ftpd_banner="Welcome to mysite!!!----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 "Welcome to mysite!!!----justdb"
2.5登錄時顯示一個文件作為提示信息
[sql]
--第一步,創建登錄時顯示調用的文件
[root@serv01 vsftpd]# pwd
/etc/vsftpd
[root@serv01 vsftpd]# vim my_banner
[root@serv01 vsftpd]# cat my_banner
############
#
$
@
^
&
############
--第二步,修改配置文件
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
write_enable=yes
anon_upload_enable=yes
anon_root=/share
#ftpd_banner="Welcome to mysite!!!----justdb"
banner_file=/etc/vsftpd/my_banner
--第三步,重啟服務
[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-############
220- #
220- $
220- @
220- ^
220- &
220-############
220
Name (192.168.1.11:root):
2.6 ftp——匿名用戶提示文件夾作用
[sql]
--第一步,編輯vsftpd.conf文件
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
write_enable=yes
anon_upload_enable=yes
anon_root=/share
#ftpd_banner="Welcome to mysite!!!----justdb"
#banner_file=/etc/vsftpd/my_banner
dirmessage_enable=yes
--第二步,創建文件夾和相關的文件夾說明文件
[root@serv01 share]# pwd
/share
[root@serv01 share]# mkdir upload
[root@serv01 share]# mkdir download
[root@serv01 share]# man vsftpd.conf
[root@serv01 share]# cd upload
[root@serv01 upload]# pwd
/share/upload
[root@serv01 upload]# vim .message
[root@serv01 upload]# cd ../download/
[root@serv01 download]# pwd
/share/download
[root@serv01 download]# vim .message
[root@serv01 download]# cat .message
this is download dir
[root@serv01 download]# cat../upload/.message
this is upload dir
--第三步,重啟服務
[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:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd upload
250-this is upload dir
250 Directory successfully changed.
ftp> cd ../download
250-this is download dir
250 Directory successfully changed.
ftp>
2.7 ftp——匿名用戶在共享文件夾創建目錄
[sql]
--第一步,先測試創建文件夾,發現失敗
[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:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd upload
250-this is upload dir
250 Directory successfully changed.
ftp> mkdir test
550 Permission denied.
ftp>
--第二步,編輯文件,加入anon_mkdir_write_enable參數
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
write_enable=yes
anon_upload_enable=yes
anon_root=/share
#ftpd_banner="Welcome to mysite!!!----justdb"
#banner_file=/etc/vsftpd/my_banner
dirmessage_enable=yes
anon_mkdir_write_enable=yes
--第三步,重啟服務
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
--第四步,測試,發現失敗(550 Create directoryoperation failed.
)
[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:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd upload
250-this is upload dir
250 Directory successfully changed.
ftp> mkdir test
550 Create directory operation failed.
--第五步,修改文件夾權限,再次登錄後創建成功
[root@serv01 download]# chmod 777 ../upload/
[root@serv01 download]# ls -ld ../upload/
drwxrwxrwx. 2 root root 4096 Aug 13 19:28../upload/
ftp> mkdir test
257 "/upload/test" created
ftp>
2.8 ftp——匿名用戶可以刪除目錄
[sql]
--第一步,修改配置文件,加入anon_other_write_enable參數
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
write_enable=yes
anon_upload_enable=yes
anon_root=/share
#ftpd_banner="Welcome to mysite!!!----justdb"
#banner_file=/etc/vsftpd/my_banner
dirmessage_enable=yes
anon_mkdir_write_enable=yes
anon_other_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): ftp
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd upload
250-this is upload dir
250 Directory successfully changed.
ftp> rm test
250 Remove directory operation successful.
ftp> mkdir test
257 "/upload/test" created
ftp> rmdir test
250 Remove directory operation successful.
ftp>
#刪除文件(delete命令)
ftp> delete aa01.txt
250 Delete operation successful.
2.9 ftp——匿名用戶限制下載速度
[sql]
--第一步,安裝ftp客戶端
[root@larrywen opt]# yum install lftp -y
--第二步,拷貝文件測試
[root@larrywen ~]# cp/opt/soft/begin/RevolutionOS操作系統革命.rmvb .
--第三步,上傳文件,發現速度很快,如果用戶量訪問過多,對系統造成的壓力很大
[root@larrywen ~]# lftp 192.168.1.11
lftp 192.168.1.11:~> cd upload
cd ok, cwd=/upload
lftp 192.168.1.11:/upload> putRevolutionOS操作系統革命.rmvb
288570185 bytes transferred in 3 seconds(103.65M/s)
lftp 192.168.1.11:/upload> exit
--第四步,編輯文件
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
write_enable=yes
anon_upload_enable=yes
anon_root=/share
#ftpd_banner="Welcome to mysite!!!----justdb"
#banner_file=/etc/vsftpd/my_banner
dirmessage_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
#一般設定為120K左右
anon_max_rate=1024000
--第五步,重啟服務
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
--第六步,再次上傳,發現速度大約在1M左右
[root@larrywen ~]# lftp 192.168.1.11
lftp 192.168.1.11:~> cd upload
cd ok, cwd=/upload
lftp 192.168.1.11:/upload> putRevolutionOS操作系統革命.rmvb
288570185 bytes transferred in 283 seconds(995.1K/s)
2.10 ftp——匿名用戶限制人數
[sql]
--第一步,修改配置文件,加入max_clients參數
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
write_enable=yes
anon_upload_enable=yes
anon_root=/share
#ftpd_banner="Welcome to my site!!!----justdb"
#banner_file=/etc/vsftpd/my_banner
dirmessage_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_max_rate=1024000
max_clients=3
--第二步,重啟服務
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
--第三步,測試
#連續打開三個終端,使用ftp或者lftp分別建立ftp連接,到第四個的時候,發現出錯,不能連接,配置文件生效(但是這樣一個用戶打開3個終端就獨占了,其他用戶不允許連接了)
[root@larrywen 0813]# ftp 192.168.1.11
Connected to 192.168.1.11 (192.168.1.11).
421 There are too many connected users,please try later.
2.11 ftp——匿名用戶限制某個用戶有幾個連接
[sql]
--第一步,修改配置文件,加入max_per_ip參數
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
write_enable=yes
anon_upload_enable=yes
anon_root=/share
#ftpd_banner="Welcome to mysite!!!----justdb"
#banner_file=/etc/vsftpd/my_banner
dirmessage_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_max_rate=1024000
max_clients=10
max_per_ip=2
--第二步,重啟服務
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
--第三步,測試。真實機建立2個連接後,建立第三個連接提示There are too many connections from your internet address,但是其他IP地址的用戶不受影響
[root@larrywen ~]# ftp 192.168.1.11
[root@larrywen ~]# ftp 192.168.1.11
[root@larrywen ~]# ftp 192.168.1.11
Connected to 192.168.1.11 (192.168.1.11).
421 There are too many connections from yourinternet address.
[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:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
2.12 ftp——匿名用戶修改上傳文件的權限
[sql]
--第一步,修改配置文件,加入anon_umask參數
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
write_enable=yes
anon_upload_enable=yes
anon_root=/share
#ftpd_banner="Welcome to mysite!!!----justdb"
#banner_file=/etc/vsftpd/my_banner
dirmessage_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_max_rate=1024000
max_clients=10
max_per_ip=2
anon_umask=022
--第二步,重啟服務
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
--第三步,測試。上傳文件,發現權限變為644
[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:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd upload
250-this is upload dir
250 Directory successfully changed.
ftp> put aa01.txt
local: aa01.txt remote: aa01.txt
227 Entering Passive Mode (192,168,1,11,149,59).
150 Ok to send data.
226 Transfer complete.
6 bytes sent in 9.9e-05 secs (60.61Kbytes/sec)
ftp> ls aa01.txt
227 Entering Passive Mode(192,168,1,11,47,44).
150 Here comes the directory listing.
-rw-r--r-- 1 14 50 6 Aug 13 14:09 aa01.txt
226 Directory send OK.
ftp>
2.13 ftp——匿名用戶修改上傳文件的所有者
[sql]
--第一步,查看上傳文件的所有者,發現擁有者時ftp
[root@serv01 upload]# ll
total 281812
-rw-r--r--. 1 ftp ftp 6 Aug 13 22:09 aa01.txt
-rw-------. 1 ftp ftp 288570185 Aug 13 20:04RevolutionOS操作系統革命.rmvb
--第二步,創建用戶
[root@serv01 vsftpd]# useradd larry
--第三步,修改配置文件,加入chown_uploads和chown_username參數
[root@serv01 vsftpd]# vim vsftpd.conf
[root@serv01 vsftpd]# cat vsftpd.conf
listen=yes
write_enable=yes
anon_upload_enable=yes
anon_root=/share
#ftpd_banner="Welcome to mysite!!!----justdb"
#banner_file=/etc/vsftpd/my_banner
dirmessage_enable=yes
anon_mkdir_write_enable=yes
anon_other_write_enable=yes
anon_max_rate=1024000
max_clients=10
max_per_ip=2
anon_umask=022
chown_uploads=yes
chown_username=larry
#第四步,重啟服務
[root@serv01 vsftpd]# /etc/init.d/vsftpdrestart
Shutting down vsftpd: [ OK ]
Starting vsftpd for vsftpd: [ OK ]
--第五步,上傳文件,再次查看文件所有者,發現已經變化
[root@serv02 ~]# echo "hello">> aa02.txt
[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:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd upload
250-this is upload dir
250 Directory successfully changed.
ftp> put aa02.txt
local: aa02.txt remote: aa02.txt
227 Entering Passive Mode(192,168,1,11,143,83).
150 Ok to send data.
226 Transfer complete.
6 bytes sent in 0.000114 secs (52.63Kbytes/sec)
ftp>
[root@serv01 upload]# ll *.txt
-rw-r--r--. 1 ftp ftp 6 Aug 13 22:09 aa01.txt
-rw-------. 1 larryftp 6 Aug 13 22:15 aa02.txt
三 ftp——授權用戶
3.1 ftp——授權用戶測試授權用戶的簡單使用
[sql]
--第一步,創建本地帳號
#使用本地帳號(用戶名和密碼)
[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
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/
chfn fingerprint-auth-ac passwd reboot runuser-l sshd su-l
chsh halt password-auth remote smartcard-auth ssh-keycat system-auth
config-util login password-auth-ac rhn_register smartcard-auth-ac su system-auth-ac
crond newrole polkit-1 run_init smtp sudo vsftpd
fingerprint-auth other poweroff runuser smtp.postfix sudo-i
[root@serv01 upload]# cat /etc/pam.d/vsftpd
#%PAM-1.0
session optional pam_keyinit.so force revoke
auth required pam_listfile.soitem=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth
3.2 ftp——授權用戶解決授權用戶不能登錄的問題
[sql]
--第一步,修改配置文件,新加入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——授權用戶修改共享目錄
[sql]
--第一步,修改配置文件,加入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——授權用戶允許上傳
[sql]
--第一步,修改配置文件,加入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——授權用戶——限制速度
[sql]
--第一步,修改配置文件,加入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——授權用戶限制用戶登錄
[sql]
#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用戶登錄
[sql]
[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 0 12587318 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——授權用戶允許部分用戶登錄
[sql]
--第一步,修改配置文件
[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
[sql]
#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.
3.11 ftp——授權用戶個性化設置(某個用戶可以上傳,其他用戶不可以)
[sql]
--第一步,修改vsftpd.conf配置文件,加入user_config_dir參數
[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——授權用戶——局部優先測試
[sql]
--第一步,修改配置文件,把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——授權用戶虛擬帳號
[sql]
[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:匿名帳號和授權賬戶不可以訪問
解決
[sql]
--第一步,安裝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 ]
--第七步,測試
其他實現方式
[sql]
[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
#其他一致