一、samba概念和功能
Samba是一個能讓Linux系統應用Microsoft網路通訊協議的軟體,而SMB是Server Message Block的縮寫,即為伺服器消息塊 ,SMB主要是作為Microsoft的網路通訊協議,後來Samba將SMB通信協議應用到了Linux系統上,就形成了現在的Samba軟體.後來微軟又把 SMB 改名為 CIFS(Common Internet File System),即公共 Internet 文件系統,並且加入了許多新的功能,這樣以來,是的Samba具有了更強大的功能.
Samba最大的功能就是可以用於Linux與windows系統直接的文件共享和列印共享,Samba既可以用於windows與Linux之間的文件共享,也可以用於Linux與Linux之間的資源共享,由於NFS(網路文件系統)可以很好的完成Linux與Linux之間的數據共享,因而Samba較多的用在了Linux與windows之間的數據共享上面.
SMB是基於客戶機/伺服器型的協議,因而,一台Samba伺服器既可以充當文件共享伺服器,也可以充當一個Samba的客戶端,例如,一台在Linux下已經架設好的Samba伺服器,windows客戶端就可以通過SMB協議共享Samba伺服器上的資源文件,同時,Samba伺服器也可以訪問網路中其它windows系統或者Linux系統共享出來的文件.
Samba在windows下使用的是NetBIOS協議,如果你要使用Linux下共享出來的文件,請確認你的windows系統下是否安裝了NetBIOS協議.
二、 Samba的安裝與配置
我們的系統環境是:
操作系統:Red Hat Enterprise Linux Server release 5.1
Samba伺服器IP地址:192.168.60.231
Samba版本:samba-3.0.23c-2
1.安裝samba
幾乎所有的Linux發行版本中都默認自帶了samba軟體包,登陸系統,檢查是否安裝了Samba軟體,執行如下操作:
[root@localhost ~]# rpm -q samba
samba-3.0.23c-2
如果有顯示,表示系統已經安裝了Samba,如果沒有任何顯示,請到系統光碟找到對應的Samba軟體包,然後進行安裝.
2.Samba服務的組成與使用
組成Samba運行的有兩個服務,一個是SMB,另一個是NMB;SMB是Samba 的核心啟動服務,只有SMB服務啟動,才能實現文件的共享,而NMB服務是負責解析用的,類似與DNS實現的功能,NMB可以把Linux系統共享的工作組名稱與其IP對應起來,如果NMB服務沒有啟動,就只能通過IP來訪問共享文件.
例如,某台Samba伺服器的IP地址為192.168.60.231,對應的工作組名稱為ixdba,那麼在Windows的IE瀏覽器輸入下面兩條指令都可以訪問共享文件.其實這就是Windows下查看Linux Samba伺服器共享文件的方法.
\192.168.60.231共享目錄名稱
\ixdba共享目錄名稱
可以通過/etc/init.d/smb start/stop/restart來啟動、關閉、重啟Samba服務,啟動SMB服務如下所示:
[root@localhost Linuxdata]# /etc/init.d/smb start
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
從啟動的輸出中,可以看出,SMB的啟動包含了SMB和NMB兩個服務.
那麼在Linux作為客戶端時,查看其它Linux Samba伺服器共享的文件時,應該如何操作呢,這就要用到smbclient這個工具.系統默認自帶了這個命令.Smbclient常見用法介紹如下.
(1)查看Samba伺服器的共享資料
Smbclient –L //Samba伺服器的ip地址 -U Samba用戶名
“-L”即為list的含義,“-U”是user的意思,如果Samba伺服器是無密碼訪問的話,可以省略“-U Samba用戶名”.
例如:samba需要密碼登陸時,查看共享方法如下:
[root@web ~]# smbclient -L //192.168.60.231/Linuxdata –U admin
Password: 在這裡輸入admin的密碼.
Samba無密碼訪問時,執行如下命令:
[root@web ~]# smbclient -L //192.168.60.231/Linuxdata
Password: 直接回車即可.
(2)登陸Samba伺服器
如果需要在Linux客戶端登陸Samba伺服器,用法如下:
Smbclient //Samba伺服器的ip地址 -U Samba用戶名
請看下面執行的操作:
[root@web samba]# smbclient //192.168.60.231/Linuxdata
Password:
Domain=[IXDBA.NET] OS=[Unix] Server=[Samba 3.0.23c-2]
Server not using user level security and no password supplied.
smb: > ls
. D 0 Thu Feb 19 23:49:33 2009
.. D 0 Thu Feb 19 19:05:24 2009
install.log 36563 Thu Feb 19 23:49:22 2009
install.log.syslog 4295 Thu Feb 19 23:49:22 2009
58113 blocks of size 262144. 44294 blocks available
smb: > ? #在這裡輸入?即可查看在smb命令行可用的所有命令.
? altname archive blocksize cancel
case_sensitive cd chmod chown close
del dir du exit get
getfacl hardlink help history lcd
link lock lowercase ls mask
3.核心配置文件smb.conf
默認的smb.conf有很多個選項和內容,比較繁瑣,這裡我們從簡單講起,先備份一下自己的smb.conf文件,然後重新建立一個smb.conf,添加如下內容:
[global]
workgroup = IXDBA.NET
netbios name = ixdba
server string = My Linux Samba Server
log file = /var/log/samba/%m.log
security = share
[Linuxdata]
path = /ixdba/Linuxdata
writeable = yes
browseable = yes
guest ok = yes
對上面每行解釋如下:
“[global]”表示以下的內容為全局配置,必須要有.
“workgroup“用來定義工作組,也就是windows中的工作組概念,這裡設置為IXDBA.NET.
“netbios name”用來定義windows中顯示出來的計算機名稱.
“server string”用來定義Samba伺服器的說明信息,可以隨便指定!
“log file”用來定義Samba用戶的日誌文件,%m代表客戶端主機名,Samba伺服器會在指定的目錄中為每個登陸主機建立不同的日誌文件.
“security”用來定義數據共享的方式,此選項有多個可選值,常用的有user和share,user表示需要密碼驗證后才能共享數據,share表示可以直接共享數據,無需輸入密碼.這裡選擇share.
“[Linuxdata]” 用來設定在windows中顯示出來的共享目錄的名稱.
“path” 用來指定共享的目錄,必選項.
“writeable”用來設置是否可寫,yes為可寫,no為不可寫.
“browseable”用來定義是否可以在windows工作組下看到共享文件夾,如果需要隱藏共享文件夾,選擇no即可.
4.建立共享目錄
上面設置了共享目錄為/ixdba/Linuxdata,下面就需要建立/ixdba/Linuxdata目錄:
[root@localhost ~]# mkdir -p /ixdba/Linuxdata
[root@localhost ~]# chown -R nobody:nobody /ixdba/Linuxdata
由於要設置匿名用戶可以下載或上傳共享文件,要給/ixdba/Linuxdata目錄授權為nobody許可權.
[root@localhost Linuxdata]# cp /root/install.log* /ixdba/Linuxdata
上面是拷貝一些測試文件到共享目錄中.
5.重啟smb服務
執行如下命令重啟samba服務:
[root@localhost samba]# /etc/init.d/smb start
Starting SMB services: [ OK ]
Starting NMB services: [ OK ]
[root@localhost samba]# ls
lmhosts secrets.tdb smb.conf smb.conf.old smbpasswd smbusers
[root@localhost samba]#
6.訪問Samba伺服器的共享文件
(1)在Linux下訪問Samba伺服器的共享文件
[root@web ~]# smbclient //192.168.60.231/Linuxdata
Password:
Domain=[IXDBA.NET] OS=[Unix] Server=[Samba 3.0.23c-2]
Server not using user level security and no password supplied.
smb: > ls
. D 0 Thu Feb 19 20:14:24 2009
.. D 0 Thu Feb 19 19:05:24 2009
install.log 36563 Thu Feb 19 20:14:24 2009
install.log.syslog 4295 Thu Feb 19 20:14:24 2009
58113 blocks of size 262144. 44295 blocks available
smb: >
(2)在windows下訪問Samba伺服器的共享文件.
在瀏覽器或者運行框輸入
\192.168.60.231 或者 \ixdba
圖1
7.授權登陸Samba伺服器
上面介紹了Samba伺服器匿名共享數據的設置方法,而在很多時候,對共享的數據是需要進行許可權控制的,也就是用戶在訪問Samba伺服器時需要輸入用戶名和密碼,下面就介紹如何配置有許可權控制的Samba伺服器.
(1)添加系統級用戶
這裡添加ixdba1、ixdba2兩個系統級用戶,並分別指定工作目錄為/ixdba/ixdba1和/ixdba/ixdba2,操作如下:
[root@localhost /]# useradd -d /ixdba/ixdba1 ixdba1
[root@localhost /]# useradd -d /ixdba/ixdba2 -s /sbin/nologin ixdba2
[root@localhost /]# cp /root/install.log* /ixdba/ixdba1
[root@localhost /]# cd /ixdba
[root@localhost ixdba]# ll
total 32
drwx------ 4 ixdba1 ixdba1 4096 Feb 20 05:58 ixdba1
drwx------ 3 ixdba2 ixdba2 4096 Feb 20 05:50 ixdba2
其中,useradd是創建系統用戶的命令,參數“-d”是指定ixdba1用戶的工作目錄,而ixdba1就是創建用戶的名稱,“-s”是指定用戶使用的默認shell,/sbin/nologin表示ixdba2是個虛擬用戶,也就是ixdba2不能通過shell登陸系統.關於這些概念在第十章有詳細的講述,這裡不在多說.
每當創建一個用戶,Linux系統都會在/etc/passwd文件中添加一行對應的用戶名信息,在這裡我們僅僅用到的是/etc/passwd文件中的用戶名信息,因此,不必對兩個用戶設置登陸系統的密碼.
(2)創建Samba登陸用戶
這裡需要注意的是:系統用戶是Linux上面對應的用戶,而Samba用戶是客戶端連接Samba伺服器時需要使用的用戶.創建Samba用戶使用的命令是smbpasswd,而smbpasswd的原理是通過讀取/etc/passwd文件中存在的用戶名,進而設置密碼的,因此,對於系統用戶,可以設置密碼,也可以不設置密碼,如果設置密碼,可以和對應的Samba用戶密碼相同,也可以不同.
(3)配置smb.conf文件
Samba配置的核心文件是smb.conf,設置好的配置文件如下:
[global]
workgroup = IXDBA.NET
netbios name = ixdba
server string = My Linux Samba Server
log file = /var/log/samba/%m.log
max log size = 50
security = user
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
#interfaces = 192.168.1.254/24 192.168.2.254/24
os level = 33
[ixdba1]
path = /ixdba/ixdba1
comment = This is ixdba1
valid users = ixdba1
writeable = yes
browseable = yes
[ixdba2]
path = /ixdba/ixdba2
comment = This is ixdba2
valid users = ixdba2
create mask = 664
directory mask = 775
writeable = yes
browseable = yes
這段配置與上面那個例子基本相同,只是增加了一些許可權控制的東西.新增各個選項的含義如下所示:
“max log size”用來定義日誌文件的大小,設置為0代表不做限制,默認單位是KB.
“encrypt passwords”用來設定用戶密碼是否加密,yes表示需要加密,否則不加密,由於現在的windows系統都以加密形式發送 SMB/CIFS 口令,因此這裡選擇yes.
“smb passwd file”用來指定samba的密碼文件.
(4)測試Samba伺服器
特別注意,在Samba伺服器運行狀態下,最好使Selinux處於關閉狀態,不然需要進行很多許可權的設定,如何關閉Selinux,請閱讀本書第七章.
所有設置完成後,重新啟動smb服務.然後在windows客戶端進行授權登陸.在IE瀏覽器輸入\192.168.60.231,然後回車,即可進入圖2所示界面:
圖2
在這裡輸入需要登陸的Samba用戶,我們這裡登陸的用戶是ixdba1,輸入密碼即可登陸到圖3所示界面:
圖3
在圖3界面下可以看到所有Samba伺服器上共享的目錄,可以看到,這裡Samba共享的目錄有ixdba1和ixdba2,ixdba1目錄只有ixdba1用戶可以登陸使用共享文件,而ixdba2目錄也只有ixdba2用戶可以登陸.
在這個界面下,Samba用戶可以下載、上傳、修改、刪除此目錄下的所有目錄和文件,就像本地的文件系統一樣.
如果需要對ixdba1用戶下的文件或者目錄進行許可權控制,只需在Linux伺服器上對相應的文件或者目錄進行許可權設置即可.
圖4
,有一個小技巧,在windows下通過“\ip地址”的方式訪問其它文件資源時,一般第一次需要輸入密碼,以後就無需輸入密碼直接登陸了,那麼如果我們要切換到其它Samba用戶怎麼辦呢?可以在windows下執行如下指令實現:
通過開始---運行---cmd輸入:“net use”命令查看現有的連接,然後執行“net use \Samba伺服器IP地址或者netbios名稱ipc$ /del”,刪除Samba伺服器已經建立的連接.或者執行“net use * /del”將現在所有的連接全部刪除.,再次執行“\ip地址”時,就可以切換用戶了.
到此為止,Samba伺服器的搭建已經介紹完畢.你是否學會了呢!
本文出自 「技術成就夢想」 博客,請務必保留此出處http://ixdba.blog.51cto.com/2895551/568644
[火星人 ] 在Linux下輕鬆玩轉Samba伺服器已經有731次圍觀