紅帽系列檔案分享權限設定服務解析

來源:互聯網
上載者:User

第一部分:FTP的基礎認知:


FTP: 檔案傳輸通訊協定File TransferProtocol)使得主機間可以共用檔案;它是一種應用程式層協議;它還可以跨越不同作業系統進行實現共用。是基於C/S進行工作的。

FTP有兩類連結方式:

1、命令串連,工作在tcp的21號連接埠上,但是命令串連僅僅是由用戶端在串連到伺服器端以後向伺服器端發起命令的。

[root@station144 ~]# lftp 172.16.0.1lftp 172.16.0.1:~> cd pub/lftp 172.16.0.1:/pub> ls

  2、資料連線:

        主動模式:

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1F4361S5-0.png" title="主動模式.png" width="499" height="320" border="0" hspace="0" vspace="0" style="width:499px;height:320px;" />

   解析:伺服器端監聽在tcp的20號連接埠下而且是固定的連接埠通訊,而用戶端監聽的連接埠不是固定的是隨機產生的大於1023的連接埠而且通訊連接埠是監聽連接埠+1。劣勢:由於用戶端監聽的連接埠大於1023,當伺服器端請求串連用戶端是由於防火牆的存在會導致串連失敗。

  被動模式:

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1F4362938-1.png" title="被動串連.png" width="499" height="370" border="0" hspace="0" vspace="0" style="width:499px;height:370px;" />

   解析:伺服器端依然監聽在20連接埠下,但是伺服器端是通過隨機產生的大於1023的連接埠進行通訊的;這裡就是使用6666進行通訊。但是不會主動去串連用戶端而是等待用戶端的請求然後予以響應發送資料。如果還有其他使用者再來請求資料,伺服器端還會重新再開啟一個隨機連接埠予以響應來發送資料。而這些隨機連接埠是通過21號連接埠告訴用戶端的。劣勢:這樣的伺服器端的防火牆就比較麻煩了。


   總結:命令串連和資料連線是關聯的,可以沒有資料連線但是絕對不能沒有命令串連。資料連線的兩種模式是根據用戶端的請求方式來決定的。


  資料的傳送模式:二進位和文本


第二部分:FTP的簡單實現和配置解析


伺服器端軟體類型:

   Unix :wuftpd(現已不常見到)

   Linux:proftpd,pureftp,vsftpd(紅帽系統內建,安全性特別高),filezilla(既有linux版也有windows版)

   Windows:Serv-U,IIS


用戶端軟體類型:

   Linux:瀏覽器內建訪問,ftp,lftp(功能很強大,只工作在linux上),gftp(只工作在linux上),filezilla(用戶端的)。

   Windows:瀏覽器內建訪問,ftp,flashxp,cuteftp,leapftp 等等。


安裝配置FTP:

    系統版本:CentOS 6.4 x86_64

    伺服器端安裝:yum install vsftpd –y

    啟動服務:service vsftpd start

    用戶端安裝:yum install ftp

用戶端安裝:yum install lftp


測試連接:

  串連測試:ftp 172.16.18.1

[root@station144 ~]# ftp 172.16.18.1              #串連測試Connected to 172.16.18.1 (172.16.18.1).220 (vsFTPd 2.2.2)                   #220是協議解析碼Name (172.16.18.1:root): ftp                #需要使用使用者登入,預設使用root,顯然這是不行的,可以使用匿名登入輸入ftp表示匿名訪問331 Please specify the password.     #331是協議解析碼Password:                  #輸入使用者密碼由於我們是匿名所以為空白230 Login successful.                #230是協議解析碼Remote system type is UNIX.Using binary mode to transfer files.ftp>

解析:協議響應碼:220 (vsFTPd 2.2.2),331 Please specify the password等都是響應碼)

Ø1xx: 伺服器資訊,主要表示伺服器的屬性資訊等等

Ø2xx: 正確響應資訊

Ø3xx: 正常響應,某操作過程尚未完成,需進一步補充完成;

Ø4xx: 用戶端錯誤;

Ø5xx: 伺服器端錯誤;

註:若請求伺服器端資訊,伺服器端不存在則會出現用戶端錯誤資訊,原因是由於用戶端做的錯誤請求導致的。由於伺服器自身問題導致請求無法完成的會顯示伺服器端錯誤。若使用者不存在會顯示為伺服器端錯誤哦!

