http://blog.csdn.net/limingzhong198/article/details/22064801
前言:文件服務器提供的服務在大多數公司或企業都會被用到,因爲在任何的公司或企業都涉及不同職位獲取不同資源文件的情況,這就需要根據不同職位配置相關的不同權限,以保證相關資源文件的安全性和保密性。
一、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、如果網絡斷不開,出現下面的情況,如下圖所示:
可以採用如下圖的形式解決問題即可:
配置完畢,歡迎拍磚!