samba伺服器一些筆記

來源:互聯網
上載者:User

如果想要共用檔案,在 Linux 對 Linux 的環境下,最簡單的方法就是透過 NIS (網路資訊服務——NIS) (Network
Information Service) 是集中控制幾個系統管理資料庫的網路用品。)這玩意兒了!至於Windows 對 Windows 的環境下,最簡單的方法則是網路位置。那如果你的區網中有 Windows也有 Linux 而且想要共用檔案系統的話,那該怎辦? 那就使用 Samba 伺服器吧!Samba 可以讓 Linux,加入 Windows 的網路位置支援,讓異質平台可以共用檔案系統!
非常好用!不僅如此, Samba 也可以讓 Linux 上面的印表機成為印表機伺服器 (Printer Server)。


SAMBA 伺服器的作用:

分享檔案與印表機服務; 
可以提供使用者登入 SAMBA 主機時的身份認證,以提供不同身份者的個別資料; 
可以進行 Windows 網路上的主機名稱解析 (NetBIOS name) 
可以進行裝置的分享 (例如 Zip, CDROM...) 


SAMBA 伺服器的應用執行個體:

1)利用軟體直接編修 WWW 主機上面的網頁資料:

用samba替代ftp;實現線上編輯。

2)做成可直接聯機的檔案伺服器:

使用 SAMBA 將硬碟空間分享出來,由於使用者要登入 SAMBA 這個伺服器主機時需要輸入使用者資料 (帳號與密碼),而不同的登入者會取得不一樣的目錄資源,所以可以避免自己的資料在公用電腦上面被窺視, 此外,在不同的公用電腦上面都可以登入 SAMBA 主機,資料的使用上面相當的棒!

3)印表機伺服器:

SAMBA 除了分享檔案系統外,也可以分享印表機,可以直接以 Linux 分享的印表機來印製。


SAMBA 使用的 daemons

1)取得對方主機的 NetBIOS name 定位該主機所在: 
當我們想要登入某部 Windows 主機使用他所提供的檔案資料時,必需要加入該Windows 主機的群組 (Workgroup),並且我們的機器也必需要設定一個主機名稱,注意喔,這個主機名稱跟 Hostname 是不一樣的,因為這個主機名稱是架構在NetBIOS 協議上的,我們可以簡單的稱呼他為 NetBIOS Name。在同一個群組當中,NetBIOS Name 必需要是獨一無二的! 
2)利用對方給予許可權存取可用資源: 
在我們找到該主機名稱後,是否能登入該對方主機或者是取用對方主機所提供的資源, 還要看對方 Windows 主機有沒有提供我們使用的許可權!所以,並不是登入該 Windows 主機之後我們就可以無限制的取用該主機的檔案資源了。也就是說,如果對方主機允許你登入, 但是卻沒有開放任何資源讓你取用,登入主機也無法查看對方的硬碟裡面的資料的! 


SAMBA 則是透過兩支服務來控制這兩個步驟,分別是:

nmbd :這個 daemon 是用來管理工作群組啦、NetBIOS name 啦等等的解析。主要利用 UDP 協議開啟 port 137, 138 來負責名稱解析的任務;

smbd :這個 daemon 的主要功能就是用來管理 SAMBA 主機分享的目錄、檔案與印表機等等。 主要利用可靠的 TCP 協議來傳輸資料,開放的連接埠口為 139 及 445(不一定存在)。

所以, SAMBA 每次啟動至少都需要有這兩個 daemons。


SAMBA 伺服器的聯機方式:

SAMBA 伺服器的應用相當的廣泛,而且可以依照不同的網域聯機方式,與不同的使用者帳號密碼的控管方式來進行分類。如:peer/peer (對等模式) 及 domain model (主控模式)。 


Samba 所需軟體及其軟體結構:

samba: 這個軟體主要提供了 SMB 伺服器所需的各項服務程式 (smbd 及 nmbd)、 的檔案檔、以及其他與 SAMBA 相關的 logrotate 設定檔及開機預設選項檔案等;

samba-client: 這個軟體則提供了當 Linux 做為 SAMBA Client 端時,所需要的工具指令,例如掛載 SAMBA 檔案格式的 mount.cifs、 取得類似網芳相關樹形圖的 smbtree 等等;

samba-common: 這個軟體提供的則是伺服器與用戶端都會使用到的資料,包括 SAMBA 的主要設定檔 (smb.conf)、文法檢驗指令 (testparm) 等等; 


/etc/samba/smb.conf: 這是 Samba 的主要設定檔,基本上,咱們的Samba 就僅有這個設定檔而已,且這個設定檔本身就是很詳細的說明檔案了,請用 vim 去查閱它吧!主要的設定項目分為伺服器的相關設定 (global),如工作群組、NetBIOS 名稱與密碼等級等, 以及分享的目錄等相關設定,如實際目錄、分享資源名稱與許可權等等兩大部分。 

/etc/samba/lmhosts: 早期的 NetBIOS name 需額外設定,因此需要這個lmhosts 的 NetBIOS name 對應的 IP 檔。 事實上它有點像是 /etc/hosts 的功能!只不過這個 lmhosts 對應的主機名稱是 NetBIOS name 喔!不要跟/etc/hosts 搞混了!目前 Samba
預設會去使用你的本機名稱 (hostname) 作為你的 NetBIOS name,因此這個檔案不設定也無所謂。 

/etc/sysconfig/samba: 提供啟動 smbd, nmbd 時,你還想要加入的相關服務參數。

