NIS、NFS 與 Autofs 整合應用

http://www.babyface.idv.tw/NetAdmin/29200806nisnfsautofs/

作者:徐秉義(Albert Hsu)

NIS、NFS 與 Autofs 是在 Linux/Unix 行之有年的帳號密碼統一驗證方式,他可以讓我們使用一群電腦,像是一整組電腦系統的好處(使用者登入每一台主機的帳號密碼一樣、使用者個人的資料亦相同)並且有著執行效率佳、穩定性高等等的優勢。

各自功能介紹

在 Linux/Unix 世界裡面,軟體經常有著『各司其職』的情況,當然 NIS、NFS 與 Autofs 也不例外,底下分別先以其主要功能來做介紹,接著再以實際操作來更加了解他們的用途。

NIS 帳號密碼統一管理

俗稱 Yellow Pages 或 YP 的 NIS 顧名思義主要是提供『資訊』(Information)的,其中又以帳號密碼資訊最為顯著,其他的資訊還包括:群組(/etc/group)、hosts(主機名稱對應的資訊)、aliases(郵件帳號別名)等等。

NFS 檔案共享

NFS 主要是將檔案系統(File System)輸出(export)去給其他主機來掛載 NFS 檔案系統,這在 Linux/Unix 之間是個非常好用的檔案共享工具,就好比在 Windows 主機之間使用網路芳鄰一樣。

Autofs 提供自動掛載、卸載功能

掛載與卸載通常不是一般使用者就可以執行,通常需要 root 權限來做,為了一般帳號使用 NFS 檔案系統的方便性,Linux 使用 Autofs 來幫助 User 存取 NFS Server 上面的資料。

溫馨提示:Autofs 也可以掛載其他檔案系統,例:NFS、ext3 與 iso9660。

測試環境介紹

此次測試需要兩台:一台當 Server、一台當 Client 其 IP 資訊如下表:

NIS Server 同時也是 NFS Server 172.18.0.3
NIS Client 同時也是 NFS Client 172.18.0.146

NIS Server 配置範例

配置一個極精簡的 NIS Server 其實並不太難,有幾個該注意到的重點要注意到即可。

先行準備的部份

取名一個您想要使用的 NIS Domain Name 例如『synage』;軟體部份則因標準安裝的 RHEL5.1 預設沒裝 NIS Server(套件名稱為 ypserv),可使用指令「yum install -y ypserv」補裝即可,裝好後就會有「/etc/init.d/ypserv」這個啟停 NIS Server 的 Script。

溫馨提示:在 RHEL5.1 使用 yum 需先配置好 yum Client,關於 yum 配置可參考筆者相關文件。

設定 NIS Server

使用指令「nisdomainname」顯示目前的 NIS Domain Name 為『空的』(尚未設定)。

使用指令「nisdomainname synage」設定 NIS Domain Name 為『synage』。

接著使用指令「/etc/init.d/ypserv restart」重新啟動 NIS Server(畫面上的 FAILED 是因為從未曾啟動過)。

指令「chkconfig ypserv on」則是設定 NIS Server 於開機時自動啟動。

溫馨提示:將 /etc/sysconfig/network 檔案內容加上一行(如下圖)例『NISDOMAIN=synage』這是 RedHat 針對 NIS Domain Name 的配套措施,這樣下次重開機時才會自動設定 NIS Domain Name 為 synage(否則每次重開機都要再執行指令「nisdomainname synage」才行)。

NIS Server 提供的資料

NIS Server 帳號密碼資料預設存放在 /var/yp/ 下 NIS Domain Name 目錄(例:/var/yp/synage/)是由系統帳號密碼檔案(/etc/passwd、/etc/shadow、/etc/group 等等)轉換過去的,產生的方法是切換到 /var/yp/ 目錄下,執行「make」指令即可。

指令「cd /var/yp」切換至 /var/yp/ 目錄下。

指令「make」產生 NIS Domain Name 為 synage/ 目錄下的 NIS 資料。

溫馨提示:如果 NIS Server 提供的資訊有異動(例如更改使用者密碼),記得要來這個目錄下執行「make」指令(也可以不切換目錄執行「make -C /var/yp」)。

由訊息上發現 NIS 提供不只是使用者帳號密碼與群組,還提供 hosts(主機名稱對應檔)、aliases(郵件別名檔案)等等的資訊。

NIS Server 與防火牆

