以下內容將分別詳細闡述兩款文件服務器的搭建和常用功能及選項。
FTP服務器搭建
FTP:File Transfer Protocol文件傳輸協議,是大多數網頁瀏覽器和文件管理器都能夠支持的文件傳輸協議,它的歷史據今天已經整整40年的時間,是一種基於明文認證的協議。它的整個傳輸過程通過建立兩個鏈接來實現。一種爲數據鏈接,在有數據傳輸是纔會建立,端口20;另一種爲控制鏈接,用於指令的傳輸,這個鏈接一直保持,端口20;
數據的傳輸模式也有兩種:一種爲服務器從接口主動鏈接客戶端,叫做主動模式;另一種爲現有客戶端發出請求再建立鏈接進行數據傳輸。數據傳輸的格式同樣分爲兩種:二進制碼和ASCII碼。
FTP用戶服務類型有匿名用戶、本地用戶和虛擬用戶。匿名用戶指不用輸入賬號密碼或是使用ftp用戶ftp密碼進行登錄;本地用戶指的是本地主機用戶登錄,但是一般不推薦此種方式進行登錄,因爲本地用戶登錄容易遭到***使用緩衝區溢出從而提升至root權限;虛擬用戶是較爲穩妥的登錄方式,它由多個虛擬用戶映射一個本地用戶的機制來實現,虛擬用戶使用對應虛擬用戶密碼來訪問,從而實現與本地用戶分離的目的。
下面詳細介紹構建基於虛擬用戶的vsftpd服務器
1.安裝vsftpd
- yum install vsftpd
2.調整主配置文件
- vim /etc/vsftpd/vsftpd.conf
- local_enable=
- #本機用戶可登陸,使用本機用戶來登陸ftp服務器
- write_enable=YES
- #是否登陸可創建文件
- anon_upload_enable=YES
- #是否允許上傳文件
- dirmessage_enable=YES
- message_file=/var/ftp/message
- #定義歡迎信息
- idle_connection_timeout=300
- #空閒超時斷開時間
- data_connection_timeout=120
- #數據連接超時斷開時間
- chroot_list_enable=YES
- chroot_list_file=/etc/vsftpd/chroot_list #具體的限制列表
- #是否顯示用戶活動範圍僅限於其家目錄
- chown_upload=YES
- chown_username=
- #將上傳文件屬主改變成”=“後用戶
3.Ftp服務SSL加密的啓用
ssl加密啓用後將原來的明文傳輸加密
- vim /etc/vsftpd/vsftpd.conf
- #配置文件中加入
- ssl_enable=YES
- ssl_tlsv1=YES
- ssl_sslv2=YES
- ssl_sslv3=YES
- allow_anon_ssl=NO
- force_local_data_ssl=YES
- force_local_logins_ssl=YES
- rsa_cert_file=/etc/vsftpd/ssl/vsftpd.pem
- rsa_private_key_file=/etc/vsftpd/ssl/vsftpd.key
4.建立虛擬FTP用戶的賬號數據庫文件
- yum install -y db4-utils
- #安裝轉換虛擬用戶軟件包
- vim /etc/vsftpd/vusers.list
- mike
- 123
- john
- 456
- #編輯虛擬用戶賬號密碼
- db_load -T -t hash -f vusers.list vusers.db
- #生成數據文件
- chmod 600 vuser.*
- #chown root vuser.*
- #更改權限屬主
在使用 db_load 命令時,“-f”選項用於指定用戶名/密碼列表文件,“-T”選項允許非Berkeley DB的應用程序使用從文本格式轉換的DB數據文件,“-t hash”選項指定讀取數據文件的基本方法。關於db_load命令的詳細說明可參閱/usr/share/doc/db4-utils-4.3.29/utility/db_load.html文件
5.創建FTP根目錄以及虛擬用戶映射的系統用戶
- mkdir /var/ftproot
- useradd -d /var/ftproot -s /sbin/nologin virtual
- #vsftpd虛擬用戶需要有一個對應的系統用戶帳號(該帳號無需設置密碼及登錄Shell),該用戶帳號的宿主目錄作爲所有虛擬用戶登錄後的共同FTP根目錄
- chmod 755 /var/ftproot
- #去掉寫權限
6.創建支持虛擬用戶的PAM認證文件
- vim /etc/pam.d/vsftpd.vu
- #%PAM-1.0
- auth required pam_userdb.so db=/etc/vsftpd/vusers
- account required pam_userdb.so db=/etc/vsftpd/vusers
- #PAM配置文件(名稱可以自行定義)主要用於爲程序提供用戶認證控制,vsftpd服務使用的默認PAM配置文件爲/etc/pam.d/vsftpd,可以參考該文件的格式建立新的PAM配置文件,用於虛擬用戶認證控制
7.在vsftpd.conf 中添加支持配置
- vim /etc/vsftpd/vsftpd.conf
- guest_enable=YES
- guest_username=virtual
- pam_service_name=vsftpd.vu
- #在vsftpd.conf配置文件中添加guest_enable、guest_username配置項,將訪問FTP服務的所有虛擬用戶對應到同一系統用戶帳號virtual。並修改pam_service_name配置項,指向上一步建立的PAM配置文件/etc/pam.d/vsftpd.vu
8.爲個別虛擬用戶建立獨立的配置文件
- user_config_dir=/etc/vsftpd/vusers_dir
- #在vsftp.conf文件中添加
- mkdir /etc/ vsftpd/vusers_dir
- cd /etc/ vsftpd/vusers_dir
- #爲用戶mick jhon建立獨立的配置文件
- touch mike
- #配置文件與用戶名相同
- vim mike
- anon_upload_enable=YES
- anon_mkdir_write_enable=YES
9.重新加載vsftp配置
- sevice vsftpd reload
Samba服務器搭建
samba一款實現安裝unix系列操作系統與安裝Windows主機之間文件共享的開源軟件,它基於SMB/CIFS、NetBIOS等多個協議,在兩種OS的文件共享間架起了一座橋樑。通過samba的共享使得Windows用戶可以像訪問普通Windows下文件夾那樣訪問unix目錄。
下面就談一談Samba的服務的搭建
1.samba服務的安裝
- yum list samba*
- #查看相關samba相關的rpm其中samba-client、samba、samba-swat是我們假設服務所需要用到的
- yum install -y samba-swat samba samba-client
- #安裝samba客戶端 服務器端和swat
2.samba服務的配置
- vim /etc/samba/smb.conf
- #samba的主配置文件
- [global]全局控制文件
- workgroup=WORKGROUP #工作組
- server string=TEST #註釋信息
- security=user
- passdb backend = tdbsam #指使用哪中凡是存放密碼
- cups options=raw #定義打印的方式
- [homes]控制是否能夠訪問家目錄的
- comment= home directory #說明信息
- browserable=no #非屬主是否能夠查看當前目錄內容
- writable=yes #是否可寫
- [printer]控制打印機
- guest ok=no #打印機是否公開 ;是否支持來賓賬號打印
- security=user
- 這個選項比較重要它定義samba的安全級別{share:允許任何匿名共享;|默認是user:賬號和密碼來訪問(用戶是本地用戶但是密碼卻不是;|domain/server:集中式的用戶認證,有第三方服務器集中管理賬號密碼 ;|ads:基於kerberos來實現}
3.自定義文件選項
所謂自定義文件選項其實也就是自定義規則實現訪問控制等功能的共享文件目錄。自定義選項卸載主配置文件中,下面是作者定義的一個簡單的自定義選項:
- [file] #自定義選項同樣由[]引導,內容爲其他共享用戶看到的目錄名
- comment=mytools #標示信息
- path = /share #文件路徑,指明共享文件本機所在的位置
- browserable = yes #此文件是否允許查看
- guest ok = no #是否允許匿名用戶登陸
- writable = yes #是否可寫,此處還取決於文件本身的權限
- write list=gentoo #設置寫權限的用戶名單
4.啓動服務
- testparm
- #配置完成後首先檢查配置文件語法
- service smb start
- #啓動服務
- chkconfig smb on
- #設置2345運行級別開機啓用
- netstat -tunl
- #查看tcp139、445以及udp137、138端口爲監聽狀態標示服務成功啓動
5.設置登陸用戶的賬號/密碼
- 所有的samba用戶,必須爲本地用戶,但其用來登陸的密碼卻和本地密碼絲毫不相干。
- useradd gentoo
- #創建gentoo本地用戶且不設置密碼
- smbpasswd -a gentoo
- #設置gentoo用戶的samba密碼
6.文件共享的Windows和linux中的Samba客戶端
Windows網絡鄰居à查看工作組選項(samba主配置文件中定義的工作組是WORKGROUP)找到TEST主機,使用gentoo用戶登陸。
可見圖中有兩個共享文件夾:file和gentoo。
file文件夾既是上文自定義選項所定義的文件夾;
gentoo文件夾則是對應用戶的家目錄。
Linux中登陸samba服務器
- smbclient -L 192.168.0.72 -U gentoo
- #顯現查看目的主機有哪些共享目錄
- Domain=[TEST] OS=[Unix] Server=[Samba 3.0.33-3.14.el5] #對應顯示:域名爲TEST 操作系統爲Unix族 版本號爲Samba 3.0.33-3.14.el5
- Sharename Type Comment #對應顯示:共享目錄的名稱,類型,註釋信息
- --------- ---- -------
- file Disk mytesting
- IPC$ IPC IPC Service (Test)
- Server Printer Printing Server
- gentoo Disk Home Directories
- smbclient //192.168.0.72/gentoo -U gentoo
- #登入目標服務器目錄中
7.組訪問控制
上面已經實現了單用戶的訪問控制,如果要實現多用戶的訪問控制,直接對用戶的附加組進行操作即可。
- groupadd sambagrp
- #創建一個組
- useradd slackware
- usermod -G sambagrp slackware
- usermod -G sambagrp gentoo
- #將兩個用戶添加附加組
- vim /etc/samba/smb.conf
- write list=@sambagrp
- #設置該組可訪問自定義的file目錄
8.指定主機訪問
- hosts allow = 127. 192.168.
- #表示允許127.0.0.1和192.168.0.0網段用戶訪問
9.將smb共享文件夾掛載到本地
amba也支持類似於nfs以掛載的模式實現共享
- mount -t cifs //192.168.0.72/file /mnt/ -o username=gentoo
- #使用gentoo用戶將目標主機目錄掛載到本地
10.samba-swat的使用
samba-swat是基於自身提供的web服務器來實現對samba服務的配置。
- vim /etc/xinetd/swat
- service swat
- {
- port = 901 #服務端口
- socket_type = stream
- wait = no
- only_from = 192.168.0.0/24 #允許訪問的網段
- user = root #允許訪問的用戶
- server = /usr/sbin/swat
- log_on_failure += USERID
- disable = no #服務是否啓用
- }
注意:登錄格式 http://192.168.0.72:901,端口號不要忘了。
使用root用戶登陸後: