在一般的區域網路中 (LAN) 如果都是 Windows 電腦,那麼使用『網路上的芳鄰』這個功能,就可以讓不同的 Windows 電腦分享彼此的檔案囉!但萬一這個 LAN 裡面有個 Linux 主機時,我怎麼讓 Linux 也加入這個 Windows 電腦當中的『網路上的芳鄰』呢?也就是說,讓 Windows 電腦可以透過『網路上的芳鄰』來存取 Linux 主機上面的檔案!呵呵!那就是 SAMBA 這個伺服器的主要目的了!SAMBA 是很有用的一個伺服器,他可以讓您的 Linux 剎那間成為一個檔案伺服器 (File Server),並提供整個 LAN 裡面的 Windows 很簡單的就可以對 Linux 主機進行檔案的存取動作。不僅如此, SAMBA 也可以讓 Linux 上面的印表機成為印表機伺服器 (Printer Server) ,鳥哥個人覺得, SAMBA 對於整個 LAN 的貢獻真的是很大!那麼就趕緊來玩一玩吧! ^_^ |
2. 什麼是 SAMBA ?
2.1 SAMBA 的發展歷史與名稱的由來
2.2 SAMBA 常見的應用
2.3 SMB 使用的 NetBIOS 通訊協定
2.4 SAMBA 使用的 daemons
2.5 連線模式的介紹 (peer/peer, domain model)
3. SAMBA 伺服器的基礎設定
3.1 Samba 所需套件及其套件結構
3.2 基礎設定流程與 smb.conf 的主要規劃 :
主機整體參數 , 分享目錄參數 , 變數特性
3.3 沒有密碼的 smb.conf 設定(純測試) (lmhosts , testparm , smbclient )
3.4 安全等級為使用者的工作羣組設定 (smbpasswd )
3.5 設定成為印表機伺服器 (CUPS 系統) (cupsaddsmb )
3.6 安全性管理 : iptables , smb.conf 設定值 , Quota , 關於備份
3.7 主機安裝時的規劃與中文磁區掛載
4. Samba 用戶端軟體功能
4.1 Windows 系統的使用 : WinXP 防火牆 , port 445
4.2 Linux 系統的使用 : smbclient , smbmount , nmblookup , smbstatus
5. 伺服器進階管理
5.1 讓 Samba 管理網域使用者:PDC
5.2 問題克服
5.3 使用者修改自己的密碼
5.4 利用 ACL 配合單一使用者時的控管
6. 重點回顧
7. 課後練習
8. 參考資料
9. 針對本文的建議:http://phorum.vbird.org/viewtopic.php?p=118976
SAMBA 的發展歷史與名稱的由來
而除了可以讓 Unix Like 的機器互相分享檔案的 NFS 伺服器之外,在微軟 (Microsoft) 作業系統上面也有類似的檔案系統,那就是 Common Internet File System, CIFS 這個咚咚啦!CIFS 最簡單的想法就是目前常見的『網路上的芳鄰 』咯! Windows 系統的電腦可以透過桌面上『網路上的芳鄰』來分享別人所提供的檔案資料哩!真是方便。 不過,NFS 僅能讓 Unix 機器溝通, CIFS 只能讓 Windows 機器溝通。傷腦筋,那麼有沒有讓 Windows 與 Unix-Like 這兩個不同的平臺相互分享檔案資料的檔案系統呢?
這個時候 Tridgwell 就想說:『咦!既然這兩部系統可以相互溝通,沒道理 Sun 就必需這麼苦命吧?可不可以將這兩部系統的運作原理找出來,然後讓 Sun 這部機器也能夠分享檔案資料呢? 』, 為瞭解決這樣的的問題,他老兄就自行寫了個 program 去偵測當 DOS 與 DEC 的 Unix 系統在進行資料分享傳送時所使用到的通訊協定資訊,然後將這些重要的資訊擷取下來, 並且基於上述所找到的通訊協定而開發出Server Message Block (SMB) 這個檔案系統,而就是這套 SMB 軟體就能夠讓 Unix 與 DOS 互相的分享資料囉!
Tips:
再次的給他強調一次,在 Unix Like 上面可以分享檔案資料的 file system 是 NFS,那麼在 Windows 上面使用的『網路上的芳鄰』所使用的檔案系統則稱為 Common Internet File System, CIFS |
SAMBA 常見的應用
- 分享檔案與印表機服務;
- 可以提供使用者登入 SAMBA 主機時的身份認證,以提供不同身份者的個別資料;
- 可以進行 Windows 網路上的主機名稱解析 (NetBIOS name)
- 可以進行裝置的分享 (例如 Zip, CDROM...)
如果你有安裝 SAMBA 伺服器的設定的話,那麼透過『網芳』的功能,直接連線遠端伺服器所提供的目錄, 如此一來你可以直接在你的個人電腦上面修改主機的檔案資料,只有一份正確的資料而已喔! 這就有點像是『線上編修』呢,一修改完成,在 Internet 上面可以立刻檢驗,方便的很吶!
SMB 使用的 NetBIOS 通訊協定
最早 IBM 發展出 NetBIOS 的目的僅是要讓區域網路內少數電腦進行網路連結的一個通訊協定而已, 所以考慮的角度並不是針對大型網路,因此,這個 NetBIOS 是無法跨路由的 (Router / Gateway) 。這個 NetBIOS 在區域網路內實在是很好用, 所以微軟的網路架構就使用了這個咚咚來進行溝通的吶!而 SAMBA 最早發展的時候,其實是想要讓 Linux 系統可以加入 Windows 的系統當中來分享使用彼此的檔案資料的,所以當然 SAMBA 就架構在 NetBIOS 發展出來囉。
不過 NetBIOS 是無法跨路由的,因此使用 NetBIOS 發展起來的伺服器理論上也是無法跨越路由的呢! 那麼該伺服器的使用範圍不就受限相當的多了?好在,我們還有所謂的 NetBIOS over TCP/IP 的技術呢!這是什麼樣的技術啊?
舉個例子來說好了,我們知道 TCP/IP 是目前網路連接的基本協定,現在我們將 NetBIOS 想成是一封明信片, 這個明信片只能讓您自己欣賞而已,如果今天我們要將這個明信片送到遠方的朋友那邊時!就需要透過郵件系統 (例如郵局啦、國際快遞啦等等的) 來傳送了!這個 TCP/IP 就可以視為郵件傳遞系統啦!透過這個 NetBIOS over TCP/IP 的技術,我們就可以跨路由的使用 SAMBA 伺服器所提供的功能咯! 當然啦,目前 SAMBA 還是比較廣泛的使用在 LAN 裡面說。
Tips:
或許您會發現在 Windows 網路設定裡面常常看到 NetBEUI 這個咚咚,那是什麼呢?那個是 NetBIOS Extened User Interface 的簡寫,也是 IBM 在 NetBIOS 發展出來之後的改良版本。雖然這兩者的技術不太相同, 不過,我們只要知道一些簡單的概念就可以了!所以,在這裡我們不針對 NetBEUI 來介紹。 |
SAMBA 使用的 daemons
- 取得對方主機的 NetBIOS name 定位該主機所在:
當我們想要登入某部 Windows 主機使用他所提供的檔案資料時,必需要加入該 Windows 主機的羣組 (Workgroup),並且我們的機器也必需要設定一個主機名稱,注意喔,這個主機名稱跟 Hostname 是不一樣的,因為這個主機名稱是架構在 NetBIOS 協定上的,我們可以簡單的稱呼他為 NetBIOS Name 好了。在同一個羣組當中,NetBIOS Name 必需要是獨一無二的喔! - 利用對方給予權限存取可用資源:
在我們找到該主機名稱後,是否能登入該對方主機或者是取用對方主機所提供的資源, 還要看對方 Windows 主機有沒有提供我們使用的權限吶!所以,並不是登入該 Windows 主機之後我們就可以無限制的取用該主機的檔案資源了。也就是說,如果對方主機允許你登入, 但是卻沒有開放任何資源讓您取用,呵呵,登入主機也無法查看對方的硬碟裡面的資料的啦!
- nmbd :這個 daemon 是用來管理工作羣組啦、NetBIOS name 啦等等的解析。 主要利用 UDP 協定開啟 port 137, 138 來負責名稱解析的任務;
- smbd :這個 daemon 的主要功能就是用來管理 SAMBA 主機分享的目錄、檔案與印表機等等。 主要利用可靠的 TCP 協定來傳輸資料,開放的埠口為 139 及 445(不一定存在) 。
連線模式的介紹 (peer/peer, domain model)
這樣的架構在目前小型辦公室裡面是最常見的。例如辦公室裡面有十個人,每個人桌上可能都安裝有一套 Windows 作業系統的個人電腦,而這十部電腦都可以獨立進行辦公室軟體的執行啊、獨立上網啊、獨立玩遊戲啊等等的, 因為這十部電腦都可以獨立運作,所以不會有一部電腦關掉,其他的電腦就無法工作的情況發生,這就是 peer/peer 的典型架構。
以下圖的架構為例,在這樣的架構下,假設 A 君寫了一個報告書,而 B 君想要以網路直接取用這個報告書時,他就必須要知道 A 君使用的電腦的帳號與密碼,並且 A 君必須要在 PC A 上面啟用 Windows 的『資源分享(或者是共用)』之後,纔能夠讓 B 君連線進入喔 (此時 PC A 為 Server) !而且, A 君可以隨時依照自己的喜好來更改自己的帳號與密碼,而不受 B 君的影響,不過, B 君就得要取得 A 君同意取得新的帳號與密碼後,纔能夠登入 PC A 喔!反過來說,同樣的, A 要取得 B 的資料時,同樣需要取得 PC B 的帳號與密碼後,纔能夠順利登入啊 (此時 PC A 為 Client 喔)!因為 PC A, PC B, PC C 的角色與地位都同時可以為 Client 與 Server ,所以就是 peer/peer 的架構了!
圖一、Peer/Peer 的連線模式
生活周遭中,哪裡看到的這種 peer/peer 的架構呢?想起來了嗎?沒錯!就是藉由 Windows 的『網路上的芳鄰』所達成的『工作羣組(workgroup)』的架構,那就是典型的 peer/peer 架構啦!所以, peer/peer 也可以直接說成 workgroup 的連線架構喔。
使用 peer/peer 的架構的好處,是每部電腦均可以獨立運作,而不受他人的影響!不過, 缺點就是當整個網域內的所有人員都要進行資料分享時,光是知道所有電腦裡面的帳號與密碼,就會很傷腦筋了! 所以, Peer/Peer 的架構是比較適合 (1)小型的網域,或者是 (2)沒有需要常常進行檔案資料分享的網路環境,或者是 (3)每個使用者都獨自擁有該電腦的擁有權(就是說,該電腦是使用者的,而不是公用的啦!) 而,如果該單位的所有 PC 均是公有的,而且您需要統一控管整個網域裡面的帳號與密碼的話,那就得使用底下的 domain models 了!
如果上述是這樣的情況,使用 peer/peer 架構就不是一個好方法了!這個時候就需要藉由 domain model 來達成您的需求啦!所謂的 domain model 概念其實也很簡單,既然使用電腦資源需要帳號與密碼, 那麼我將所有的帳號與密碼都放置在一部主控電腦 (Primary Domain Controller, PDC ) 上面,在我的網域裡面,任何人想要使用任何電腦時,都需要在螢幕前方輸入帳號與密碼,然後通通藉由 PDC 主機的辨識後,才給予適當的使用權限,也就是說,不同的身份還具有不一樣的電腦資源使用權限就是了! 例如底下的圖示:
圖二、domain model 的連線模式
PDC 主機控管整個網域裡面的各個機器 (PC A ~ PC D) 的帳號與密碼的資訊,假如今天有個使用者帳號名稱為 Ken ,且密碼為 mypasswd 時,他不論使用哪一部電腦 (PC A ~ PC D) 只要在螢幕前方輸入 ken 與他的密碼,則該機器會先到 PDC 上面查驗是否有 ken ,以及 ken 的密碼,並且 PDC 主機會給予 ken 這個使用者相關的電腦資源使用權限。當 ken 在任何一部主機上面登入成功後,他就可以使用相關的電腦資源了!
這樣的架構比較適合人來人往的企業架構,當系統管理員要控管新進人員的電腦資源使用權時,可以直接針對 PDC 來修改就好了,不需要每一部主機都去修修改改的,對於系統管理員來說,這樣的架構在控管帳號資源上,當然是比較簡單的啦!
Samba 所需套件及其套件結構
- samba
:
這個套件主要包含了 SAMBA 的主要 daemon 檔案 (smbd 及 nmbd)、 SAMBA 的文件檔 (document)、以及其他與 SAMBA 相關的 logrotate 設定檔及開機預設選項檔案等; - samba-common
:
這個套件則主要提供了 SAMBA 的主要設定檔 (smb.conf) 、 smb.conf 語法檢驗的測試程式 (testparm)等等; - samba-client
:
這個套件則提供了當 Linux 做為 SAMBA Client 端時,所需要的工具指令,例如掛載 SAMBA 檔案格式的執行檔 smbmount 等等。
- /etc/samba/smb.conf
:
smb.conf 是 Samba 的主要設定檔名,如果你的 distribution 的 SAMBA 設定檔不在 /etc/samba/ 目錄當中, 那麼你應該使用 locate 或 find 等方式將他找出來就好啦。基本上,咱們的 Samba 就僅有這個設定檔而已, 且這個設定檔本身就是很詳細的說明文件了,請用 vi 去查閱他吧!這個檔案主要在設定工作羣組、 NetBIOS 名稱以及分享的目錄等相關設定,我們後續要介紹的都是這個檔案而已啦! - /etc/samba/lmhosts
:
這個檔案的主要目的在對應 NetBIOS name 與該主機名稱的 IP ,事實上他有點像是 /etc/hosts 的功能!只不過這個 lmhosts 對應的主機名稱是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!由於目前 SAMBA 的功能越來越強大,所以通常只要您一啟動 SAMBA 時,他就能自己捉到 LAN 裡面的相關電腦的 NetBIOS name 對應 IP 的資訊,因此這個檔案通常可以不用設定了! - /etc/samba/smbpasswd
:
這個檔案預設並不存在啦!他是 SAMBA 預設的使用者密碼對應表 。當我們設定的 SAMBA 伺服器是較為嚴密的,需要使用者輸入帳號與密碼後才能登入的狀態時,使用者的密碼預設就是放置在這裡咯 (當然囉,您可以自行在 smb.conf 裡面設定密碼放置的地方及密碼檔名, 不過我們這裡都以預設的狀態來說明 ) 。比較需要注意的是,這個檔案因為包含了使用者的密碼, 當然權限方面要較為注意啦!這個檔案的擁有者需要是 root ,且權限設定為 600 才行喔! - /etc/samba/smbusers
:
由於 Windows 與 Unix-like 在管理員與訪客的帳號名稱不一致,分別為 administrator 及 root, 為了對應這兩者之間的帳號關係,可以使用這個檔案來設定。不過這個檔案的使用必須要經由 smb.conf 內的『 username map 』設定項目來啟動才行。 - testparm
:
這個指令主要在檢驗 samba 設定檔 smb.conf 的語法正確與否,當你編輯過 smb.conf 時,請務必使用這個指令來檢查一次, 避免因為打字錯誤引起的困擾啊! - smbd, nmbd
:
前幾個小節曾經提過的兩個主要 daemon 就在這裡! - smbstatus
:
列出目前的 SMB server 的狀態,也是很有用途的一個指令啦! - smbpasswd
:
如果您的 SAMBA 設定的較為嚴格,需要規定使用者的帳號與密碼,那麼那個密碼檔案的建立就需要使用 smbpasswd 來建置纔可以的喔!所以這個指令與建立 SAMBA 的密碼有關咯! - smbclient
:
當你的 Linux 主機想要藉由『網路上的芳鄰』的功能來查看別臺電腦所分享出來的目錄與裝置時,就可以使用 smbclient 來查看啦!這個指令也可以使用在自己的 SAMBA 主機上面,用來查看是否設定成功哩! - smbmount
:
在 Windows 上面我們可以設定『網路磁碟機』來連接到自己的主機上面,同樣的,在 Linux 上面,我們可以透過 smbmount 來將遠端主機分享的檔案與目錄掛載到自己的 Linux 主機上面哪!不過,其實我們也可以直接使用 mount 這個指令來進行同樣的功能就是了。 - nmblookup
:
有點類似 nslookup 啦!重點在查出 NetBIOS name 就是了。 - smbtree
:
這玩意就有點像 Windows 系統的網路上的芳鄰顯示的結果,可以顯示類似『靠近我的電腦』之類的資料, 能夠查到工作羣組與電腦名稱的樹狀目錄分佈圖,有趣吧! - /usr/share/doc/samba-<版本>
:
這個目錄包含了 SAMBA 的所有相關的技術手冊喔!也就是說,當您安裝好了 SAMBA 之後,您的系統裡面就已經含有相當豐富而完整的 SAMBA 使用手冊了!值得高興吧! ^_^,所以,趕緊自行參考喔!
基礎設定流程與 smb.conf 的主要規劃
- 主機與主機之間必須要在同一個網域當中 (否則需要修改 Windows 預設防火牆);
- 最好設定為同一工作羣組;
- 主機的名稱不可相同 (NetBIOS name);
- 專業版 Windows XP 最多僅能提供同時十個用戶連線到網芳。
- 叫出檔案總管,然後在要分享的目錄、磁碟或裝置 (如印表機) 上面按下右鍵,選擇『共用』,然後就能夠設定好分享的資料了;
- 最好建立一組給用戶使用的帳號與密碼,讓其他主機的使用者可以透過該帳號密碼連線進入網芳;
- 在 smb.conf 當中設定好工作羣組、NetBIOS 主機名、密碼使用狀態等等與主機相關的資訊;
- 在 smb.conf 內設定好預計要分享的目錄或裝置以及可供使用的使用者資料;
- 根據步驟 2 的設定,在 Linux 檔案系統當中建立好分享出去的檔案或裝置的使用權限;
- 根據步驟 2 的設定,以 smbpasswd 建立起使用者的帳號及密碼
- 啟動 Samba 的 smbd, nmbd 服務,開始運轉哩!
# 會有很多加上 # 或 ; 的註解說明,你也可以自行加上來提醒自己相關設定 |
- workgroup = 工作羣組的名稱 :注意,主機羣要相同;
- netbios name = 主機的 NetBIOS 名稱 啊,每部主機均不同;
- server string = 主機的簡易說明 ,這個隨便寫即可。
- display charset = 自己伺服器上面的顯示編碼 , 例如你在終端機時所查閱的編碼資訊。一般來說,與底下的 unix charset 會相同。
- unix charset = 在 Linux 伺服器上面所使用的編碼 ,一般來說就是 i18n 的編碼囉! 所以你必須要參考 /etc/sysconfig/i18n 內的『預設』編碼。
- dos charset = 就是 Windows 用戶端的編碼了! 一般來說我們的繁體中文 Windows 使用的是 big5 編碼,這個編碼在 Samba 內的格式被稱為『 cp950 』喔!
我們的網友 eyesblue 寫得太好了!所以建議大家直接前往查閱即可!除此之外,還有登錄檔方面的資訊, 包括這些參數:
- log file = 登錄檔放置的檔案,檔名可能會使用變數處理;
- max log size = 登錄檔最大僅能到多少 Kbytes ,若大於該數字,則會被 rotate 掉。
- security = user, server, domain, share
四選一,這四個設定值分別代表:
- user :使用 SAMBA 本身的密碼資料庫,密碼資料庫與底下的 smb passwd file 有關;
- share :分享的資料不需要密碼即可分享;
- server, domain :使用外部主機的密碼,亦即 SAMBA 是用戶端之意,如果設定這個項目, 你還得要提供『password server = IP』的設定值才行;
- encrypt passwords = Yes 代表密碼要加密 ,注意那個 passwords 要有 s 才對!
- smb passwd file = 密碼放置的檔案,通常是 /etc/samba/smbpasswd 。
- [分享名稱] :這個分享名稱很重要,他是一個『代號』而已。 舉例來說,你在 Windows 當中使用『共用』來分享網芳時,假設你將『D:/game』分享出來, 系統不是還會要你輸入一個『在網路上面的名稱』嗎?假設你輸入『My_Games』這個名稱好了, 那麼未來大家在網芳看到的這個資料夾 (D:/game) 名稱其實是『//你的IP/My_Games』啦!
- comment :這個目錄的說明!
- path :在網芳中顯示的名稱 [分享名稱] 中,所實際進入的 Linux 檔案系統。 也就是說,在網芳當中看到的是 [分享] 的名稱,而實際操作的檔案系統則是在 path 裡頭所設定的。
- read only :是否唯讀?
- public :是否讓所有可以登入的使用者看到這個項目?
- writable :是否可以寫入?這裡需要注意一下喔!那個 read only 與 writable 不是兩個蠻相似的設定值嗎?如果 writable 在這裡設定為 no ,亦即不可寫入,那跟 read only 不就互相牴觸了!那個纔是正確的設定?答案是:最後出現的那個設定值為主要的設定!
- create mode 與 directory mode 都與權限有關的咯!
- valid users = 使用者 ,這個項目可以指定能夠進入到此資源的特定使用者。
- %S
:取代目前的設定項目值,所謂的『設定項目值』就是在 [分享] 裡面的內容!
舉例來說,例如底下的設定範例:
[homes]
valid users = %S
....
- %m :代表 Client 端的 NetBIOS 主機名稱喔!
- %M :代表 Client 端的 Internet 主機名稱喔!就是 HOSTNAME。
- %L :代表 SAMBA 主機的 NetBIOS 主機名稱。
- %H :代表使用者的家目錄。
- %U :代表目前登入的使用者的使用者名稱
- %g :代表登入的使用者的羣組名稱。
- %h :代表目前這部 SAMBA 主機的 HOSTNAME 喔!注意是 hostname 不是 NetBIOS name 喔!
- %I :代表 Client 的 IP 咯。
- %T :代表目前的日期與時間
沒有密碼的 smb.conf 設定(純測試)
- 在 LAN 內所有的網芳主機工作羣組 (workgroup) 為: vbirdhouse
- 這部 Linux 主機 (Samba 服務) 的 NetBIOS 名稱為: vbirdserver
- 使用者登入層級設定為: share
- 僅分享 /tmp 這個目錄而已,且取名為: temp
- Linux 主機的編碼格式假設為萬國碼 (Unicode, 亦即 utf8)
- 用戶端為中文 Windows ,在用戶端的軟體也使用 big5 的編碼
[root@linux ~]# vi /etc/samba/lmhosts |
為瞭解決這個問題,你必須要知道幾個項目:
- 原始檔案 (你要分享的檔案) 編碼的格式為何?一般來說,中文 Windows 的編碼預設為 Big5 ;
- 這個檔案放置在 Linux 上,則這部 Linux 的預設語系編碼為何?這與 /etc/sysconfig/i18n 有關;
- 在 Samba 上頭的顯示編碼為何?一般來說與上述的 Linux 預設編碼相同即可;
- 在用戶端連接到 Samba 主機的軟體之語系編碼為何?如果是中文 Windows 作業系統,預設為 Big5。
所以,你至少得要知道你的 Linux 語系編碼為何?在 Red Hat 系統 (含我們的 CentOS) 可以查閱 /etc/sysconfig/i18n 這個檔案, 如下所示為鳥哥的 i18n :
[root@linux ~]# cat /etc/sysconfig/i18n |
[root@linux ~]# cd /etc/samba |
[root@linux ~]# testparm |
Unknown parameter encountered: "linux charset" <==錯誤的設定 |
如果你想要瞭解 samba 的所有設定 (包括沒有在 smb.conf 裡頭設定的預設值),可以使用 testparm -v 來作詳細的輸出, 資料相當的豐富,透過這個您也可以知道你的主機環境設定為何呢! ^_^
[root@linux ~]# /etc/init.d/smb start |
[root@linux ~]# smbclient -L [//主機或IP] [-U 使用者帳號] |
[root@linux ~]# smbclient -L //127.0.0.1 |
安全等級為使用者的工作羣組設定
那怎麼辦?沒關係,我們可以透過 Samba 主機提供的認證方式來進行使用者權限的給予, 也就是說,你在用戶端連線到主機時,必須要輸入正確的帳號與密碼後,纔能夠登入 Samba 主機查閱到你自己的資料! 那會不會很難啊?不會啦! Samba 本身就提供一個小程式來幫助我們處理密碼的建立了, 整個流程還不太難。比較重要的是Samba 使用者帳號必須要存在於 Linux 系統當中 (/etc/passwd), 但是 Samba 的密碼與 Unix 的密碼檔案並不相同。 這就比較有點小麻煩~ 沒關係,就讓我們依樣畫葫蘆來處理一下這個部分的設定吧!
- 剛剛前一個免密碼時的 smb.conf 設定繼續保留;
- 針對 NetBIOS name 的解析方式依序由 lmhosts, broadcast 及 host 來進行解析;
- 安全等級提升為 user 等級;
- 密碼檔案放置到 /etc/samba/smbpasswd 這個檔案當中;
- 密碼必須要加密;
- 每個可使用 samba 的使用者擁有自己的家目錄之外, users 這個羣組的使用者可以進入 /home/public 目錄中, 且在該目錄下 users 這個羣組的所有人可具有寫入的權限喔!
[root@linux ~]# vi /etc/samba/smb.conf |
在新增的資料部分,主要是與密碼檔案有關啦!包括安全等級設定為使用本機的密碼驗證,亦即是『 security = user 』 那個項目,而且加上了密碼加密。至於 Samba 使用的密碼檔預設就是 /etc/samba/smbpasswd 這個, 為了增加自己的記憶,乾脆直接寫到 smb.conf 當中即可。
至於那個『 name resolve order 』就有趣了!他說明的是『這部 Samba 主機針對 NetBIOS name 的解析方式』, 主要的解析方式有幾種:
- lmhosts:直接以 lmhosts 這個檔案的內容來對照;
- wins:利用一部可管理 Windows 網芳的主控電腦來紀錄,本 Samba 主機向該部主機 (wins server) 要求 NetBIOS 名稱解析結果;
- host:透過 /etc/hosts 或者是 NIS, DNS 等方式來處理 NetBIOS name 的結果;
- bcast:在區網中直接透過 NetBIOS 的廣播功能處理,亦即是向所有 Samba 主機介面的同一網域主機發出名稱解析的需求, 舉例來說咱們的 Samba 主機為 192.168.1.254/24 ,則以 bcast 解析 NetBIOS name 時,我們的伺服器會主動向 192.168.1.0/24 發送出解析封包的要求啊。
[homes] 部分
至於新增的目錄方面,[homes] 是個比較特殊的分享名稱,他代表 Linux 主機上頭的使用者家目錄。 我們知道 [homes] 代表的是分享目錄的資源名稱, 但你總不希望使用 Samba 時找到的資源分享名稱為 //127.0.0.1/homes 吧? 所以才會有『 valid users = %S 』這個設定值,那個 %S 代表擁有可登入 Samba 的所有使用者, 且當他登入後,那個 [homes] 會變成 [帳號] , 請至前一小節的變數 部分查詢相關的說明。而且使用者的家目錄是除了使用者本人外, 並不會開放給其他人瀏覽的喔 (browseable = no), 另外他的 umask 為 002,因為建立新檔 (create mode) 預設權限為 0664 ,而建立新目錄 (directory mode) 則為 0775 之故。
[public] 部分
另一個新增的分享資源比較有趣,我們命名為 [public] ,指向的目錄為 /home/public , 有趣的地方在於使用的 valid users = @users 這個設定項目,加上 @ 之後的名稱代表著羣組之意 ,意思是說,在 Linux 主機上面可使用 Samba 的帳號中,只要該帳號支援 users 這個羣組, 那麼理論上他就能夠進入 /home/public 目錄進行存取的權限。不過能否順利的存取檔案還與 Linux 最底層的檔案權限有關 。且任何人均可查閱到我們的主機有提供 [public] 這個分享資源 (public = yes 之故)。
例題: 在上面的這個設定檔當中有提到分享出 /home/public 這個目錄, 請問這個目錄的權限應該如何設定纔是符合我們 Samba 案例的要求? 答:
|
- 在 Linux 這個系統下,任何程序都需要取得 UID 與 GID (User ID 與 Group ID) 的身份之後,纔能夠擁有該身份的權限,也纔能夠適當的進行存取檔案等動作!
- 關於 Linux 這個系統的 UID 與 GID 與帳號的相對關係,一般記錄在 /etc/passwd 當中,當然也能透過 NIS, ldap 等方式來取對應;
- SAMBA 僅只是 Linux 底下的一套軟體,使用 SAMBA 來進行 Linux 檔案系統時,還是需要以 Linux 系統下的 UID 與 GID 為準則!
-
我們需要透過 SAMBA 所提供的功能來進行 Linux 的存取,而 Linux
的存取是需要取得 Linux 系統上面的 UID 與 GID 的,因此,我們登入 SAMBA 主機時,所利用 SAMBA
取得的其實是 Linux 系統裡面的相關帳號!這也就是說,在 SAMBA 上面的使用者帳號,必須要是
Linux 帳號中的一個!
好了,假設我的機器裡面已經有 dmtsai, nikky, tang 等三人,不過我只想要讓 dmtsai 及 nikky 使用 SAMBA 而已的話, 那麼如何將這兩個使用者加入帳號密碼管理檔案 /etc/samba/smbpasswd 當中呢?很簡單的啦!這樣做即可:
1. 先確認密碼檔是否存在 |
[root@linux ~]# testparm |
舉上面的例子來說好了,我們在 smb.conf 當中設定 [public] 為可寫入,亦即 /home/public 是可寫入的。 假設 dmtsai 屬於 users 這個羣組,因此以 dmtsai 登入 SAMBA 伺服器後,對於 /home/public 應該是具有可以讀寫的能力的!但是,如果你以 root 的身份建立 /home/public 卻又忘記修改權限的話, 此時 /home/public 是無法讓 users 這個羣組寫入的,因此 dmtsai 這個使用者當然不具有寫入的能力。 這樣說,瞭解鳥哥想要說啥了嗎?注意注意喔! ^_^
- 利用編輯 smb.conf 來多開放其他的目錄,並且特別注意 Linux 在該目錄下的權限喔!請使用 chown 與 chmod 吧!
- 利用 smbpasswd 來新增其他使用者到 /etc/samba/smbpasswd 裡面去,如果該帳號並沒有出現在 /etc/passwd 裡面,請先以 useradd 新增該帳號;
- 不論進行完任何的設定,請先以 testparm 進行確認,之後以 /etc/init.d/smb restart 來重新啟動!
設定成為印表機伺服器 (CUPS 系統)
在 Linux 底下進行列印的工具很多,不過我們這裡要介紹的僅有目前較廣為流行的 CUPS (Common Unix Printing System) 這一個。 詳細的 CUPS 安裝設定方法我們已經在基礎篇的 CUPS 章節當中提過, 所以這裡我們不再詳細說明,僅介紹大致的處理流程就是了。如果你需要較早期的 LPRng 列印系統的話, 建議可以參考底下的資料喔:
- 依瑪貓的列印文件:http://www.imacat.idv.tw/tech/lnxprint.html
- 鳥哥的 LPRng 簡介:http://linux.vbird.org/linux_server/0370samba/0370samba.php
如果你的印表機連接埠為使用 USB 或者是平行序列埠的話,那麼當你連接上印表機後, 可以利用底下的方式測試看看是否成功的連接上了:
[root@linux ~]# echo "Hello printer" > /dev/lp0 <==平行序列埠 |
- cups-libs
- cups
- 我需要讓 192.168.1.0/24 這個網域可以使用印表機
- 我需要讓 192.168.1.0/24 及 127.0.0.0/8 可以管理 CUPS 系統
[root@linux ~]# vi /etc/cups/cupsd.conf |
[root@linux ~]# vi /etc/cups/mime.convs |
[root@linux ~]# /etc/init.d/cups start |
- USB 連接埠: usb:/dev/usb/lp0
- 平行序列埠: parallel:/dev/lp0
- 網路印表機: ipp://ip/印表機型號
- 網路芳鄰印表機: smb://user:password@host/printer
圖三、CUPS 的管理介面示意圖
如上圖三所示,先在網址列的地方務必要輸入埠口才行!然後按下箭頭『 2 』所指的地方, 亦即是『Manage Printer』之後再按下『Add printer』的按鈕,就會出現如下畫面, 記得要填寫正確的資料喔!
圖四、CUPS 的管理介面示意圖
然後如下圖所示,選擇正確的裝置所在處!我們假設使用的是 USB 的印表機連接埠:
圖五、CUPS 的管理介面示意圖
之後就是選擇正確的型號囉,假設這部印表機為 HP 所出產的:
圖六、CUPS 的管理介面示意圖
選擇標準的雷射印表機驅動程式吧!
圖七、CUPS 的管理介面示意圖
最後都成功後,就會找到如下所示的畫面了。
圖八、CUPS 的管理介面示意圖
到此為止我們可以假設你的 CUPS 已經有一部印表機存在了,即使該印表機目前無法工作, 但是就是有一部印表機嘛!^_^!接下來看看如何將他連結到咱們的 Samba 伺服器中吧!
[root@linux ~]# vi /etc/samba/smb.conf |
或許你會想,印表機的型號這麼多,那麼 Linux 該如何提供這些印表機的驅動程式啊?豈不麻煩? 還好啦, CUPS 主要是透過利用 Postscript 的列印語言與印表機溝通的,因此用戶端只要取得 postscript 的驅動程式他們就能夠使用咱們的 Samba 伺服器所提供的印表機了 !如此一來, 不論印表機的型號為何,只要他們能夠支援 Postscript 的列印格式,OK 搞定!而且 CUPS 官網本身就有提供 CUPS 的 Postscript 驅動程式囉!可以到底下的連結去下載:
- 支援多種 CUPS 版本:http://ftp.easysw.com/pub/cups/windows/
- 支援 CUPS 1.2 以上版本:http://www.cups.org/windows/software.php
-
C:/WINDOWS/system32/spool/drivers/w32x86/3
[root@linux ~]# ll /usr/share/cups/drivers |
不過您得注意,這個檔案內的 Windows 資料是由 Windows XP 上面捉來的,所以對於 Windows 98/ME 是沒有作用的。 您得自行上網查閱相關的資料下載方式喔。 接下來我們必須要在 smb.conf 裡面增加一筆新的分享資料,這個分享資料必須是 [print$] 名稱才行! 有點類似這樣啦:
[root@linux ~]# vi /etc/samba/smb.conf |
[root@linux ~]# cupsaddsmb -H [SAMBA 主機名] -h [CUPS 主機名] / |
[root@linux ~]# /etc/init.d/cups restart |
[root@linux ~]# lpstat -a |
安全性管理
- 僅針對 192.168.1.0/24 這個網域開放 SAMBA;
- SAMBA 的 port 有 137~139 tcp/udp;
- SAMBA 主機的網路卡為 eth0
iptables -A INPUT -p tcp -i eth0 -s 192.168.1.0/24 --dport 139 -j ACCEPT |
[root@linux ~]# cat /etc/hosts.deny |
[root@linux ~]# vi /etc/samba/smb.conf |
例題: 在規劃主機的時候,我將 /dev/hda2 獨立一個 partition 給 /home 這個目錄,現在想要規劃 quota 針對 dmtsai 這個使用者進行磁碟配額的限制,他的 hardlimit 為 50mb 而 softlimit 為 40mb ,請問整個動作應該如何進行? 答:
|
- /etc (因為含有 /etc/passwd 以及 /etc/samba 裡面的資料,所以建議可以全部給他備份下來 )
- /home (還是可以察看一下,是否有其他非必要的!不過,一般來說,都會是備份的個人資料比較多啦!)
- 其他由 smb.conf 裡面設定開放的目錄。
主機安裝時的規劃與中文磁區掛載
- 在安裝 Linux 的時候,建議不需要安裝 X Window ;
- 在規劃 Linux 時,/home 最好獨立出一個 partition ,而且硬碟空間最好能夠大一些;
- /home 獨立出來的 partition 可以單獨進行 quota 的作業,以規範每個使用者能夠使用的最大硬碟容量;
- 由於 SAMBA 可以做為印表機伺服器,所以建議印表機可以直接連接在 Linux 主機的列印埠 (LPT1, USB...);
- 由於 SAMBA 一般來說都僅針對內部 (LAN) 主機進行開放,所以,可能的話 SAMBA 主機直接使用內部保留 IP 來設定即可,當然啦, SAMBA 是否使用 private IP 還得視您的整個網域的 IP 網段的特性來規劃。 以鳥哥研究室來說,因為實驗室所有電腦的 IP 都是 Public IP,那麼 SAMBA 如果使用 Private IP ,當然大家都無法連接上啊! ^_^
- 如果您的 SAMBA 主機使用 Public IP 時,請特別留意規範好防火牆的設定,盡量僅讓 LAN 內的電腦可以連線進來即可,不要對 Internet 開放喔!
mount -t vfat -o iocharset=big5,codepage=950 /dev/hd[a-d][1-16] /mount/point |
- 在區網內的主機最好具有相同的工作羣組,且具有不同的主機名稱;
- Windows XP pro. 最多僅能允許十個用戶同時連接到網芳;
- 你可以在網芳當中看到的通常是相同羣組的主機;
- 可以使用『搜尋』-->『電腦』-->『輸入 IP』來查到 Samba 主機;
- Windows 的網芳預設僅有同一網域的主機才能登入!
Windows 系統的使用
- 打開『檔案總管』,『網路上的芳鄰』、『整個網路』、『Microsoft Windows Network』 就能看到屬於您羣組的所有電腦主機了!
- 『開始』、『搜尋』、『檔案或資料夾』、『電腦或人員』、『網路上的電腦』, 然後在出現的方框當中填寫正確的 IP ,按下『搜尋』即可! 這個方法可以適用於不在同一個羣組當中的網路主機喔!
圖九、Windows XP 用戶端搜尋示意圖
上圖九中先在左側的地方輸入正確的 IP 後,按下搜尋,如果一切順利的話那麼右上方就會出現這部 Samba 主機的說明瞭。 雙擊一下該主機名稱,就會出現右下方的項目!瞧!那就是我們所設定的幾個基本項目的啦!真是好高興! 然後你就可以開始進入相對應的目錄進行資料的存取了,就這麼簡單。 如果是印表機的話,那麼你將滑鼠移動到印表機的上方,按下右鍵後可以選擇『連線』的項目, 如下所示:
圖十、Windows XP 用戶端連線印表機示意圖
如果一切順利的話,嘿嘿!你就可以在點選『開始』、『設定』、『印表機和傳真』後所出現的視窗看到這部印表機囉! 真是好棒吶! ^_^
圖十一、Windows XP 伺服器防火牆示意圖
按照上圖的說明,依序點選『例外』、『檔案及印表機共用』、『編輯』後, 就會出現該防火牆機制所管理的埠口以及可連線的網域,如下圖所示:
圖十二、Windows XP 伺服器防火牆示意圖
你可以將四組埠口通通改變成你所需要的 IP 來源,或者是將他設定為任何電腦都能連線。 不過,鳥哥不建議喔!可以參考底下的作法:
圖十三、Windows XP 伺服器防火牆示意圖
選擇自訂的方式來設定能夠使用你 Windows 網芳資料的來源 IP 或網段即可,然後確定之後即可處理吶! 這樣一來,及時我們的 Linux 不與 Windows 同在一個網域中,也能夠登入 Windows 存取網芳資料哩。
圖十四、Windows XP 透過 port 445 連線
如果可以登入的話就會順利登入,否則就會彈出一個要你輸入帳號密碼的視窗,輸入正確的資料即可! 呼呼!真過癮~除此之外,我們還可以登入別人 Windows 主機的 C 或 D 槽喔!寫法則變成這樣:
-
//192.168.1.21/c$
Linux 系統的使用
1. 關於查詢的功能 |
2. 利用類似 FTP 的方式登入遠端主機 |
[root@linux ~]# smbmount //IP/分享資源 /掛載點 [-o options] |
mount -t smbfs //127.0.0.1/dmtsai /mnt/samba / |
[root@linux ~]# nmblookup [-S] [-U wins IP] [-A IP] name |
[root@linux ~]# smbstatus [-pS] [-u username] |
讓 Samba 管理網域使用者:PDC
舉例來說,如果你有一個電腦教室裡面有 50 部 Windows XP Pro. 的個人電腦,由於電腦教室大家都會使用, 因此裡面這 50 部個人電腦有使用還原精靈,也就是每次電腦重新開機後整個作業系統就會還原成原本的樣子。 但我們知道使用者總是需要有個人家目錄吧?他們總不希望這次的工作在重新開機後就失去了~ 所以我們可以利用一部主機來讓他們儲存資料啊!那就是 Primary Domain Controller (PDC) 主機囉。
其實 Samba PDC 的作用很簡單,就是讓 Samba PDC 成為整個區域網路的領域管理員 (domain controller), 然後讓 Windows 主機加入這個領域,未來使用者利用 Windows 登入時,Windows 會前往 PDC 伺服器取得使用者的帳號密碼, 同時 PDC 還會傳送使用者的重要資料到那部 Windows 個人電腦上,而 Windows 電腦上的使用者登出時, 該使用者修改過的資料也會回傳給 PDC ,如此一來不管這個使用者在哪一部個人電腦上面登入, 他都能夠取得正確的個人資料!很棒的作用吧!
PDC 是個很複雜的環境,他可以達到的功能相當的多,而且密碼的驗證也不必在同一部 PDC 主機上面, 不過這裡我們不談那麼複雜的東西,只是做一個簡單的練習,因此底下的這部 PDC 使用自己的密碼來進行驗證, 並且也管理自己所分享出去的資源囉!整個基本的設定流程應該是這樣的:
- 設定好 PDC 主機的 TCP/IP 與 Windows 主機的網路,這個你應該已知如何處理了;
- 設定 PDC 的角色定位,因為 PDC 管理自己的密碼,所以 security = user
- PDC 最好擁有整個網域的名稱解析權力,亦即成為主要的名稱解析器;
- 需有 netlogon 資源分享,提供 windows 2000/XP pro. 用戶端的登入之用;
- 由於 Windows 需讀入個人設定檔,預設目錄為 profile,Linux 系統需預先設定此目錄;
- 增加 PDC 上的使用者帳號以及機器代碼 (machine account) 等等
- 在 Windows 2000/XP pro. 個人電腦上設定成為 PDC 的用戶端。
[root@linux ~]# vi /etc/samba/lmhosts |
[root@linux ~]# vi /etc/samba/smb.conf |
- time server :要使 Samba 與 Windows 主機的時間同步,使用這個項目;
- logon script :當使用者以 Windows 用戶端登入後,Samba 可以提供一支批次檔, 讓使用者去設定好他們自己的目錄配置。整個配置的內容記錄在 startup.bat 當中。 你要注意的是,這個 startup.bat 檔名可以隨意更改,不過他必須要放置到 [netlogon] 所指定的目錄內;
- logon drive :那麼這個家目錄要掛載到那個分割槽? 在 Windows 底下大多以 C, D, E... 做為磁碟的代號,你這裡可以指定一下家目錄要放置成為那個磁碟代號;
- admin users :指定這個 Samba PDC 的管理員身份。
- [netlogon] :指定利用網路登入時首先去查詢的目錄資源。
[root@linux ~]# mkdir -p /home/samba/netlogon |
[root@linux ~]# vi /home/samba/netlogon/startup.bat |
[root@linux ~]# smbpasswd -a root |
-
/home/使用者帳號/profile/
[root@linux ~]# mkdir /etc/skel/profile |
而我們知道要使用 smbpasswd 增加的使用者必須要在 /etc/passwd 當中, 因此要建立這個帳號你就得要這樣做:
[root@linux ~]# useradd -M -s /sbin/nologin -d /dev/null vbirdcpu2$ |
[root@linux ~]# smbpasswd -a -m vbirdcpu1$ |
- 確認 windows 用戶端的網域與主機名稱
首先我們必須要確認 Windows 用戶端的工作羣組與主機名稱跟咱們的 Samba PDC 相同, 確認的方式在區域網路裡面已經提過了,這裡在強調一次。將滑鼠移動到『我的電腦』上面,按下右鍵, 選擇『內容』,然後點選『電腦名稱』,會出現如下圖示:
圖十五、Windows 用戶端連上 PDC 的方式
如上圖所示,你要先確認箭頭 1 處指的主機名稱與工作羣組,在我們這個案例當中的工作羣組為 vbirdhouse, 這部 Windows 主機的 NetBIOS 名稱則為 vbirdcpu2 喔!如果不對的話,請按下『變更』來設定, 並且重新開機。重新開機完畢後再到圖十五的畫面當中,按下箭頭 2 所指的網路識別處。
- 設定主機名稱與網域名稱
接下來我們要設定這部 Windows XP pro. 要連結到區域網路上的哪部 PDC 上面, 亦即是處理主機帳號以及 Samba PDC 負責的網域 (domain) 啦! 在圖十五按下『網路識別』後,分別在出現的視窗當中選擇:
1. 下一步;
2. 這臺電腦是公司網路的一部份,而且我在工作時用來連線到其他電腦(T)
3. 我的公司使用一或多個網域的網路(C)
4. 下一步
然後就會出現如下的視窗:
圖十六、Windows 用戶端連上 PDC 的方式
請依序填寫 Samba 主機上面的管理員帳號與密碼,要注意這個密碼是記錄於 /etc/samba/smbpasswd 中的那個,可不是 /etc/shadow 喔!別搞混了~這是 Samba 主機的設定呢。 輸入之後按下一步吧,通常都會出現找不到正確主機的畫面,如下所示:
圖十七、Windows 用戶端連上 PDC 的方式
鳥哥也覺得很奇怪,老是告訴我找不到!不過沒有關係,這裡我們依舊再填一次主機的 NetBIOS name 以及羣組名稱, 如上圖所示,然後繼續按下一步,就會出現如下的畫面啦:
圖十八、Windows 用戶端連上 PDC 的方式
這次就給他輸入正確的管理員帳號與密碼,記得最後面的網域就是工作羣組名稱,別寫錯了。 處理完畢後給他按下確定吧!然後就會出現如下畫面:
圖十九、Windows 用戶端連上 PDC 的方式
恭喜您,這就表示已經連接上 Samba PDC 囉!我們希望所有的使用者都直接由 Samba PDC 控管,所以這裡請填寫 『此時不新增使用者』吧!按下一步去。
- 如果發生錯誤情況
如果老是發生錯誤訊息為『使用的帳戶是電腦帳戶。請使用您的通用使用者帳戶或本機使用者帳戶來存取這臺伺服器』時, 你可以這樣做的:
- 先察看一下 /var/log/samba 裡面的登錄檔資訊,尤其是 vbirdcpu2.log 關於這部主機的資訊吶;
- 如果還是無法解決,可以在 lmhosts 裡面增加 vbirdcpu2 的 IP 與主機名稱的對應,然後將 samba 整個關掉『/etc/init.d/smb stop』,等待一段時間讓 NetBIOS 的名稱解析時間逾時,再重新啟動 samba 『/etc/init.d/smb start』,然後再重新做一次輸入 root 的密碼那個動作
在鳥哥嘗試過的案例中,上面第二個步驟挺有效的!不過,還是得要察看 /var/log/samba 裡面的登錄資訊才行喔!
- 重新開機並以新的網域名稱登入
在圖十九之後請重新開機,開機後整個畫面會有點類似這樣:
圖二十、Windows 用戶端連上 PDC 的方式
請輸入你在 Samba PDC 上面擁有的帳號與密碼,當然啦,上圖中最底下的選項最重要! 現在這部 Windows 主機可以使用他自己的帳號登入,也可以透過 Samba 主機來登入喔! 粉不錯啦! ^_^
- 觀察使用者的家目錄與設定檔
如果你可以順利登入的話,打開檔案總管後應該可以看到類似下方的畫面:
圖二十一、Windows 用戶端連上 PDC 的方式
呵呵!該連上的通通連結上來囉!你也可以在自己的家目錄 (K 槽) 新增移除資料的!是否很不錯啊! ^_^! 而當你登出之後,你在 Windows 桌面上頭所進行的各項個人化設定通通會被移動到 /home/dmtsai/profile 當中喔! 如果不相信的話,請自行前往 Samba 主機上頭瞧一瞧就知道了。
- 一些使用上面的技巧
雖然 PDC 很好用,不過你要注意的是,每次你使用 PDC 上頭的帳號登入 Windows 用戶端主機時, Windows 主機會由 /home/username/profile/ 當中載入所需要的資料, 並暫時啟動一個資料夾在 C:/Documents and Settings/username 當中,如果你的家目錄下的 profile 資料太多時, 光是傳輸就會花去很多時間的!
所以,你應該將一些檔案資料放置到你的家目錄下,亦即 K 槽當中,盡量不要使用 Windows 預設的『我的文件夾』, 因為『我的文件夾』會將資料移動到 /home/username/profile/My Documents 目錄下,同樣的, 儲存到桌面的資料會被放置到 /home/username/profile/桌面 目錄中,那樣在登入與登出時會花去很多時間喔! 這個小地方也要注意的呢! ^_^
另外,設定 Windows 用戶端之前,請先確認你的 Windows 是什麼版本? 上述的動作對於 Windows XP 家用版 (Home) 是沒有作用的!請先確認才行喔!
問題克服
-
log file = /var/log/samba/%m.log
另外,如果您的 SAMBA 明明已經啟動完成了,卻偏偏老是無法成功,又無法查出問題時,建議先關閉 Samba 一陣子,再重新啟動:
-
/etc/init.d/smb stop
還有,萬一您在進行寫入的動作時,老是發現『您沒有相關寫入的權限!』,不要懷疑,幾乎可以確定是 Permission 的問題,也就是 Linux 的權限與 SAMBA 開放的權限並不相符合!無論如何,您必須要瞭解能不能寫入 Linux 磁碟,看的是 PID 的權限與 Linxu 檔案系統是否吻合,而那個 smb.conf 裡面設定的相關權限只是在 SAMBA 運作過程當中『預計』要給使用者的權限而已,並不能取代真正的 Linux 權限喔!所以,萬一真的發現該問題存在, 請登入 Linux 系統,查驗一下該對應的目錄的 permission 吧! ^_^
使用者修改 samba 密碼
利用 ACL 配合單一使用者時的控管
那該怎麼辦?其實可以透過 ACL 來管理某個目錄的單一使用者權限啦!所以說, 權限的管理不必透過 smb.conf 的設定,只要透過 ACL 來管理就能夠達到你所需要的目的了。 關於 ACL 的說明我們在前面的認識網路安全 當中已經提過了, 這裡不再囉唆,請自行前往查閱吶! ^_^
- Samba 名稱的由來是因為需包含沒有意義的 SMB server 之故;
- SAMBA 可以讓 Linux 與 Windows 直接進行檔案系統的使用;
- SAMBA 是由 Andrew Tridgwell 在 1991 年的時候利用不同平臺所發展出來的;
- SAMBA 主要架構在 NetBIOS 上發展的,且以 NetBIOS over TCP/IP 克服 NetBIOS 無法跨路由的問題;
- 一般來說, SAMBA 使用的設定檔放置在哪裡?檔名為何?
- 哪一個指令可以用來判斷 smb.conf 這個設定檔的正確性?
- 哪一個指令可以用來察看 SAMBA 主機分享出什麼目錄?
- smbmount 的功能為何?
- 我今天使用 smbpasswd 去新增一位使用者 badbird,讓他可以登入我的 Linux SAMBA 主機,但是無論如何就是無法新增。您認為原因可能是什麼?
- man 5 smb.conf
- Study Area :http://www.study-area.org/linux/servers/linux_samba.htm
- 電子書 Using Samba:http://de.samba.org/samba/docs/using_samba/ch00.html
- Samba PDC HOWTO: http://us5.samba.org/samba/docs/man/Samba-HOWTO-Collection/samba-pdc.html
- SAMBA 官方網站:http://www.samba.org/
- 楊錦昌老師的 SAMBA 密技:http://apt.nc.hcc.edu.tw/web/student_server_FC1.htm#samba
- 依瑪貓的列印文件:http://www.imacat.idv.tw/tech/lnxprint.html
- Gentoo Linux 的 Samba 文件:http://www.gentoo.org/doc/zh_tw/quick-samba-howto.xml
- cupsaddsmb 用法:http://www.enterprisenetworkingplanet.com/netsysm/article.php/3621876
- 下載 CUPS-windows 的網站:http://ftp.easysw.com/pub/cups/windows/
- eyesblue 在討論區針對語系的說明:http://phorum.vbird.org/viewtopic.php?t=22001
- testparm -v