歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

文件服務器——ftp

文件服務器——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       #其他一致    
Copyright © Linux教程網 All Rights Reserved