要小心 NIS Client 來存取 NIS Server 時有可能會被 Server 的防火牆擋住;NIS Server 的 ypserv 服務與 NFS 的情況很類似,其連接埠號會異動,筆者曾在「設定 Linux 防火牆」一文中介紹如何『定住』NFS 服務的埠號再來調整防火牆,所以我們理論上也可以『定住』NIS 服務的埠號來調整防火牆,當然我們也可以設定防火牆允許 NIS Client 來源 IP(亦即『鎖定來源 IP』方式)。

上述說的兩個解決方式都比較複雜,為求測試簡單方便,所以採用『停掉』防火牆的方式來簡化設定如下圖。

指令「rpcinfo -p」可用來觀察 NIS、NFS、portmap 的 rpc 相關服務用到的埠號。

指令「/etc/init.d/iptables stop」停掉防火牆。

指令「chkconfig iptables off」設定防火牆下次開機不自動啟動(不阻擋)。

NIS Client 配置範例

大部分的 Linux Distribution 都有針對 NIS Client 設計方便好用工具來協助設定,這樣就不用手動去改 NIS 相關設定檔案(例如:/etc/nsswitch.conf、/etc/yp.conf 等等),在 Red Hat 使用「setup」指令就可以很輕鬆完成 NIS Client 的配置。

使用 setup 工具

執行指令「setup」後,選擇『認證設定』(Authentication configuration)。

點選『使用 NIS』(Use NIS)選『下一步』(Next)。

輸入正確的 NIS Domain Name 例『synage』以及「NIS Server IP 或主機名稱」接著按下『Ok』。

若要使用「主機名稱」則必須有辦法解析出 IP 來,使用 DNS 解析或 /etc/hosts 解析都可以。

在完成剛才『認證設定』後,會重新啟動 portmap 並開啟 SELinux 關於 allow_ypbind 的布林值與啟動 ypbind 服務。

測試 NIS Client 登入

接著使用 NIS Server 才有的帳號去登入 Client 主機,若是測試方式為 ssh 登入的話,最好先行重新啟動 sshd 再測試登入,登入後出現使用者家目錄無法找到的警告訊息是正常的,因為 NIS Client 主機上並沒有那個目錄,後續可用 NFS mount Server 或 Autofs 自動掛載 Server 上的 NFS 資料。

接著是實際的測試過程,先在 Server 上建立帳號 test 並設定密碼,且更新到 NIS 資訊,作法如下:

指令「useradd test」建立帳號 test。

指令「passwd test」設定 test 帳號的密碼。

指令「make -C /var/yp」將資訊更新至 NIS 資料區。

接下來是在 NIS Client 主機作業。

指令「/etc/init.d/sshd restart」重新啟動 sshd。

指令「ssh test@localhost」ssh 登入本機(NIS Client)localhost 使用帳號 test。

指令「grep test /etc/passwd」要表達的是,若無輸出資訊表示 NIS Client 主機的 local password 資訊內沒有 test 帳號。

指令「id test」用來確認出現在系統有 test 這個帳號的資訊(包括 NIS 提供的資訊)。

溫馨提示:若要取得 NIS Server 上的 passwd 與 group 以及其他檔案資訊需使用 getent 指令,例「getent passwd」、「getent group」等等。

欲解決 NIS 帳號登入無法存取家目錄的問題,最簡易的方式就是:『將 NIS Server 的 /home 採用 NFS 分享給 NIS Client 掛載到他的 /home 目錄』。

NFS Server 配置範例

要在 NIS Server 採用 NFS 分享 /home 給 NIS Client 主機設定範例如下:

編輯 /etc/exports 加入一行內容為『/home 172.18.0.146(rw,sync)』(其中 172.18.0.146 是 NIS client IP 位址)。

溫馨提示:來源主機也可以使用網段的描述方式,例如 172.18.0.0/255.255.0.0。

上述設定的意思是將 /home 分享(exports 出去)給來源 IP 是 172.18.0.146 掛載使用,權限為可讀寫(rw)。

指令「/etc/init.d/nfs restart」重新啟動 NFS Server(畫面上的 FAILED 是因為從未曾啟動過)。

指令「chkconfig nfs on」則是設定 NFS Server 於開機時自動啟動。

溫馨提示:防火牆同樣是關閉的(指令「/etc/init.d/iptables off」)以簡化測試流程。

NFS Client 配置範例

接下來在 NIS Client 主機(也就是 NFS Client 主機)要將 NFS Server 的 /home 掛載在自己的 /home 並測試使用 NIS 帳號 test 登入。

將 Server 的 /home 掛載在自己的 /home