使用者不存在的情況[root@station144 ~]# ftp 172.16.18.1Connected to 172.16.18.1 (172.16.18.1).220 (vsFTPd 2.2.2)Name (172.16.18.1:root): an              #/etc/passwd中無此使用者331 Please specify the password.Password:530 Login incorrect.                     #伺服器端錯誤Login failed.ftp>

特別標明:ftp伺服器端檔案路徑是使用者家目錄;查看使用者家目錄可使用finger 使用者名稱。

[root@localhost ~]# finger ftpLogin: ftp                      Name: FTP UserDirectory: /var/ftp                     Shell: /sbin/nologinNever logged in.No mail.No Plan.#其中Directory: /var/ftp表示為使用者家目錄路徑資訊


紅帽系統最好用FTP服務——vsftpd的用法:

1、vsftpd使用者類型:

   匿名使用者: 事實上是伺服器端自動對應的一個系統使用者;

   本機使用者:/etc/passwd中的使用者,預設root和id號小於500的使用者都禁止訪問ftp;謹記這一類使用者非常的不安全,如果不限定他可以隨意切換到家目錄或其他目錄中並且還可以使用ssh登入。

   虛擬使用者:事實上是伺服器端自動對應的一個系統使用者;多個虛擬使用者同時被映射為同一個系統使用者,但不同的虛擬使用者可以具有不同的存取權限;


2、vsftpd熱門檔案認識:

[root@localhost ~]# rpm -ql vsftpd/etc/logrotate.d/vsftpd              #控制vsftpd的記錄檔實現滾動/etc/pam.d/vsftpd                    #定義vsftpd如何認證使用者的,若要使用虛擬使用者需改動/etc/rc.d/init.d/vsftpd              #服務指令碼/etc/vsftpd                          #設定檔/etc/vsftpd/ftpusers                 #設定檔/etc/vsftpd/user_list                #設定檔/etc/vsftpd/vsftpd.conf              #主設定檔/etc/vsftpd/vsftpd_conf_migrate.sh   #設定檔/usr/sbin/vsftpd                     #伺服器端可執行程式

3、vsftpd主設定檔的解析

