Linux的網絡文件共享服務器搭建詳解

本文介紹Linux中的三個網絡文件共享服務:ftp,nfs,samba

FTP服務

File Transfer Protocol 早期的三個應用級協議之一 mysql

  • 基於C/S結構 雙通道協議:數據和命令鏈接
  • 數據傳輸格式:二進制(默認)和文本
  • 兩種模式:(服務器角度)
    主動(PORT style):服務器主動鏈接
        命令(控制):客戶端:隨機port ---> 服務器:tcp 21
        數據:客戶端:隨機port <---服務器:tcp 20
    被動(PASV style):客戶端主動鏈接
        命令(控制):客戶端:隨機port ---> 服務器:tcp 21
        數據:客戶端:隨機port --->服務器:隨機port
    接下來我來用一個實驗演示FTP:基於MySQL驗證的vsftpd虛擬用戶

    實驗準備:

  • centos 7 做爲FTP服務器
  • centos 7test 做爲安裝了MySQL的客戶端
  1. 在ftp服務器上安裝pam_mysql
    [root@centos7 ~]# tar xvf pam_mysql-0.7RC1.tar.gz 
    [root@centos7 ~]# yum -y groupinstall "Development tools"#依賴工具包
    [root@centos7 ~]# yum -y install mariadb-devel pam-devel openssl-devel#依賴
    [root@centos7 pam_mysql-0.7RC1]# ./configure --with-mysql=/usr --with-pam=/usr --with-pam-mods-dir=/lib64/securit
    [root@centos7 pam_mysql-0.7RC1]#  make && make install
  2. 在ftp服務器上安裝vsftpd
    [root@centos7 ~]# yum -y install vsftpd
  3. 在數據庫服務器上安裝數據庫
    [root@centostest7 ~]# yum -y install mariadb#詳情看我前面的博客,有詳細介紹
  4. 在數據庫服務器上建立數據庫
    [root@centos7test ~]# mysql
    MariaDB [(none)]> create database ftpdb;
    MariaDB [(none)]> grant all on ftpdb.* to ftpuser@'%' identified by 'centos';
  5. 在數據庫服務器上使用建立的mysql賬戶登陸數據庫,而且建立數據表
    [root@centos7test ~]# mysql -uftpuser -h 172.18.252.106 -pcentos
    MariaDB [(none)]> use ftpdb;
    MariaDB [ftpdb]> create table ftpvusers (
        -> id int unsigned auto_increment primary key,
        -> username char(30),
        -> password char(48));
    MariaDB [ftpdb]> insert into ftpvusers (username,password) values ('lishuyang',password('centos')),('wangyapeng',password('centos'));
  6. 在FTP服務器上安裝vsftpd而且配置鏈接MySQL的pam_mysql模塊
    [root@centos7 ~]# yum -y install vsftpd
    [root@centos7 ~]# vim /etc/pam.d/vsftpd.mysql
    auth required pam_mysql.so user=ftpuser passwd=centos host=172.18.252.106 db=ftpdb table=ftpusers usercolumn=username passwdcolumn=password crypt=2
    account required pam_mysql.so user=ftpuser passwd=centos host=172.18.252.106 db=ftpdb table=ftpusers usercolumn=username passwdcolumn=password crypt=2

    配置字段說明
    • auth 表示認證
    • account 驗證帳號密碼正常使用
    • required 表示認證要經過
    • pam_mysql.so模塊是默認的相對路徑,是相對/lib64/security/路徑而言,也能夠寫絕對路徑;後面爲給此模塊傳遞的參數
    • user=vsftpd爲登陸mysql的用戶
    • passwd=magedu 登陸mysql的的密碼
    • host=mysqlserver mysql服務器的主機名或ip地址
    • db=vsftpd 指定鏈接msyql的數據庫名稱
    • table=users 指定鏈接數據庫中的表名
    • usercolumn=name 當作用戶名的字段
    • passwdcolumn=password 當作用戶名字段的密碼
    • crypt=2 密碼的加密方式爲mysql password()函數加密linux

  7. 修改vsftpd配置文件,使其適應mysql認證
    [root@centos7 ~]# vim /etc/vsftpd/vsftpd.conf
    anonymous_enable=YES
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    listen=NO
    listen_ipv6=YES
    userlist_enable=YES
    tcp_wrappers=YES
    guest_enable=YES
    pam_service_name=vsftpd.mysql  #使其原系統用戶沒法登錄
    guest_username=ftpvuser
    user_config_dir=/etc/vsftpd/configdir

    配置字段說明及經常使用的配置彙總
    • 在centos7當中ftp用戶的根目錄不能有w權限
    • listen_port (Default: 21) FTP命令通道的監
    • connect_from_port_20 (Default: YES) 是否容許主動傳輸
    • ftp_data_port (Default: 20) 主動模式使用的端口
    • pasv_min_port=9527 (Default: 0) 被動模式,服務端開啓的隨機端口的最小值
    • pasv_max_port=9529 (Default: 0) 被動模式,服務端開啓的隨機端口的最大值
    • anonymous_enable=YES (Default: YES) 是否開啓匿名用戶
    • local_enable=NO (Default: NO) 是否開啓Linux本地用戶登陸
    • local_root=(Default: (none)) 非匿名用戶登陸時所在的目錄,默認是各自的家目錄
    • write_enable=NO (Default: NO) 是否容許Linux本地用戶上傳文件
    • local_umask=022 (Default: 077) 本地用戶上傳文件的默認權限
    • anon_upload_enable=YES (Default: NO) 是否容許匿名用戶上傳,如啓動,還需讓ftp用戶對/var/ftp/pub及其餘須要上傳的目錄設置wx權限
    • anon_mkdir_write_enable=YES (Default: NO) 是否容許匿名用戶建立目錄,如啓動,還需讓ftp用戶對/var/ftp/pub及其餘須要上傳的目錄設置wx權限
    • no_anon_password=YES (Default: NO) 使用ftp客戶端登陸匿名時,是否密碼,如爲NO,即默認,則須要輸入任意密碼,如爲YES,直接登陸,不用輸入。
    • anon_world_readable_only (Default: YES) 匿名用戶下載文件時,文件必定要other上也有r權限。
    • anon_other_write_enable=YES (Default: NO) 匿名用戶是否能夠刪除及重命名
    • anon_umask (Default: 077) 匿名用戶上傳時的默認權限。
    • chown_uploads=YES (Default: NO) 匿名用戶上傳文件的所屬人是否要更改。如YES,則更改成chown_username所指定的
    • chown_username (Default: root)
    • chown_upload_mode=0755 (Default: 0600)在chown_uploads生效的前提下,設置匿名用戶的上傳權限,一旦設置anon_umask失效。且權限必定要權限4位
    • guest_enuable (Defalt: NO) 全部的非匿名用戶都映射爲了guest用戶
    • guest_username (Default: ftp) guest用戶是誰,默認ftp
    • chroot_local_user=YES 將linux系統用戶的根目錄設置爲家目錄,注意在Centos7中該目錄對用戶不能有w權限,當爲YES時,全部人都不能越獄,當爲NO時,全部人都能越獄。
    • chroot_list_enable=YES 越獄例外,下一行必定要有。當上一行爲YES是,爲白名單,當爲NO時,爲黑名單
    • chroot_list_file=/etc/vsftpd/chroot_list
    • xferlog_enable=YES (Default: no) 是否開啓上傳、下載日誌
    • xferlog_std_format (Default: no) 是否使用wuftp格式
    • xferlog_file (Default: /var/log/xferlog) xferlog的存放路徑
    • dual_log_enable (Default: NO) 是否同時開啓vsftpd格式的日誌,該格式記錄信息更多,不僅upload/downloads
    • vsftpd_log_file (Default: /var/log/vsftpd.log) vsftpd格式日誌的存放路徑
    • ftpd_banner (Default: none) 登陸時的歡迎信息。不是全部客戶端均可見
    • banner_file Default: (none) 登陸時的歡迎信息。不是全部客戶端均可見,當該行存在時,則優先於ftpd_banner
    • dirmessage_enable (Default: NO) 每進入一個目錄時,若是該目錄下有.message文件,則將其內容展示出來,不是全部客戶端均可見
    • message_file (Default: .message)
    • userlist_enable=YES (Default: NO) 是否啓用用戶過濾功能。如YES,則開啓,過濾文件由userlist_file決定
    • userlist_file (Default: /etc/vsftpd/user_list) 過濾文件路徑
    • userlist_deny (Default: YES) 當該值爲YES時userlist爲黑名單,反之爲白名單
    /etc/vsftpd/ftpuser 固定是黑名單,寫入其中的用戶必定不能登陸ftp
    • max_clients (Default: 2000) 容許同時登陸的客戶端請求數
    • nopriv_user (Default: nobody) 客戶端創建命令通道時,服務端與之鏈接的進程的所屬用戶
    • anon_max_rate (Default: 0) 匿名用戶上傳和下載的最大速度,單位字節。
    • local_max_rate (Default: 0) Linux本地用戶上傳和下載的最大速度,單位字節。
    • connect_timeout (Default: 60) 主動模式數據鏈接超時時長
    • accept_timeout (Default: 60) 被動模式數據鏈接超時時長
    • data_connection_timeout (Default: 300) 數據鏈接無數據傳輸時的超時時長
    • idle_session_timeout (Default: 300) 無命令操做超時時長
    • ascii_upload_enable=NO ASCII模式上傳
    • ascii_download_enable=NO ASCII模式下載sql

  8. 重啓服務而且測試數據庫

    [root@centos7 ~]# systemctl restart vsftpd
    [root@centos7test ~]# systemctl restart mariadb.service 
    [root@centos7 ~]# lftp 172.18.252.106
    lftp 172.18.252.106:~> user wangyapeng
    Password: 
    lftp wangyapeng@172.18.252.106:~> #成功登錄到ftp服務器

    這樣咱們利用MySQL的用戶成功登錄到FTP服務器上

    NFS服務

     NFS 就是 Network FileSystem 的縮寫,最先以前是由sun 這家公司所發展出來的。 它最大的功能就是能夠透過網絡,讓不一樣的機器、不一樣的操做系統、能夠彼此分享個別的檔案 (share files)。因此,你也能夠簡單的將他看作是一個文件服務器,這個 NFS 服務器可讓你的 PC 來將網絡遠程的 NFS 服務器分享的目錄,掛載到本地端的機器當中, 在本地端的機器看起來,那個遠程主機的目錄就好像是本身的一個磁盤分區槽同樣,使用上面至關的便利。vim

    NFS工具

    ###rpcinfo
    [root@centos7 ~]# rpcinfo -p 172.18.252.106   # 查看RPC註冊程序 
    [root@centos7 ~]# rpcinfo -s 172.18.252.106
    ###exportfs
    [root@centos7 ~]# exportfs -v  #查看本機全部NFS共享 
    [root@centos7 ~]# exportfs -r   #重讀配置文件,並共享目錄 
    [root@centos7 ~]# exportfs -a  #輸出本機全部共享 
    [root@centos7 ~]# exportfs -au #中止本機全部共享 
    ###展現遠程的共享的目錄
    [root@centos7 ~]# showmount -e 172.18.252.106

    實驗演示nfs自動掛載

    咱們有時候須要使用遠程的共享目錄,咱們能夠手動掛載遠程目錄,那麼須要好多臺主機上的目錄的話咱們是否是也須要一個一個手動掛載?不知道你們有沒有注意到咱們光盤目錄,當咱們用的時候它會自動掛載,不用的他不掛載,如今我來以一個實驗模擬自動掛載目錄centos

    1. 安裝nfsbash

      [root@centos7 ~]# yum -y install nfs-utils
      [root@centos7 ~]# vim /etc/exports.d/mage.exports #編輯配置文件
      /app/homedir *(rw,sync) # 要共享的目錄
      [root@centos7 ~]# exportfs -r  #從新讀取文件
      [root@centos7 ~]# systemctl restart nfs  #從新啓動服務

      配置文件說明
      • 默認選項:(ro,sync,root_squash,no_all_squash)
      • ro,rw 只讀和讀寫
      • async 異步,數據變化後不當即寫磁盤,性能高
      • sync(1.0.0後爲默認)同步,數據在請求時當即寫入共享 • no_all_squash (默認)保留共享文件的UID和GID
      • all_squash 全部遠程用戶(包括root)都變成nfsnobody
      • root_squash (默認)遠程root映射爲nfsnobody,UID爲65534,早期版本 是4294967294 (nfsnobody)
      • no_root_squash 遠程root映射成root用戶
      • anonuid和anongid 指明匿名用戶映射爲特定用戶UID和組GID,而非 nfsnobody,可配合all_squash使用服務器

    2. 安裝autofs
      [root@centos7 ~]# yum -y install autofs
    3. 配置主配置文件
      [root@centos7 ~]# vim /etc/auto.master
      /app/homedir    /etc/auto.mage   #掛載目錄的目錄名
      [root@centos7test ~]# vim /etc/auto.mage 
      * -fstype=nfs   172.18.252.106:/app/homedir/& #基名與遠程目錄匹配,後向引用
    4. 重啓autofs服務
      [root@centos7 ~]# service autofs restart
    5. 測試,客戶端和服務器建立一個用戶mage
      [root@centos7 ~]# su - mage
      [mage@centos7 ~]#ls -a
      .  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
      [mage@centos7 ~]$ df
      172.18.252.106:/app/homedir
                    186532       8    186524   1% /app/homedir

    至此用戶家目錄切換成功,且自動掛載,一段時間後會自動取消掛載網絡


    samba服務

    SMB:Server Message Block服務器消息塊,IBM發佈,最先是DOS網絡文 件共享協議
    SAMBA的功能:
    • 共享文件和打印,實如今線編輯
    • 實現登陸SAMBA用戶的身份認證
    • 能夠進行NetBIOS名稱解析
    • 外圍設備共享 session

    實驗演示samba多用戶掛載(僅支持centos7)

    1. 在服務器上建立用戶

      [root@centos7 ~]# useradd -s /sbin/nologin xiaofan
      [root@centos7 ~]# useradd -s /sbin/nologin xiaochen

      而且設置登錄samba服務的密碼

      [root@centos7 ~]# smbpasswd -a xiaofan #設置登錄密碼
      [root@centos7 ~]# smbpasswd -a xiaochen
    2. 建立共享目錄
      [root@centos7 ~]# mkdir /app/smbshared
      [root@centos7 ~]# chcon -t samba_share_t /app/smbshared  #不用關閉selinux直接給目錄設置指望值
      [root@centos7 ~]# setfacl -m u:xiaofan:rwx /app/smbshared  #給用戶設置讀寫權限
      [root@centos7 ~]# setfacl -m u:xiaochen /app/smbshared
    3. 配置共享目錄
      [root@centos7 ~]# vim /etc/samba/smb.conf
      [gongxiang]
              comment =  Gongxiang
              path = /app/smbshare    #設置的訪問目錄
              browseable = yes  #能夠瀏覽
              writeable = no    #可寫
              write list = xiaofan,xiaochen   #能夠寫的用戶
              public = yes   #是否可見
              allow list = 172.18. 192.168.  #表示能夠訪問的網段
    4. 從新啓動服務
      [root@centos7 ~]# systemctl restart smb
    5. 客戶端安裝工具
      [root@centos7 ~]# yum -y install cifs-utils
    6. 配置自動掛載目錄
      [root@centos7 ~]# vim /etc/fstab
      //172.18.254.96/gongxiang   /mnt/  cifs  credentials=/etc/multiuser,multiuser,sec=ntlmssp 0 0
    7. 配置登錄用戶
      [root@centos7 ~]# vim /etc/multiuser
      username=xuxian
      password=centos
    8. 掛載
      [root@centos7 ~]# mount -a
      [root@centos7 ~]# df
      172.18.252.106:/gongxiang
                     3667968   33024   3634944   1% /mnt/#
      [root@centos7 ~]# smbclient -L //172.18.252.106 -U xuxian
    9. 以低權限xuxian的身份獲取服務器上的高權限的xiaofan.xianchen 的權限
      [root@centos7 ~]# useradd xiaofan
      [root@centos7 ~]# useradd xiaochen
      [root@centos7 ~]# su - xiaofan #切換用戶
      [root@centos7 ~]# cifscreds add 172.18.252.106#隨便輸入服務端xiaofan.xiaochen的samba密碼

    至此完成samba多用戶掛載