指令「showmount -e 172.18.0.3」用來觀察 NFS Server(IP 172.18.0.3)有開放分享 /home 給 IP 172.18.0.146 主機(也就是 NFS Client)

指令「mount 172.18.0.3:/home /home」將 NFS Server 的 /home 掛載在自己的 /home。

指令「df」用來觀察掛載後的情況。

指令「ssh test@localhost」測試 NIS 帳號 test 使用 ssh 登入。

接下來在 test 家目錄產生的資料實際上會建立在 NFS Server(同時也是 NIS Server)上的 /home/test 目錄內。

撰寫 fstab 開機自動掛載

請注意 NFS Client 下次開機並不會自動掛載 NFS Server 的 /home 至自己的 /home 目錄,要完成這樣的功能的話,可以從編寫『/etc/fstab』來著手。

指令「umount /home」卸載 /home 目錄(先卸載以確保待會設定的自動掛載有效)。

撰寫 /etc/fstab 範例中寫在第三行『172.18.0.3:/home   /home   nfs   defaults   0   0』

使用指令「mount -a」可以測試撰寫在 /etc/fstab 內有無開機即掛載的作用。

接下來談到 autofs 怎麼與 NFS Server 來應用,首先從基本的 autofs 使用方法開始吧!

autofs 基礎配置

掛載與卸載通常需要 root 身份來執行,因此使用者要用到 NFS Server 上面的資料就顯得比較麻煩,而 autofs 主要的功能是讓我們使用者能使用 NFS Server 的資料,卻不需要先請 root 做掛載卸載的動作,取而代之的是自動掛載卸載(automount)這就是使用 autofs 主要用意。

autofs 基礎使用方法

在 RHEL5.1 的 autofs 開機會自動啟動的,控制其啟停的是「/etc/init.d/autofs」這個 Init Script,指令「chkconfig autofs --list」可檢查 autofs 是否開機自動起動。

預設值使用 autofs 功能的時候,不論您是用 root 還是 User 只要列出或是切換到 『/net/對方 IP 或主機名稱』就可以呼叫 root 來自動掛載對方的 NFS 分享,例如:

指令「su - test」變成 test 帳號的身份。

指令「ls /net/」原本看到的是空的。

指令「ls /net/172.18.0.3」就會看到 home 目錄(NFS Server 上的)。

只要帳號的身份正確,讀寫資料應該沒有問題(root 身份例外)。

溫馨提示:預設值 NFS Client 的 root 身份存取 Server 時,會被 Server 轉換成 nobody 或是 nfsnobody(在 RHEL5.1)身份。

autofs 的設定檔案

autofs 最主要的設定檔案是『/etc/auto.master』裡面定義使用到哪個目錄(例如:/net/、/misc)會自動掛載哪些資料(例如:/net/ 掛載 NFS、/misc/cd 掛載 cdrom),我們可以使用一些檔案瀏覽工具來觀察。

例如:指令「grep -v ^# /etc/auto.master」反向(-v 選項)過濾(grep)開頭是井字號(^#)

指令「file /etc/auto.net」得知這個檔案是一個 Shell Script。

我們得到的設定觀念如下表:

/net 使用 /etc/auto.net 這個 script 掛載 NFS 資料
例如:存取 /net/172.18.0.3 則會自動掛載對方主機 NFS 資料
/misc 使用 /etc/auto.misc 這個檔案內的定義掛載資料
例如:存取 /misc/cd 則會自動掛載 cdrom

Autofs 進階配置

使用 Autofs 的好處之一是『一般帳號可以存取特定目錄自動掛載檔案系統來使用』其二是『若掛載閒置超過一段時間後,會自動卸載的優點』(以節省 NFS Server 資源),接下來介紹的 Autofs 進階配置,可使得『NIS Client 主機的本機帳號與 NIS 帳號分離』且『NIS 帳號有登入才掛載 NFS Server 檔案』。

NIS Client 主機的本機帳號問題

當我們將 NFS Server 的 /home 掛載在 NIS Client 的 /home 時,建立 NIS Client 本機帳號時會有無法建立使用者家目錄的問題出現,原因為 NFS Client 的 root 身份被 NFS Server 轉換成 nobody 或 nfsnobody 了,導致權限不足如下圖。

此時建立帳號最好到 NIS Server 建立,避免在 NIS Client 建立一般帳號;除了這個方法以外,我們可以將 NIS Client 主機的本機帳號與 NIS 帳號抽離,規劃如下:

