samba是在linux和unix系統上實作smb協定的一個免費軟體,基于c/s架構。smb(server messages block,資訊服務塊)是一種在區域網路上共享檔案和列印機的一種通信協定,它為區域網路内的不同計算機之間提供檔案及列印機等資源的共享服務。smb協定是客戶機/伺服器型協定,客戶機通過該協定可以通路伺服器上的共享檔案系統、列印機及其他資源。通過設定“netbios over tcp/ip”使得samba不但能與區域網路絡主機分享資源,還能與全世界的電腦分享資源。
一、samab基本概念
共享檔案和列印,實作線上編輯
實作登入smb使用者的身份認證
可以進行netbios名稱解析
外圍裝置共享
netbios(network basic input/output system)協定是由ibm公司開發,主要用于數十台計算機的小型區域網路。該協定是一種在區域網路上的程式可以使用的應用程式程式設計接口(api),為程式提供了請求低級服務的統一的指令集,作用是為了給區域網路提供網絡以及其他特殊功能。系統可以利用wins服務、廣播及lmhost檔案等多種模式将netbios名-——特指基于netbios協定獲得計算機名稱——解析為相應ip位址,實作資訊通訊,是以在區域網路内部使用netbios協定可以友善地實作消息通信及資源的共享。
占用系統資源少
傳輸效率高
cifs 是一個新提出的協定,它使程式可以通路遠端internet計算機上的檔案并要求此計算機提供服務。cifs 使用客戶/伺服器模式。客戶程式請求遠在伺服器上的伺服器程式為它提供服務。伺服器獲得請求并傳回響應。cifs是公共的或開放的smb協定版本,并由microsoft使用。smb協定在區域網路上用于伺服器檔案通路和列印的協定。像smb協定一樣,cifs在高層運作,而不像tcp/ip協定那樣運作在底層。cifs可以看做是應用程式協定如檔案傳輸協定和超文本傳輸協定的一個實作。
通路伺服器本地檔案并讀寫這些檔案
與其他使用者一起共享一些檔案
在短線時自動回複與網絡的連接配接
使用統一碼檔案名
smb(全稱是server message block)是一個協定名,它能被用于web連接配接和用戶端與伺服器之間的資訊溝通。smb最初是ibm的貝瑞·費根鮑姆(barry feigenbaum)研制的,其目的是将dos作業系統中的本地檔案接口“中斷13”改造為網絡檔案系統。
samba
提供smb服務
samba-client
提供用戶端工具
samba-common
通用軟體
cifs-utils
smb用戶端工具
samba-winbind
和ad相關的包
sbm.conf繼承了.ini(initialization)檔案格式,用[]分成不同的部分。
配置檔案分為類
[global]:伺服器通過或全局設定的部分
[homes]:使用者的家目錄共享
[printers]:定義列印機資源和服務
[sharename]:自定義共享目錄配置
配置檔案宏定義
%m
用戶端主機的netbios名
用戶端的fqdn
%h
目前使用者家目錄路徑
%u
目前使用者使用者名
%g
目前使用者所屬組
samba伺服器的主機名
%l
samba伺服器的netbios
%i
用戶端主機的ip
%t
目前日期和時間
%s
可登入的使用者名
配置檔案選項
workgroup
指定工作組名稱
server string
主機注釋資訊
netbios name
指定netbios名
interface
指定服務監聽的接口和ip
host allow
指定允許指定主機通路,如多個主機可以網段,離散可以使用“,”、空格或tab分離;或使用主機名;默允許所有主機通路。示例192.168.4.
config file=/paht/to/somefiel/%u
使用者獨立的配置檔案
log file=/var/log/samba/log.%m
不同主機采用不同日志
max log size
日志檔案大小,機關為kb
log level
設定日志級别
comment
注釋資訊
path
所共享的目錄路徑
public = {yes或no}
能否被guest通路的共享,預設為no
guest ok = {yes或no}
是否允許來賓賬号通路
writable = {yes或no}
是否可讀寫
read only = {yes或no}
是否隻讀,如果與writeable設定沖突,放在後面的設定生效
write list
指定多個使用者是否可寫,格式:@group_name、+group_name或使用“,”分隔,如設定writable = no 清單中的使用者或組可讀寫,不在清單中的使用者隻讀
vaild users
特定使用者才能通路此共享,如果設定為空,将允許所有使用者;使用者名之間使用空格分隔
browsable = {yes或no}
是否允許所有使用者列浏覽此共享,預設為yes
create mask
修改上傳權限
注意:如果是某個使用者對目錄有權限,此使用者必須有目錄權限和共享權限的交集。
服務腳本: /etc/rc.d/init.d/nmb /etc/rc.d/init.d/smb
格式:
-i
指定伺服器的ip位址;
-l
顯示伺服器端所分享出來的所有資源;
-n
指定使用者端所要使用的netbios名稱;
不用詢問密碼;
-p
指定伺服器端tcp連接配接端口編号;
-t
備份伺服器端分享的全部檔案,并打包成tar格式的檔案;
-u<使用者名稱>
指定使用者名稱;
-w<工作群組>
指定工作群組名稱。
-a
向smbpasswd檔案中添加使用者;
-c
指定samba的配置檔案;
-x
從smbpasswd檔案中删除使用者;
-d
在smbpasswd檔案中禁用指定的使用者;
-e
在smbpasswd檔案中激活指定的使用者;
将指定的使用者的密碼置空。
密碼檔案存在在<code>/var/lib/samba/private/passdb.tdb</code>
-a username
建立samba賬戶。
-x username
删除samba賬戶。
列出samba使用者清單,讀取`/var/lib/samba/private/passdb.tdb資料庫檔案。
-lv
列出samba使用者清單的詳細資訊。
-c “[d]” –u username
暫停該samba使用者的賬号。
-c “[]” –u username
恢複該samba使用者的賬号。
二、實作共享
在windows系統上建立一個共享目錄
選中目錄-->右擊點屬性-->共享

點選圖中的使用者可以設定權限
在linux用戶端檢視
<code>[root@localhost ~]# smbclient -l 192.168.4.1 -u joah%password</code>
<code>[root@localhost ~]# smbclient //192.168.4.1/linuxclient -u joah</code>
挂載此目錄
[root@localhost ~]# mount //192.168.4.1/linuxclient -o username=joah,password=password /mnt/samba/
建立smb賬号
<code>[root@localhost ~]# useradd -r smb1</code><code>[root@localhost ~]# useradd -r smb2</code><code>[root@localhost ~]# useradd -r smb2</code>
設定smb賬号密碼
<code>[root@localhost ~]# smbpasswd -a smb1</code><code>[root@localhost ~]# smbpasswd -a smb2</code><code>[root@localhost ~]# smbpasswd -a smb3</code>
使用指令檢視
<code>[root@localhost ~]# pdbedit -l</code>
建立共享目錄
<code>[root@localhost ~]# vim /etc/samba/smb.conf</code>
彈出對話框輸入上述賬戶和密碼即可登入
<code>[root@localhost ~]# mkdir /app/share{1,2,3}</code><code>[root@localhost ~]# chmod 777 /app/share{1,2,3}</code>并設定目錄權限
<code>[root@localhost ~]# vim /etc/samba/smb.conf</code>在全部設定下添加如下一行内容
<code>[root@localhost ~]# mkdir /etc/samba/conf.d</code>#建立指定配置檔案存放位置
<code>[root@localhost conf.d]# vim smb1</code>
<code>[root@localhost conf.d]# vim smb2</code>
<code>[root@localhost conf.d]# vim smb3</code>
<code>[root@localhost conf.d]# service nmb restart ;service smb restart</code>
在另一外linux主機上測試
<code>[root@localhost ~]# smbclient -l //192.168.4.55 -u smb1%123456</code>
<code>[root@localhost ~]# smbclient //192.168.4.55/share -u smb1%magedu</code>
<code>[root@localhost smb]# mount //192.168.4.55/share /mnt/smb/ -o username=smb1,password=123456</code>
<code>[root@localhost smb]# vim /etc/fstab</code>
如果我們這樣挂載的話,密碼直接暴露出來,顯然不安裝,我們可以将使用者和密碼寫到一個配置檔案中
<code>[root@localhost smb]# vim /etc/samba/userpasswd</code>
<code>[root@localhost ~]# chmod 600 /etc/samba/userpasswd</code>#修改檔案權限
<code>[root@localhost ~]# vim /etc/fstab</code>
<code>[root@localhost ~]# mount -a</code>#使挂載生效
<code>[root@localhost ~]# df</code>
<code>[root@localhost ~]# mkdir /app/sharedir</code><code>[root@localhost ~]# chmod 777 /app/sharedir</code>
注意:用戶端與伺服器端必須有相同的使用者。
<code>[root@localhost ~]# useradd smb1</code>
<code>[root@localhost ~]# useradd smb2</code>
<code>[root@localhost ~]# useradd smb3</code>
<code>[root@localhost ~]# vim /etc/samba/userpasswd</code>
<code>[root@localhost/mnt/smb]#su - smb1</code><code>[smb1@localhost~]$cifscreds add 192.168.4.55</code>
<code>[smb1@localhost~]$ls /mnt/smb/</code>
至此就實作了多使用者挂載smb檔案。