/etc/samba/smbusers: 由於 Windows 與 Linux 在管理員與訪客的帳號名稱不一致,例如: administrator (windows) 及 root(linux), 為了對應這兩者之間的帳號關係,可使用這個檔案來設定。

/var/lib/samba/private/{passdb.tdb,secrets.tdb}: 管理 Samba 的使用者帳號/密碼時,會用到的資料庫檔案;

/usr/share/doc/samba-<版本>: 這個目錄包含了 SAMBA 的所有相關的技術手冊喔!也就是說,當你安裝好了 SAMBA 之後,你的系統裡面就已經含有相當豐富而完整的 SAMBA 使用手冊了!


Samba 的設定:

1.     伺服器整體設定方面:在 smb.conf 當中設定好工作群組、NetBIOS 主機名稱、密碼使用狀態 (無密碼分享或本機密碼) 等等; 
2.     規劃準備分享的目錄參數:在 smb.conf 內設定好預計要分享的目錄或裝置以及可供使用的帳號資料; 
3.     建立所需要的檔案系統:根據步驟 2 的設定,在 Linux 檔案系統當中建立好分享出去的檔案或裝置,以及相關的許可權參數; 
4.     建立可用 Samba 的帳號:根據步驟 2 的設定,建立所需的 Linux 實體帳號,再以 pdbedit 建立使用 Samba 的密碼; 
5.     啟動服務:啟動 Samba 的 smbd, nmbd 服務,開始運轉! 

根據上面的流程,其實我們最需要知道的就是 smb.conf 這個設定檔的資訊就是了。

這個檔案其實可以分為兩部份來看, 一個是主機資訊部分,在 smb.conf 當中以 [global] (全領域) 作為設定的依據;另一個則是分享的資訊, 以個別的目錄名稱為依據。另外,由於 Samba 主要是想加入網鄰功能,因此在 smb.conf 內的很多設定都與 Windows 類似。

# 會有很多加上 # 或 ; 的批註說明,你也可以自行加上來提醒自己相關設定     [global]        參數項目 = 設定內容        ....          [分享資源名稱]        參數項目 = 設定內容        .... 

在 [global] 當中的就是一些伺服器的整體參數了,包括工作群組、主機的 NetBIOS 名稱、字元編碼的顯示、登入檔案的設定、 是否使用密碼以及使用密碼驗證的機制等等,都是在這個 [global] 項目中設定的。至於 [分享資源名稱] 則是針對你開放的目錄來進許可權方面的設定,包括誰可以瀏覽該目錄、是否可以讀寫等等參數。

在 [global] 部分關於主機名稱資訊方面的參數主要有: 
workgroup = 工作群組的名稱:注意,主機群要相同; 
netbios name = 主機的 NetBIOS 名稱啊,每部主機均不同; 
server string = 主機的簡易說明,這個隨便寫即可。

display charset = 自己伺服器上面的顯示編碼, 例如你在終端機時所查閱的編碼資訊。一般來說,與底下的 unix charset 會相同。 
unix charset = 在 Linux 伺服器上面所使用的編碼,一般來說就是 i18n 的編碼囉!所以你必須要參考 /etc/sysconfig/i18n 內的『預設』編碼。 
dos charset = 就是 Windows 用戶端的編碼了! 一般來說我們的繁體中文 Windows 使用的是 big5 編碼,這個編碼在 Samba 內的格式被稱為『 cp950 』喔!


除此之外,還有登入檔案方面的資訊,包括這些參數: 
 log file = 登入檔放置的檔案,檔案名稱可能會使用變數處理; 
max log size = 登入檔最大僅能到多少 Kbytes ,若大於該數字,則會被 rotate 掉。 
還有網芳開放分享時,安全性程度有關的密碼參數,包括這幾個: 
security = share, user, domain:三選一,這三個設定值分別代表: 
share:分享的資料不要求輸入密碼,大家均可使用 (沒有安全性); 
user :使用 SAMBA 伺服器本身的密碼資料庫,密碼資料庫與底下的passdb backend 有關; 
domain:使用外部伺服器的密碼,亦即 SAMBA 是用戶端之意,如果設定這個項目, 你還得要提供『password server = IP』的設定值才行;

encrypt passwords = Yes 代表密碼要加密。

passdb backend = 資料庫格式,如前所述,為了加快速度, 目前密碼檔案已經轉為使用資料庫了!預設的資料庫格式微 tdbsam ,而預設的檔案則放置到/var/lib/samba/private/passwd.tdb。

分享資源的相關參數設定 [分享的名稱] :

comment :只是這個目錄的說明而已! 

path :這個分享名稱實際會進入的 Linux 檔案系統 (目錄)。 也就是說,在網芳當中看到的是 [分享] 的名稱,而實際操作的檔案系統則是在 path 裡頭所設定的。  

browseable :是否讓所有的使用者看到這個項目? 
writable :是否可以寫入?這裡需要注意一下喔!那個 read only 與 writable 不是兩個蠻相似的設定值嗎?如果 writable 在這裡設定為 yes ,亦即可以寫入,如果 read only 同時設定為 yes , 那不就互相抵觸了!那個才
是正確的設定?答案是:最後出現的那個設定值為主要的設定!  
create mode 與 directory mode 都與許可權有關的咯! 
writelist = 使用者, @群組,這個項目可以指定能夠進入到此資源的特定使用者。 如果是 @group 的格式,則加入該群組的使用者均可取得使用的許可權,設定上會比較簡單! 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.