十三章 SAMBA服務器

一. samba 的基本概念

1. samba 的功能

samba是一種基於linux/unix平臺中利用於smb(服務信息塊)協議,實現以下功能的軟件包:

n Linux/ UNIX與其它系統主機之間的文件及打印共享

n 支持wins服務器解析和瀏覽

n 支持Windows域控制器和成員服務器的身份驗證

n 可以模擬windows的域控制器

n 支持SSL

2. samba的工作原理

samaba利用smbd程序來監聽139號端口實現主機之間文件及打印共享,利用nmbd監聽137,138端口實現主機之間可以利用netbios名稱相互訪問

二. samba的配置

1. 安裝samba的軟件包.

#mount /dev/cdrom (插入第一張安裝光盤)

#cd /mnt/cdrom/RedHat/RPMS

#rpm –ivh samba-common-2.2.7a-7.9.0.i386.rpm

(該包中包括服務器和客戶均需要的文件)

#rpm –ivh   samba-2.2.7a-7.9.0.i386.rpm

(服務端軟件)

#rpm –ivh redhat-config-samba-1.0.4-1.noarch.rpm

(samba的GUI管理工具)

#rpm –ivh samba-client-2.2.7a-7.9.0.i386.rpm

(samba客戶端軟件)

#rpm –ivh  samba-swat-2.2.7a-7.9.0.i386.rpm

(samba的web管理工具,該包放在第三張安裝光盤中)

相關文件:

   /etc/samba/smb.conf               samba的核心配置文件

   /etc/rc.d/init.d/smb              samba的啓動腳本

     /usr/sbin/smbd                   samba的守護進程

        /usr/sbin/nmbd                   netbois的守護進程

        /etc/rc,d/init.d/smd                samba啓動腳本

        /etc /samba/smdpasswd            存放samba用戶口令

        /etc/samba/smbusers              存放samba用戶與系統用戶的映射情況

        /usr/sbin/swat                    samba的web配置工具

        /usr/bin/smbadduser               添加samba用戶

       /usr/bin/smbpasswd                設置samba用戶的口令

       /usr/bin/smbclient                  samba的客戶訪問工具

/usr/bin/smbprint                    samba的打印工具

/usr/bin/smbmount                    samba客戶加載工具

/usr/bin/smbumount                   samba客戶卸載工具

2. 修改/etc/samba/smb.conf

  作用:  設置samba服務器選項和共享資源的設置

  內容:  #說明語句

[global]       //定義samba服務器的全局選項

…………

…………

全局參數=值

…………

…………

         [homes]        //共享用戶主目錄

…………

…………

資源共享參數=值

…………

…………

         [printers]       // 打印機共享

…………

…………

資源共享參數=值

…………

…………

         [public]          //共享目錄設置

…………

…………

資源共享參數=值

…………

…………

以上聲明爲系統自帶的聲明,用戶也可以根據實際需要定義共享目錄:

             [自定義]      自定義的共享

…………

…………

資源共享參數=值

…………

…………

說明:

(1)  全局參數 

基本設置參數:Workgroup=域名/工作組名

功能:設定samba服務器所屬工作組/域的名稱)

實例:workgroup=linux

Netbios name=主機名稱

功能:設置samba服務器的netbios名稱

實例:netbios name=smbserver

Server string=字符串

功能:設置samba服務器的描述

實例:server string=samba server

interfaces=接口名/ip地址

功能:設置samba服務器的ip地址,如果不想使用默認IP地址或者想同時使用多個IP地址,可以設置這個選項

實例:interfaces=eth0  192.168.1.1/255.255.255.0

netbios aliases=主機名稱

功能:設置netbios的別名

實例:netbios aliases=smb1 smb2 

bind interfaces only=true/false

功能:設置主機配置多塊網卡時,是否區分開不同網卡的數據報,默認爲false

實例:bind interfaces only=false

安全設置參數:admin users=用戶名

  功能:設置管理員賬號,該用戶擁有所有文件的存取權限

實例:admin users=smbadmin

socket address=ip地址

功能:指定samba服務器監聽的ip地址

實例:socket address=192.168.0.1

security=user/share/domain/server

功能:設置samba的共享安全級別

注意:share  表示共享級訪問,服務器不對客戶機進行身份驗證

      user   表示用戶級訪問,被訪問的samba服務器要對客戶機進行身份驗證

server  表示服務器級訪問,被訪問的samba服務器請求另一臺samba服務器對客戶機進行身份驗證

domain  表示域級訪問,被訪問的samba服務器請求另一臺win NT域控制器對客戶機進行身份驗證

實例:security=share

encrypt passwords=yes/no

