前言:檔案伺服器提供的服務在大多數公司或企業都會被用到,因為在任何的公司或企業都涉及不同職位擷取不同資源檔的情況,這就需要根據不同職位配置相關的不同許可權,以保證相關資源檔的安全性和保密性。
一、Samba介紹:
Server Message Block的縮寫是SMB,即伺服器訊息區,SMB主要是作為Microsoft的網路通訊協議。Samba將SMB通訊協定應用到了Linux系統上,使得Samba成為一款能讓Linux系統應用Microsoft網路通訊協議的軟體。Samba最大的功能可用於Linux與windows系統直接的檔案分享權限設定和列印共用,Samba既可用於windows與Linux之間的檔案分享權限設定,也可用於Linux與Linux之間的資源共用,由於NFS的出現,因而 Samba更多用在Linux與windows之間的資料共用上面。
SMB是基於客戶機/伺服器型的協議,故一台Samba伺服器既可當檔案分享權限設定伺服器,也可充Samba的用戶端。Samba在windows下使用的是NetBIOS協議,如果你要使用Linux下共用出來的檔案,請確認你的windows系統下是否安裝了NetBIOS協議。
組成Samba啟動並執行有兩個服務,一個是SMB,另一個是NMB;SMB是Samba 的核心啟動服務,主要負責建立Samba伺服器與Samba客戶機之間的對話,驗證使用者身份並提供對檔案和列印系統的訪問,只有SMB服務啟動,才能實現檔案的共用,監聽139 TCP連接埠;而NMB服務是負責解析用的,類似與DNS實現的功能,NMB可以把Linux系統共用的工作群組名稱與其IP對應起來,如果NMB服務沒有啟動,就只能通過IP來訪問共用檔案,監聽137和138 UDP連接埠。
Samba伺服器可實現如下功能:
A、WINS和DNS服務;
B、網路瀏覽服務;
C、Linux和Windows域之間的認證和授權;
D、UNICODE字元集和網域名稱映射;
E、滿足CIFS協議的UNIX共用等。
二、環境準備:
1、CentOS 6.3版本(32位),主機名稱:samba;
2、IP地址:192.168.31.131;
3、虛擬機器:VMware? Workstation 9.0.0 build-812388;
4、samba軟體:samba-3.6.9-167.el6_5.i686;
5、工作群組:Lmzsamba。
三、安裝軟體:
A、安裝前的準備工作:
SELINUX=disabled
關閉防火牆:service iptables stop
B、執行如下命令安裝samba:
[root@samba ~]# yum install samba samba-client samba-swat
C、檢查samba是否安裝成功:
[root@samba ~]# rpm -qa | grep samba
如果顯示有如下一些資訊,則說明安裝沒有問題:
samba-client-3.6.9-167.el6_5.i686
samba-3.6.9-167.el6_5.i686
samba-common-3.6.9-167.el6_5.i686
samba-winbind-3.6.9-167.el6_5.i686
samba-swat-3.6.9-167.el6_5.i686
samba-winbind-clients-3.6.9-167.el6_5.i686
D、啟動samba服務及狀態檢查:
[root@samba ~]# /etc/init.d/smb start
顯示結果:
Starting SMB services: [ OK ]
狀態檢查:
[root@samba ~]# service smb status
顯示結果:
smbd (pid 2462) is running...
E、設定開機自啟動,並查看是否設定成功:
[root@samba ~]# chkconfig --level 35 smb on
檢查是否成功:
[root@samba ~]# chkconfig --list | grep smb
結果顯示如紅色部分(在3、5層級上自動運行samba服務),則表示設定成功:
smb 0:off 1:off 2:off 3:on 4:off 5:on 6:off
四、服務配置:
Samba服務配置主要是指/etc/samba/smb.conf檔案的配置。一般情況下,公司或企業主要分三種情況,即:
1、公用匿名類共用目錄的配置(即匿名賬戶訪問共同的目錄或者檔案);
A、設定檔:
[root@samba ~]# vi /etc/samba/smb.conf
在檔案中添加或者修改相關代碼:
workgroup = WORKGROUP //定義工作群組,也就是windows中的工作群組概念
server string = Lmz Samba Server Version %v //定義Samba伺服器的簡要說明
netbios name = LmzSamba //定義windows中顯示出來的電腦名稱
//定義Samba使用者的記錄檔,%m代表用戶端主機名稱
//Samba伺服器會在指定的目錄中為每個登陸主機建立不同的記錄檔
log file = /var/log/samba/log.%m
security = share //共用層級,使用者不需要帳號和密碼即可訪問
[public] //設定針對的是共用目錄個別的設定,只對當前的共用資源起作用
comment = Public Stuff //對共用目錄的說明檔案,自己可以定義說明資訊
path = /share //用來指定共用的目錄,必選項
public = yes //所有人可查看,等效於guest ok = yes
B、建立共用目錄:
[root@samba ~]# cd ..
[root@samba /]# mkdir share
[root@samba /]# cd share
[root@samba share]# touch samba.txt
[root@samba share]# touch aa.txt
[root@samba share]# ls -ls
顯示結果:
total 0
0 -rw-r--r--. 1 root root 0 Mar 13 11:02 aa.txt
0 -rw-r--r--. 1 root root 0 Mar 13 11:02 samba.txt
為/share目錄給匿名使用者授權為nobody許可權:
[root@samba /]# chown -R nobody:nobody share/
[root@samba /]# ll /share/
total 0
-rw-r--r--. 1 nobody nobody 0 Mar 13 11:02 aa.txt
-rw-r--r--. 1 nobody nobody 0 Mar 13 11:02 samba.txt
C、重啟smb服務:
[root@samba /]# /etc/init.d/smb restart
Shutting down SMB services: [ OK ]
Starting SMB services: [ OK ]
[root@samba /]# /etc/init.d/nmb restart
Shutting down NMB services: [FAILED]
Starting NMB services: [ OK ]
D、測試smb.conf配置是否正確:
[root@samba /]# testparm
顯示結果:
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[public]"
WARNING: The security=share option is deprecated
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
[global]
netbios name = LMZSAMBA
server string = Lmz Samba Server Version %v
security = SHARE
log file = /var/log/samba/log.%m
max log size = 50
idmap config * : backend = tdb
cups options = raw
[homes]
comment = Home Directories
read only = No
browseable = No
[printers]
comment = All Printers
path = /var/spool/samba
printable = Yes
print ok = Yes
browseable = No
[public]
comment = Public Stuff
path = /share
guest ok = Yes
E、訪問Samba伺服器的共用檔案:
E1:CentOS系統下測試:
[root@samba /]# smbclient //127.0.0.1/public
顯示結果:
WARNING: The security=share option is deprecated
Enter root's password:
由於是匿名使用者,沒有設定密碼,所以在此直接斷行符號即可:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.9-167.el6_5]
Server not using user level security and no password supplied.
smb: \>
在此輸入 ls 命令,斷行符號得到如下資訊:
smb: \> ls
. D 0 Thu Mar 13 11:02:47 2014
.. DR 0 Thu Mar 13 11:13:53 2014
aa.txt 0 Thu Mar 13 11:02:47 2014
samba.txt 0 Thu Mar 13 11:02:37 2014
35755 blocks of size 524288. 29202 blocks available
smb: \>
在此輸入 q 命令,退出訪問。
E2:window xp系統下測試,結果
可以看出,公用目錄共用成功。
2、按照許可權對目錄進行分組(即除公用共用目錄外,各組訪問各組的檔案或目錄,以技術部門TS為例);
A、添加TS部組和使用者,並賦給使用者密碼:
[root@samba ~]# groupadd ts
[root@samba ~]# useradd -g ts zhangsan
[root@samba ~]# useradd -g ts lisi
設定lisi的密碼:
[root@samba ~]# passwd lisi
顯示結果:
Changing password for user lisi.
New password:
在此輸入密碼:123456,斷行符號:
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password:
再次輸入密碼:123456,斷行符號:
passwd: all authentication tokens updated successfully.
設定zhangsan的密碼:
[root@samba ~]# passwd zhangsan
顯示結果:
Changing password for user zhangsan.
New password:
在此輸入密碼:123456,斷行符號:
BAD PASSWORD: it is too short
BAD PASSWORD: is too simple
Retype new password:
再次輸入密碼:123456,斷行符號:
passwd: all authentication tokens updated successfully.
B、在根目錄下建立/ts 檔案夾:
[root@samba ~]# cd /
[root@samba /]# mkdir ts
[root@samba /]# cd ts
[root@samba ts]# touch ts.txt
[root@samba ts]# ls -ls
total 0
0 -rw-r--r-- 1 root root 0 Mar 13 18:17 ts.txt
C、將建立的兩個帳戶(lisi、zhangsan)添加到samba的賬戶中:
[root@samba ~]# smbpasswd -a zhangsan
New SMB password:
Retype new SMB password:
Added user zhangsan.
[root@samba ~]# smbpasswd -a lisi
New SMB password:
Retype new SMB password:
Added user lisi.
D、修改主設定檔如下:
[root@samba ~]# vi /etc/samba/smb.conf
修改security:
security = user //共用層級,使用者不需要帳號和密碼即可訪問
添加資訊:
[ts]
comment = TS
path = /ts
valid users = @ts
E、重新載入samba服務:
[root@samba ~]# service smb reload
顯示結果:
Reloading smb.conf file: [ OK ]
F、在window xp下測試:
開啟我的電腦,在地址欄中輸入\\192.168.31.131,彈出使用者登陸框,:
在圖中輸入使用者名稱:lisi,密碼:123456,登陸成功後,可以看到相應的目錄,包括lisi自己的目錄、匿名公用目錄、lisi與zhangsan共用的非匿名目錄。如所示:
可以看到,達到我們相要的預期效果。
3、共用目錄下的不同目錄進行分組。
需求:1. 在系統磁碟分割時單獨分一個Company的區,在該區下有以下幾個檔案夾:HR、 FM和Share。在Share下又有以下幾個檔案夾:HR、FM和Tools。
2. 各部門對應的檔案夾由各部門自己管理,Tools檔案夾由管理員維護。
3. HR管理員帳號:hradmin;普通使用者帳號:hruser。FM管理員帳號:fmadmin;普通使用者帳號:fmuser。
A、建立使用者,並設定SMB賬戶密碼:
添加使用者:
[root@samba ~]# useradd -s /sbin/nologin hradmin
[root@samba ~]# useradd -g hradmin -s /sbin/nologin hruser
[root@samba ~]# useradd -s /sbin/nologin fmadmin
[root@samba ~]# useradd -g hradmin -s /sbin/nologin fmuser
[root@samba ~]# useradd -s /sbin/nologin admin
設定密碼:
[root@samba ~]# smbpasswd -a hradmin
New SMB password:
Retype new SMB password:
Added user hradmin.
[root@samba ~]# smbpasswd -a hruser
New SMB password:
Retype new SMB password:
Added user hruser.
[root@samba ~]# smbpasswd -a fmadmin
New SMB password:
Retype new SMB password:
Added user fmadmin.
[root@samba ~]# smbpasswd -a fmuser
New SMB password:
Retype new SMB password:
Added user fmuser.
[root@samba ~]# smbpasswd -a admin
New SMB password:
Retype new SMB password:
Added user admin.
為了方便記憶,在配置的時候,統一設定為:123456。
B、建立目錄:
[root@samba ~]# cd /
[root@samba /]# mkdir company
[root@samba /]# cd company
[root@samba company]# mkdir HR FM Share
[root@samba company]# cd Share
[root@samba Share]# mkdir HR FM Tools
C、更改目錄屬性:
[root@samba company]# chown hradmin.hradmin HR
[root@samba company]# chown fmadmin.fmadmin FM
[root@samba company]# chown admin.admin Share
[root@samba company]# cd Share
[root@samba Share]# chown hradmin.hradmin HR
[root@samba Share]# chown fmadmin.fmadmin FM
[root@samba Share]# chown admin.admin Tools
[root@samba Share]# chmod 1775 HR FM
D、修改主設定檔如下:
security = user
passdb backend = tdbsam
[HR]
comment = This is a directory of HR.
path = /company/HR/
public = no
admin users = hradmin
valid users = @hradmin
writable = yes
create mask = 0750
directory mask = 0750
[FM]
comment = This is a directory of FM.
path = /company/FM/
public = no
admin users = fmadmin
valid users = @fmadmin
writable = yes
create mask = 0750
directory mask = 0750
[Share]
comment = This is a share directory.
path = /company/Share/
public = no
valid users = admin,@hradmin,@fmadmin
writable = yes
create mask = 0755
directory mask = 0755
E、重新啟動samba服務:
[root@samba Share]# /etc/init.d/smb restart
Shutting down SMB services: [ OK ]
Starting SMB services: [ OK ]
[root@samba Share]# /etc/init.d/nmb restart
Shutting down NMB services: [ OK ]
Starting NMB services: [ OK ]
F、在window xp系統下測試:
開啟我的電腦,在地址欄中輸入\\192.168.31.131,彈出使用者登陸框,:
在圖中輸入使用者名稱:hradmin,密碼:123456,可以看到相應的共用目錄,如所示:
測試完畢。
4、設定網路對應磁碟機,可以在計算中添加一個類似盤符檔案夾,這樣就比較方便,如所示:
5、如果網路斷不開,出現下面的情況,如所示:
可以採用如的形式解決問題即可:
配置完畢,歡迎拍磚!