[root@localhost vsftpd]# vim vsftpd.conf# Example config file /etc/vsftpd/vsftpd.conf        #其中#號表示注釋## The default compiled in settings are fairly paranoid. This sample file# loosens things up a bit, to make the ftp daemon more usable.# Please see vsftpd.conf.5 for all compiled in defaults.## READ THIS: This example file is NOT an exhaustive list of vsftpd options.# Please read the vsftpd.conf.5 manual page to get a full idea of vsftpd's# capabilities.## Allow anonymous FTP? (Beware - allowed by default if you comment this out).anonymous_enable=YES                 #是否啟用匿名使用者不啟用為NO## Uncomment this to allow local users to log in.local_enable=YES                     #是否啟用本機使用者不啟用為NO## Uncomment this to enable any form of FTP write command.write_enable=YES                     #是否允許本機使用者有上傳檔案的許可權## Default umask for local users is 077. You may wish to change this to 022,# if your users expect that (022 is used by most other ftpd's)local_umask=022                      #本機使用者上傳檔案之後的許可權## Uncomment this to allow the anonymous FTP user to upload files. This only# has an effect if the above global write enable is activated. Also, you will# obviously need to create a directory writable by the FTP user.#anon_upload_enable=YES               #是否允許匿名使用者上傳檔案## Uncomment this if you want the anonymous FTP user to be able to create# new directories.#anon_mkdir_write_enable=YES       #定義匿名使用者是否具有建立目錄的許可權anon_other_write_enable=YES        #定義其他許可權,可以實現變更檔的屬主屬組刪除檔案等,但是這需要手動添加## Activate directory messages - messages given to remote users when they# go into a certain directory.dirmessage_enable=YES              #表示沒切換一個目錄都會顯示歡迎一段資訊的## The target log file can be vsftpd_log_file or xferlog_file.# This depends on setting xferlog_std_format parameterxferlog_enable=YES                 #是否開啟傳輸日誌,顯示上傳,下載的所有資訊## Make sure PORT transfer connections originate from port 20 (ftp-data).connect_from_port_20=YES           #是否允許伺服器工作在主動模式下## If you want, you can arrange for uploaded anonymous files to be owned by# a different user. Note! Using "root" for uploaded files is not# recommended!#chown_uploads=YES                 #是否將上傳的檔案目錄屬主改成別人#chown_username=whoever            #定義新的屬主,將whoever更改成即可## The name of log file when xferlog_enable=YES and xferlog_std_format=YES# WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log#xferlog_file=/var/log/xferlog     #定義記錄檔的,雖然上面日誌功能已啟用,但是仍然不會記錄的## Switches between logging into vsftpd_log_file and xferlog_file files.# NO writes to vsftpd_log_file, YES to xferlog_filexferlog_std_format=YES             #定義日誌是否使用標準格式## You may change the default value for timing out an idle session.#idle_session_timeout=600          #定義命令串連的逾時時間## You may change the default value for timing out a data connection.#data_connection_timeout=120       #資料連線的逾時時間## It is recommended that you define on your system a unique user which the……中間不太重要已省略……# ASCII mangling is a horrible feature of the protocol.#ascii_upload_enable=YES                #是否強制使用AscII上傳檔案的#ascii_download_enable=YES              #是否強制使用AscII下載檔案的,若強制可能導致檔案的錯誤# You may fully customise the login banner string:#ftpd_banner=Welcome to blah FTP service.      #顯示歡迎資訊#……中間不太重要已省略……# directory. If chroot_local_user is YES, then this list becomes a list of# users to NOT chroot().        #chroot:禁錮使用者於其家目錄中,不允許隨意訪問其他檔案#chroot_local_user=YES          #啟用表示所有使用者都被禁錮於其家目錄中#chroot_list_enable=YES         #啟動表示禁錮指定使用者# (default follows)#chroot_list_file=/etc/vsftpd/chroot_list      #被指定禁錮的使用者名稱單檔案注意:一行一個使用者)#……中間不太重要已省略……pam_service_name=vsftpduserlist_enable=YES                           #使用者列表是否啟用,所有寫在ftpusers的使用者都不允許登入ftp/etc/pam.d/vsftpd中有說明)userlist_deny=NO (需要手動添加此項)           #定義白名單允許登入(若想允許匿名使用者出現在白名單中也需要定義;可定義為ftp也可為anonymous);對應檔案是user_listuserlist_deny=YES(不添加預設是這一項)         #定義黑名單禁止登入;對應檔案是user_listtcp_wrappers=YES

註:

   1)由於此設定檔檢查要求比較嚴格,不可隨意出現任意空白字元,例如write_enable=YES之前不可出現任何空白字元;等號兩側不可出現任何空白字元。

   2)當更改這個檔案中的這些許可權時一定要確保SElinux是關閉的,不然會被阻止的。


第三部分:基礎知識的進一步升華


實戰一:匿名使用者如何?檔案上傳?

伺服器端:

[root@localhost vsftpd]# vim vsftpd.conf確保主設定檔中的anon_upload_enable=YES已啟動伺服器端程式重新載入:service vsftpd reload

 切換至用戶端:  

[root@station144 ~]# lftp 172.16.18.1lftp 172.16.18.1:~> put /etc/fstab                #使用此命令進行上傳檔案put 檔案名稱)put: Access failed: 553 Could not create file. (fstab)      #無法實現上傳,原因是雖然有了上傳檔案的許可權但是遠程伺服器上沒有向這個檔案中寫檔案的許可權。

解決辦法:

伺服器端:

[root@localhost vsftpd]# cd /var/ftp/                #切換至家目錄下[root@localhost ftp]# lspub[root@localhost ftp]# ls -ltotal 4drwxr-xr-x 2 root root 4096 Jul 29 13:25 pub[root@localhost ftp]# mkdir upload             #建立一個目錄[root@localhost ftp]# setfacl -m u:ftp:rwx upload/       #讓這個目錄ftp具有讀寫執行許可權[root@localhost ftp]#

 切換至用戶端:

[root@station144 ~]# lftp 172.16.18.1          #重新串連lftp 172.16.18.1:~> lsdrwxr-xr-x    2 0        0            4096 Jul 29 05:25 pubdrwxrwxr-x    2 0        0            4096 Jul 29 06:36 uploadlftp 172.16.18.1:/> cd upload/lftp 172.16.18.1:/upload> put /etc/fstab        #上傳921 bytes transferred                         lftp 172.16.18.1:/upload> ls-rw-------    1 14       50            921 Jul 29 06:40 fstab      #成功上傳