功能:指定是否使用加密口令

注意:對於windows客戶機來說,該選項應該設置爲yes

實例:encrypt passwords=yes

restrict anonymous=true/false

功能:指定服務器是否允許win NT/2000以匿名方式登錄

實例:restrict anonymous=false

security mask=權限值

功能:設置windows 客戶機改變samba服務器文件權限時所能更改的最大文件權限

 實例:security mask =0744

smb passwd file=文件路徑

功能:指定samba用戶密碼的文件位置

實例:smb passwd file=/etc/samba/smbpasswd

map to guest=never/bad user/bad password

功能:設置當用戶所輸入的用名和密碼不正確時的處理方式

注意:該選項只有security=share時纔有效,該選項可以取以下三種值:

never 表示拒絕使用任何資源

bad user 表示用戶輸入用戶名正確,但密碼錯誤時,可以允許以guest登錄

bad password 表示用戶輸入的用戶名和口令都錯誤時,可以允許以guest登錄

min passwd length=數字

功能:指定密碼的最小長度,默認值爲5位

實例:min passwd length=5

null passwords =yes/no

功能:設置是否允許用戶密碼爲空

實例:null passwords=yes

passwd level=數字

功能:設置用戶設置密碼時,最多允許幾個字符大小寫不同

實例:passwd level=8

username level=數字

功能:當驗證賬號時,設定最多允許幾個字符大小寫不同

實例:username level=8

username map=文件路徑

功能:指定SMB用戶名與LINUX用戶名映射文件的路徑

實例:username map=/etc/samba/smbusers

unix passwd sync=false/true

功能:設置服務器是否允許samba用戶口令與linux系統用戶密碼同步,當改變samba用戶口令同時更新linux系統用戶的口令

實例:unix passwd sync=false

passwd  server=ip址址/主機名

功能:指定密碼服務器的位置,當security值爲server/domain必須設置該參數

實例:passwd server=192.168.3.1

update encryptd =yes/no

功能:設置客戶在samba用戶登錄時,是否需要修改密碼

實例:update encryptd=yes

guest account=用戶名

功能:指定來賓賬號的名稱,默認爲nobody

實例:guest account =guest

hosts equiv=文件路徑

功能:定義允許空密碼即可訪問samba服務器的主機和用戶名

實例:host equiv=/etc/samba/host.equiv

root directory=目錄名

功能:指定samba服務器工作主目錄,任何不在此目錄下的資源則拒絕訪問

實例:root directory=/etc/samba/

hosts allow= ip地址/主機名/域名

功能:設置允許訪問的客戶機

實例:hosts allow=192.168.1.1

hosts deny=ip地址/主機名/域名

功能:設置禁止訪問的客戶機

實例:hosts deny=192.168.0.2

打印機設置參數:

printcap name=路徑

功能:設定打印機的配置文件的位置

實例:printcap name=/etc/printcap

load printers =yes/no

功能:設定是否自動裝載打印機的裝載文件,當要做打印服務器時必須設置爲yes

實例:load printers=yes

printing =bsd/lprng/aix/hpux/qnx/sysv/plp

功能:設置打印機相關指令時所採取的模式

實例:printing=lprng

printer name=名稱

功能:設置打印機的名稱

實例:printer name=hpprint

printer driver file=路徑

功能:設置打印機設定文件的位置

實例:printer driver file=/etc/samba/driver

日誌設置參數: log file=路徑

功能:定義日誌文件的位置

實例:log file=/var/log/samba/%m.log

max log size=數字

功能:定義日誌文件的最大千字節

實例:max log size=5000

運行效率參數:change notify timeout=數字

功能:設置服務器週期性異常通知

實例:change notify timeout=90

deadtime=數字

功能:客戶端無操作多少分鐘後服務器中斷連接

實例:deadtime=10

getwd cache=yes/no

功能:是否啓用cache功能

實例:getwd cache=yes

keepalive=數字

功能:服務器每隔多少秒向客戶端發送keepalive包用於確認客戶端是否工作正常

實例:keepalive=30

max open files=數字

功能:同一個客戶端最多能打開的文件數目

實例:max open files=1000

max ttl=數字

功能:設定nmbd程序採用wins方式解析時,最大存活時間

實例:max  ttl=259200

client code page=850/936

功能:設定客戶端存取samba服務器的資源時所使用的字符編碼表

實例:client code page=936

Pdc選項:

local master=yes/no

功能:設置是否允許samba服務器成爲網絡中的主瀏覽器

實例:local master=yes

domain master=yes/no

功能:設置samba服務器成爲PDC,如果網絡己有win NT的PDC時,該選項應該爲no