NIS Client 主機的本機帳號 家目錄在 /home/$USER 例:使用者 c2 家目錄 /home/c2
NIS Client 主機的 NIS 帳號 家目錄在 /export/home/$USER 例:使用者 test2 家目錄 /export/home/test2

恢復 NIS Client 主機的本機帳號正常使用

要讓 NIS Client 主機的本機帳號恢復正常使用,要先卸載原本掛載在 /home 的 NFS 分享。

在 NIS Client 主機執行指令「umount /home」卸載 /home 目錄。

編輯 /etc/fstab 將之前設定的第三行註解起來(就是 nfs 那一行)。

指令「df」觀察掛載情況(應該是卸載完畢)。

之後建立 c2 本機帳號且可正常使用,建立帳號指令「useradd c2」、切換成 c2 身份「su - c2」。

NIS Server 建立 NIS 帳號

按照我們的計畫,來到 NIS Server 建立帳號 test2 家目錄位於 /export/home/test2/。

先使用指令「mkdir -p /export/home」將此目錄做出來(以免建立帳號時無法成功做出家目錄)。

指令「useradd -d /export/home/test2 test2」建立使用者 test2 指明家目錄位於 /export/home/test2/。

指令「make -C /var/yp/」更新至 NIS 資料區。

NFS 分享資料異動

因為 NIS 帳號家目錄由 /home/$USER 改變到 /export/home/$USER 所以 NFS Server 設定也要跟著異動。

編輯 /etc/exports 設定檔,將原先的『/home 172.18.0.146(rw,sync)』設定註解起來,新增一行『/export/home 172.18.0.146(rw,sync)』

改完設定後記得重新啟動 NFS Server 指令「/etc/init.d/nfs restart」

設定 Autofs 使得 NIS 帳號 test2 登入掛載 /export/home/test2

編輯 Autofs 主要設定檔案 /etc/auto.master 模仿『/misc  /etc/auto.misc』那一行來新增『/export/home   /etc/auto.export.home』這一行設定,意思是當我們嘗試存取 /export/home/ 目錄底下時,就聽從 /etc/auto.export.home 的內容運作。

直接編輯 /etc/auto.export.home 的內容難度較高,不如用模仿 /etc/auto.misc 成為 /etc/auto.export.home 的方式,所以我們用拷貝的,指令「cp /etc/auto.misc /etc/auto.export.home」

有註解範例的編輯 /etc/auto.export.home 將原本有的 cd 那行加上註解,並模仿另一行註解中『#linux   -ro,soft,intr   ftp.example.org:/pub/linux』成為我們的設定『test2   -rw,soft,intr   172.18.0.3:/export/home/test2』特別注意 ro(read only)要改成 rw(read write)。

上面設定的意思是:當我們存取 test2(也就是 /export/home/test2)時,會掛載 172.18.0.3 NFS 主機的 /export/home/test2 且為讀寫模式(rw)。

改完設定後記得重新啟動 Autofs Service 使之生效,指令「/etc/init.d/autofs restart」

利用指令「su - test2」即可使用 NIS 帳號 test2 登入系統。

使用 df 以及 pwd 來觀察設定是否生效(自動掛載功能)。