實戰二:如何定義在切換目錄時顯示一段歡迎資訊?

 伺服器端:

[root@localhost vsftpd]# vim vsftpd.conf確保dirmessage_enable=YES已經啟動[root@localhost ftp]# cd upload/[root@localhost upload]# vim .message      #編輯一個.message結尾的隱藏檔案--welcome to Upload--                    #添加一段歡迎資訊

  用戶端:

[root@station144 ~]# ftp 172.16.18.1       #這裡使用lftp無法顯示歡迎資訊Connected to 172.16.18.1 (172.16.18.1).220 (vsFTPd 2.2.2)Name (172.16.18.1:root): ftp331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> cd upload                      #切換至書寫資訊的目錄中250---welcome to Upload--            #正常顯示編輯的歡迎資訊250-250 Directory successfully changed.



實戰三:如何指定使用者白名單使其不禁錮於家目錄中?

   思路:將chroot_local_user=YES;chroot_list_enable=YES;chroot_list_file=/etc/vsftpd/chroot_list三條指令同時啟動實現白名單定製。


//1、修改設定檔[root@localhost vsftpd]# vim vsftpd.confchroot_local_user=YESchroot_list_enable=YES# (default follows)chroot_list_file=/etc/vsftpd/chroot_list//2、建立檔案指定白名單[root@localhost vsftpd]# vim chroot_listzhaocentos//3、切換到用戶端測試[root@station144 ~]# ftp 172.16.18.1Connected to 172.16.18.1 (172.16.18.1).220 (vsFTPd 2.2.2)Name (172.16.18.1:root): centos     #centos在白名單中331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> pwd257 "/home/centos"ftp> cd /etc250 Directory successfully changed.ftp> ls                                  #可以查看etc下所有檔案227 Entering Passive Mode (172,16,18,1,214,167).150 Here comes the directory listing.drwxr-xr-x    5 0        0            4096 Jul 12 10:27 ConsoleKit-rw-r--r--    1 0        0            4439 Apr 17  2012 DIR_COLORS-rw-r--r--    1 0        0            5139 Apr 17  2012 DIR_COLORS.256color-rw-r--r--    1 0        0            4113 Apr 17  2012 DIR_COLORS.lightbgcolordrwxr-xr-x    5 0        0            4096 Jul 12 10:33 NetworkManager[root@station144 ~]# ftp 172.16.18.1Connected to 172.16.18.1 (172.16.18.1).220 (vsFTPd 2.2.2)Name (172.16.18.1:root): tom        #tom沒有在白名單檔案中,故無法實現查看其他檔案331 Please specify the password.Password:230 Login successful.Remote system type is UNIX.Using binary mode to transfer files.ftp> pwd257 "/"ftp> cd /etc550 Failed to change directory.


實戰四:如何定義傳輸速率;限定匿名使用者下載速度為10K而普通使用者不限定?

 匿名使用者最大傳輸速率:anon_max_rate=值;預設單位為位元組

 普通使用者最大傳送速率:local_max_rate=值

 擴充:要分別定義傳輸速率使用user_config_dir=/etc/vsftpd/userconfs/ 然後在後續目錄中分別以使用者名稱建立檔案將local_max_rate=值寫入其中即可。

[root@localhost vsftpd]# vim vsftpd.conf            #編輯設定檔anon_max_rate=10240                          #添加此命令[root@localhost vsftpd]# service vsftpd restart       #重啟服務

650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1F4361B0-2.png" title="12k.png" width="899" height="545" border="0" hspace="0" vspace="0" style="width:899px;height:545px;" />


實戰五:如何限定登入ftp的個數?

max_clients=值          #最大串連數max_per_ip=值          #某IP地址的最大串連數//由於地址的局限性,這裡就不在舉例說明了


怎麼利用ssl對ftp進行加密認證傳輸?

  本執行個體需要用到ssl認證加密功能,由於筆者對於ssl知識認識有限這裡就不再班門弄斧了,若想看筆者笑話敬請關注後續部落格Ooenssl加密認證。。。會有補充說明喲!!650) this.width=650;" src="http://www.bkjia.com/uploads/allimg/131227/1F43B515-3.gif" />




本文出自 “起點夢想” 部落格,請務必保留此出處http://pangge.blog.51cto.com/6013757/1275876

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.