實例:domain master=yes

Preferrid master=yet/no

功能:讓samba服務器成爲網絡中的優先級最高的PDC

實例: preferred master=yet/no

domain logons=yes/no

功能:設置samba服務器是否允許win NT客戶機登錄

實例:domain logons=yes

wins設置參數:

wins support=yes/no

功能:是否支持wins解析

實例:wins support=yes

wins server=服務器

功能:指定wins服務器的位置

實例:wins server=192.168.0.2

wins proxy=yes/no 

功能:設置samba服務器是否支持wins代理功能

實例:wins proxy=yes

(2) 資源共享的選項

基本選項 : 

comment=說明語句

功能:對共享資源的說明

實例:comment=file shared

path=路徑

功能:共享資源的路徑

實例:path=/soft

訪問控制選項: 

browseable=yes/no

功能:是否可以瀏覽共享目錄,默認爲yes

實例:browseable=no

printable =yes/no

功能:設置客戶機是否可以使用共享打印機打印

實例:printable=yes

avalidable=yes/no

功能:設置共享資源是否可用

實例:avalidable=yes

public=yes/no

功能:設置共享資源是否允許所有用戶訪問,除guest用戶以外

實例:public=yes

guest ok =yes/no

功能:設置是否允許guest用戶訪問共享資源

實例:guest ok =yes

guest only=yes/no

功能:設置共享目錄只允許guest用戶訪問

實例:guest only=yes

read only=yes/no

功能:訪問用戶對共享資源只讀

功能:read only=yes

valid users=用戶名/@組名

功能:設定指定允許訪問共享資源的用戶/組,多用戶名用逗號分開,指定組時要在組名前加@

實例:valide users=u1,u2,@g1

invalid users=用戶名/@組名

功能:設定指定禁止訪問共享資源的用戶/組,多用戶名用逗號分開,指定組時要在組名前加@

實例:invalid users=@g2

create mode=權限值

功能:指定客戶機在共享目錄中創建文件的默認權限,默認權限爲744

實例:create mode=755

directory mode =0775

功能:指定客戶機共享目錄中創建文件目錄的默認權限,默認權限爲755

實例:directory mode=755

writable=yes/no

功能:指定共享的路徑是否可寫

實例:writable=yes

write list=用戶名/@組名

功能:設定允許讀寫共享目錄的用戶列表

實例:write list=abc,@g2

read list=用戶名/@組名

功能:設定只讀訪問用戶列表

實例:read list=abc,@cuo

preexec=路徑

功能:指定客戶機連接時要自動執行文件

實例:preexec=/bin/mount   /dev/cdrom

postexec=路徑

功能:指定客戶機斷開連接時要自動執行的文件

實例:postexec=/bin/umount  /dev/cdrom

root  preexec=路徑

功能: 指定客戶機連接時要以ROOT用戶身份自動執行的文件

實例:root   preexec=/bin/mount /dev/cdrom

root  postexec=路徑

功能:指定客戶機斷開連接時要以ROOT用戶身份自動執行的文件

實例:root   postexec=/bin/umount /dev/cdrom

(3) 特殊變量

        %S:        當前服務名

        %P:        當前服務的根目錄

        %u:        當前服務的用戶名

        %h:        samba服務器的主機名

        %m:        客戶機的NETBIOS名

        %L         samba服務器的netbios名

%v         samba版本號

%g         給定%u的所在的主工作組名

%H         給定的%u的宿主目錄

%T         當前日期和時間

文件實例:

根據以下要求/etc/samba/smb.conf文件:

n 設置samba服務器的工作組名爲linuxgroup,NETBIOS名爲linux

n 設置samba服務器的訪問模式爲share

n 共享/soft目錄,共享名爲soft,該共享目錄允許所有的用戶讀寫操作

#vi  /etc/samba/smb.conf

修改內容如下:

       [global]

       Workgroup=linuxgroup

       Netbios name=linux

       Security=share

       ………………

       ………………

       ………………

       [homes]

       ………………

       ………………

       ………………

       ………………

       [printers]

       ………………

       ………………

       ………………

       ………………

      [soft]  //添加如下這個聲明

comment=applic  soft  shared

path=/soft

browseable=yes

writable=yes

guest ok=yes

public=yes

3. 啓動  samba服務

# service  smb  start

4. samba用戶的建立 

samba用戶其實是系統用戶的映射,所以建立samba用戶先必須在系統中建立相應的用戶,再通過特定方式映射爲samba用戶

方法一: smbadduser 用戶名:用戶名

實例:建立samba用戶u1

   #useradd  u1

   #passwd u1

   #smbadduser u1:u1

方法二:#smbpasswd –a 用戶名