使用NFS,NIS,AUTOFS實現用戶賬號及家目錄的漫遊

本實驗的場景:生活中一臺服務器提供帳號和目錄共享,而後其餘主機能夠實現這臺服務器的帳號共享及目錄的漫遊,使用對方目錄的時候自動掛載,不使用的時候自動取消掛載

  1. 服務端安裝軟件包
    [root@localhost ~]# yum -y install ypserv ypbind yp-tools
  2. 配置NIS域,而且使之生效
    [root@localhost ~]# vim /etc/sysconfig/network
    # Created by anacondoa
    NISDOMAIN=cyn
    [root@localhost ~]# nisdomainname cyn
  3. 編寫NIS主配置文件
    [root@centos7(nanyibo) ~]# vim /etc/ypserv.conf#最後添加內容
    127.0.0.1:*:*:none
    172.18.254.0/255.255.255.0:*:*:none #容許這個網段內的主機鏈接
    *:*:*:deny #其餘網段拒絕
  4. 啓動NIS服務,而且設置爲開機啓動
    [root@localhost ~]# systemctl restart ypserv
    [root@localhost ~]# systemctl enable ypserv
  5. 建立幾個用戶並指定家目錄
    [root@localhost ~]# mkdir /app/homedir#用戶的家目錄在這個目錄下
    [root@localhost ~]# for n in {1..5};do useradd -d /app/homedir/nisuser$n nisuser$n;echo centos |passwd --stdin nisuser$n;done
  6. nis生成數據庫
    [root@centos7test app]# /usr/lib64/yp/ypinit -m
    #先按CTRL+D,而後按Y。便可生成
  7. 配置NFS
    [root@centos7test ~]# yum -y install nfs-utils
    [root@localhost ~]# vim /etc/exports.d/cynports
    /app/homedir *(rw,sync)
    [root@localhost ~]# systemctl restart nfs
  8. 配置autofs
    [root@localhost ~]# yum -y install autofs
    [root@localhost ~]# vim /etc/auto.master
    /app/homedir    /etc/auto.cyn  timeout=10
    [root@localhost ~]# vim /etc/auto.cyn
    *      -fstype=nfs             172.18.254.234:/app/homedir/&
  9. 從新啓動autofs
    [root@localhost ~]# service autofs restart
  10. 客戶端nis的配置
    [root@centos6 ~]# yum install -y ypbind
    [root@centos6 ~]# setup

    這個時候會出現圖形化界面,選擇use nis ,空格肯定,選擇next,
    Linux的網絡文件共享服務器搭建詳解
    填入你本身設置的域名和服務器IP,選擇ok,而後再會出現一個界面。選擇退出便可
    Linux的網絡文件共享服務器搭建詳解

  11. autofs客戶端的測試
    [root@localhost ~]# mkdir -p /app/homedir
    [root@localhost ~]# su - nisuser1
    [nisuser2@localhost ~]$ ls -a
    .  ..  .bash_logout  .bash_profile  .bashrc  .mozilla
    [nisuser2@localhost ~]$ df
    172.18.254.136:/app/homedir/nisuser1
                      52403200 4518272  47884928   5% /app/homedir/nisuser1

    至此實驗完成,實現了服務器的用戶帳號共享及用戶家目錄的漫遊,對於所需目錄的自動掛載。

相關文章
相關標籤/搜索