接下來思考的問題是:這樣子 test2 帳號處理好了,若後續新增 test3、test4 帳號時,不就又要到每一台 NIS Client 主機調整 Autofs 設定了嗎?所幸 Autofs 設定支援萬用字元(也就是 * 字號,所以可以一次設定就使得後來建立的 test3、test4 都正常運作。

溫馨提示:這部份的說明文件請參考「man 5 autofs」關於 export 的地方(如下圖)。

使用 Autofs 的 Wildcard Key 功能

再度編輯 /etc/auto.export.home 將原先的『test2   -rw,soft,intr   172.18.0.3:/export/home/test2』加上註解,取而代之的是『*   -rw,soft,intr   172.18.0.3:/export/home/&』這樣 test2 登入掛載 /export/home/test2;test3 登入掛載 /export/home/test3。

改完一樣要記得重新啟動 Autofs Service 使之生效,指令「/etc/init.d/autofs restart」。

接下來就是測試了,在 Server 建立帳號 test3 並設定密碼,然後使用 test3 登入 Client 主機,觀察 Autofs 設定有無生效(如下圖)。

转载于:https://blog.51cto.com/bchu2010/327640

NIS、NFS 與 Autofs 整合應用相关推荐

  1. 解决方案: NIS+NFS+AUTOFS

    NIS+NFS+autofs实现NIS账号的登录 2009-05-15 14:10 1:环境 在NIS中,由于账户的在服务器端,而且它的主目录,因为在添加账号的时候只在服务器上有,而在客户端没有该账户 ...

  2. [转]MOSS 2007 整合運用 - Office System 2007 整合應用秘訣

    MOSS 2007 整合運用 - Office System 2007 整合應用秘訣 發佈日期: 2007 年 11 月 16 日 作者:顧武雄 (現任高傑信公司技術顧問.Microsoft MVP. ...

  3. NFS和autofs

    NFS和autofs自动挂载 前言 一.NFS 1. 简介 2. 原理 3. 配置 二.autofs 1. 简介 2. autofs配置 前言 在NFS文件系统的使用过程中,客户端要使用服务端所提供的 ...

  4. Android、iOS與WP8整合设计和协同开发_Workshop课程

    EE                                                                       TT 课程名称: Android.iOS與WP8整合架 ...

  5. Lotus Notes 和 Crystal Report 的整合應用

    一.寫在前面 跟據 Seagate 網站上的說明,要將 Crystal Report 跟 Lotus Notes 整合, 必須要安裝 Crystal Report 7.x以上版本及 Lotus Dom ...

  6. 服务器所属文件变成nobody,NFS使用autofs挂接后文件属主显示为nobody

    问题描述 客户端使用autofs挂接nfs的共享文件全部显示为nobody -rwxr-xr-x 1 nobody nobody 1819 Dec 16 16:53 clear_log.sh -rwx ...

  7. 通过NIS+NFS实现/home文件夹的共享(集群服务器共享文件节点)

    NIS:(Network Information Services)网络信息服务,用于集中管理数据,常用于在多台linux主机统一管理用户密码. NFS:(Network File System)网络 ...

  8. NFS And Autofs

    NFS(network file system) 挂载NFS 文件系统.NFS是一个标准的网络协议用在linux与unix之间,版本7默认使用的是NFSV4,NFSv4使用TCP协议,旧版本的NFS使 ...

  9. NFS(Autofs)挂载出现文件夹权限日期“?“问号

    问题:如下图,通过autofs或者nfs挂载目录后,出现目录无法访问的情况.使用`rm`或者`rm -d`等命令都无法删除,提示`stale file handle`. 解决方法:使用`umount` ...

最新文章

  1. 基于运动信息的物体检测(背景差分法、帧间差分法和光流法)。
  2. 7.0、Android Studio命令行工具
  3. 如何用python画数据图-python怎么对动态数据在同一张图上画出来
  4. 『精品批处理』一个漂亮的进度条源码
  5. Kotlin极简教程:第4章 基本数据类型与类型系统
  6. 线程通信wait与notify
  7. MySQL数据库引擎介绍、区别、创建和性能测试的深入分析
  8. LeetCode 1520. 最多的不重叠子字符串(贪心)
  9. 额外sql使用什么封装_为什么建立社区值得付出额外的努力
  10. 剑指offer例题5—逆序输出链表
  11. python go rpc_Python RPC 之 gRPC
  12. 【Django 2021年最新版教程11】数据库删除操作
  13. 会场安排问题和NYOJ966
  14. excel 转txt文件
  15. python递归函数例子_Python递归函数经典案例-汉诺塔问题
  16. 打开微信开发者工具后无法显示文件的问题解决方案
  17. 计算机网络-自顶向下方法 第三章课后习题答案(第七版)
  18. python读取dat文件经纬度_自动提取kml文件中的经纬度
  19. 6580 8.1 mtp模式,查看手机容量大小修改
  20. Spring3—AOP

热门文章

  1. iangularjs 模板_AngularJS中的模板安全与作用域绑定
  2. TCP流嗅探和连接跟踪工具tcpick
  3. EAP-MD5认证暴力破解工具eapmd5pass
  4. 加工中心宏程序生成器_零件行外球面加工,老师傅告诉你,普通程序与宏加工哪个更方便...
  5. python杨辉三角居中center_python经典---杨辉三角(两种方法)
  6. 快捷键设置_win10自带截图工具如何使用 、设置快捷键
  7. eeglab中文教程系列(13)-导入cnt文件
  8. 软件工程学完java后干_软件工程学习后的一些体会--------两周
  9. 3D打印「心脏」体外存活超6个月,心肌组织带有规律性搏动,来自中科院清华...
  10. 为了在元宇宙里摸到东西,扎克伯格整出了一款新电子皮肤,成本6美元