實例:

#useradd u2

#passwd u2

#smbpasswd –a  u2

方法三:成批添加用戶

#mksmbpasswd.sh

實例:

   #cat ./etc/passwd |mksmbpasswd.sh>/etc/samba/smbpasswd

三. Samba 的客戶工具的使用

1. Smbclient 

功能: (1)查看其他主機上共享資源

  (2)連接其他主機的共享目錄

格式:#smbclient  [參數]  主機ip或netbios名稱

參數:  -N   不提示輸入用戶口令

  -L   主機IP地址/netbios名稱   查看指定主機上的共享目錄

  -U   用戶名     指定連接其它主機的用戶名

     實例:#smbclient  -L  192.168.0.1 –U administrator

               #smbclient  //192.168.0.1/c   -U administrator

    2.  smbmount 

  功能: 加載smb文件系統

  格式:

smbmount //主機IP地址或netbios名/共享名  裝載點  -ousername=用戶名  password=密碼

實例:

  #smbmount   //192.168.0.1/c   /h2   -ousername=administrator

四. 配置案例

配置要求:

設某公司有財務,技術,領導3個部門,我們分別爲3個部門建立3個用戶組爲caiwu,network,lingdao; 三個部門裏各有2個用戶,我們建用戶分別爲caiwu01,caiwu02,network01,network02,lingdao01,lingdao02,具體如下:

1. 首先服務器採用用戶驗證的方式,每個用戶可以訪問自己的宿主目錄,並且只有該用戶能訪問宿主目錄,並具有完全的權限,而其他人不能看到你的宿主目錄

2. 建立一個caiwu的文件夾,希望caiwu組和lingdao組的人能看到,network02也可以訪問,但只有caiwu01有寫的權限

3. 建立一個lindao的目錄,只有領導組的人可以訪問並讀寫,還有network02也可以訪問,但外人看不到那個目錄

4. 建立一個文件交換目錄exchange,所有人都能讀寫,包括guest用戶,但每個人不能刪除別人的文件

5. 建立一個公共的只讀文件夾public,所有人只讀這個文件夾的內容

 配置過程:

1. 建立相應的用戶和用戶組

#groupadd caiwu

#groupadd network

#groupadd lingdao

#useradd caiwu01 -g caiwu

#useradd caiwu02 -g caiwu

#useradd network01 -g network

#useradd network02 -g network

#useradd lingdao01 -g lingdao

#useradd lingdao02 -g lingdao

然後我們使用smbpasswd -a caiwu01的命令爲6個帳戶分別添加到samba用戶中

2. 建立相應的目錄

#mkdir /home/samba

#mkdir /home/samba/caiwu

#mkdir /home/samba/lingdao

#mkdir /home/samba/exchange

#mkdir /home/samba/public

3. 改變目錄的權限

我們爲了避免麻煩可以在這裏把上面所有的目錄的權限都設置成777:

#chmod  777    /home/samba

#chmod  777   /home/samba/caiwu

#chmod  777   /home/samba/lingdao

#chmod  777   /home/samba/exchange

#chmod  777 /home/samba/public

4. 修改/etc/samba/smb.conf

#vi /etc/samba/smb.conf

修改內容如下: 

[global]

workgroup = linux 

netbios  name=smbser

server string = xhnet’s Samba File Server

security = user

encrypt passwords = yes

#其他的基本上可以按照默認的來

[homes]

comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775

#homes段滿足第1條件

[caiwu]

comment = caiwu
path = /home/samba/caiwu
public = no
valid users = @caiwu,@lingdao,network02
write list = caiwu01
printable = no

#caiwu段滿足我們的第2要求

[lingdao]

comment = lingdao
path = /home/samba/lingdao
public = no
browseable = no

writable=yes
valid users = @lingdao,network02
printable = no

#lingdao段能滿足我們的第3要求

[exchage]

comment = Exchange File Directory
path = /home/samba/exchange
public = yes

guset ok =yes
writable = yes

#exchange段基本能滿足我們的第4要求,但不能滿足每個人不能刪除別人的文件這個條件,即使設置了mask也是沒用,其實這個條件只要linux設置一個粘着位就行

chmod -R 1777 /home/samba/exchange 

注意這裏權限是1777,類似的系統目錄/tmp也具有相同的權限,這個權限能實現每個人能自由寫文件,但不能刪除別人的文件這個要求

[public]

comment = Read Only Public
path = /home/samba/public
public = yes
read only = yes

#這個public段能滿足我們的第5要求。

4.啓動服務

#/etc/rc.d/init.d/smb restart

5.利用windows或linux主機測試SAMBA服務器

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章