天天看點

Linux運維 第三階段 (四) SAMBA

FTP(主機間通過應用層封包傳送,網絡(資源子網、通信子網),TCP/IP負責将封包安全傳達到目的地,最終請求什麼資源,是FTP應用就靠FTP請求封包和響應封包完成,協定本身很複雜,但實作的功能很簡單,通過FTP可在遠端伺服器上建立檔案、删除檔案,但無法線上編輯檔案(需要先下載下傳-->修改-->上傳))

NFS(工作于LINUX間,或UNIX間)

SAMBA(用于linux與windows共享檔案,CIFS commoninternet file system,SMB servicemessage block,NETBIOS(WINS服務))

NETBIOS(通過廣播形式在windows同一個工作組内實作主機名稱解析的協定)

WINS(在WINDOWS主機内部類似NETBIOS一樣解析主機名,但它是單點傳播的,當得到一台主機,直接向WINS請求它的主機名是什麼,或向WINS請求目前網絡内有多少台主機)

WINDOWS的網路上的芳鄰基于二進制傳輸檔案

在linux上實作NETBIOS,CIFS/SMB(基于NETBIOS,CIFS/SMB,WINBIND,LDAP(openldap)讓linux成為windows的域控制器)

NETBIOS:137/udp;138/udp;139/tcp;445/tcp(共享檔案)

WINBIND(讓linux主機加入到windows的AD(activedirectory)域,非常重要的程式)

WINDOWS名稱解析時:hosts檔案-->WINS-->DNS-->lmhosts

SAMBA如何驗證client的通路:賬号是系統使用者;密碼是SAMBA密碼(smbpasswd獨立檔案存儲且加密存放)

實際使用權限=共享權限與檔案系統權限的交集

redhat2.6.18-308.el5

#yum  list  all samba*

#rpm  -e  samba-client samba-common(common,client和server都要用到的通用元件)

#yum  -y  install samba3x  samba3x-client  samba3x-common  samba3x-swat(swat sambaweb access tools,WEB服務通路工具,基于WEB接口,圖形化配置samba)

#rpm  -ql  samba3x

/etc/rc.d/init.d/nmb

/etc/rc.d/init.d/smb

#rpm  -ql  samba3x-common

/etc/samba/lmhosts

/etc/samba/smb.conf

/usr/bin/testparm(測試主配置檔案smb.conf是否有文法錯誤)

/usr/bin/smbpasswd(管理SAMBA使用者)

#rpm  -ql  samba3x-client

/usr/bin/smbclient(ftp-likeclient to access SMB/CIFS resources on servers)

/sbin/mount.cifs

/sbin/umount.cifs

/usr/bin/findsmb

#smbpasswd  -a  USERNAME(add将本地使用者加入SAMBA服務)

#smbpasswd -d|-e  USERNAME(disable,enable,禁用或啟用指定使用者通路SAMBA服務)

#smbpasswd  -x  USERNAME(将指定使用者從SAMBA服務中删除)

#smbclient  -L  NETBIOS_NAME -U  USERNAME(-L,--list)

#service  smb  start(smbd檔案共享,tcp/139,tcp/445)

#service  nmb  start(nmbd NETBIOS,udp/137,udp/138)

#netstat  -tulnp

#man  smb.conf

#vim /etc/samba/smb.conf(#是純注釋,;分号開頭的是可以啟用的指令或參數,配置風格類似WINDOWS的*.ini檔案,注意等号兩邊空格)

#=======Global Settings=========

[global]

  workgroup  = MYGROUP(WINDOWS的工作組預設為WORKGROUP)

  serverstring  = Samba Server Version %v(滑鼠放在共享上時的懸停描述,%v是宏,顯示版本号,可了解為變量,這些變量隻為這個軟體所使用,此項改為其它内容,不要暴露自己的版本号,常量(一次定義永久生效))

  hosts allow  = 127.  192.168.1.(白名單,基于IP的通路控制)

  hosts deny  =    (黑名單)

#------------Logging Options--------------

  log file  = /var/log/samba/log.%m(每個client到server通路時有獨立的日志檔案,%m是宏,表示用戶端主機自己的名字或IP)

  max log size  =  50(機關KB)

#------------Standalone Server Options----------

  security  =  user(安全級别user,share和sever被廢棄deprecated)

  passdbbackend  =  tdbsam(密碼存放的格式,如有ldapsam)

#-----------Printing Options--------------

  load printers  =  yes

  cups options  =  raw(common unix printing system,哪種驅動)

#=======Shared Definitions=======

[homes](每個使用者是否可以通路自己的家目錄)

  comment  =  HomeDirectories(描述資訊)

  browseable  =  no(是否可被浏覽)

  writable  =  yes(是否可寫,也可表示為read  only  =  no)

[printer](共享列印機)

  comment  = All  Printers

  path  = /var/spool/samba(緩沖池)

  browseable  =  no(列印機不需要在共享檔案中被浏覽,在列印機裡檢視)

  guest  ok =  no(是否允許來賓賬号通路,來賓賬号僅讀權限,也可表示為public  =  no)

  writable  =  no

  printable  =  yes

常用指令:

comment  =

path  =

browseable  =

guest  ok  = yes|no(等同于public  = yes|no)

writable  =  no(等同于read  only =  yes,兩種表示二選一即可)

write  list  = user1,  user2,  @GROUP_NAME(定義可寫使用者清單,@GROUP也可表示為+GROUP)

valid  users  = USERNAME,  (隻允許哪些使用者通路,白名單,也可用黑名單invalid  users =  USERNAME,白名單與黑名單二選一使用)

舉例:win下通路linux的samba服務

#vim /etc/samba/smb.conf

[tools]

  comment  = share  test

  path  = /share/test

  guest  ok =  yes

  writable  =  yes

#testparm

#mkdir  -pv  /share/test

#useradd  fedora

#passwd  fedora

#smbpasswd  -a 

#ll  -d  /share/test

#setfacl  -m  u:fedora:rwx /share/test

#smbpasswd  -a  fedora(最好不要與登入系統密碼相同)

舉例:linux通路win共享

在win下共享一目錄,并開啟GUEST帳戶

#smbclient  -L  192.168.101.106(直接回車以匿名anonymous使用者檢視)

#smbclient  192.168.101.106/test  -U  administrator(以管理者身份通路共享)

smb:\>help

smb: \> pwd

Current directory is \\192.168.101.106\test\

smb: \> lcd /root(切至本地目錄)

smb: \> !pwd(檢視本地路徑)

/root

smb: \> !ls

anaconda-ks.cfg Desktop  install.log  install.log.syslog

smb: \> put install.log

putting file install.log as \install.log (3327.0 kb/s)(average 3327.0 kb/s)

smb: \> ls

  .                                   D        0 Mon Nov  2 15:11:07 2015

  ..                                  D        0  Mon Nov 2 15:11:07 2015

  111.txt                             A        0 Mon Nov  2 14:58:22 2015

  install.log                         A    30662 Mon Nov  2 15:11:07 2015

舉例:在linux下通路linux共享

#smbclient //192.168.101.170/tools  -U  fedora

挂載:

#mkdir  /mnt/samba

#mount  -t  cifs //192.168.101.170/tools  -o  username=fedora  /mnt/samba

#mount

//192.168.101.170/tools on /mnt/samba type cifs (rw,mand)

自動挂載:

#vim  /etc/fstab(此種方式挂載不安全,可被其它使用者看到)

//192.168.101.170/tools /mnt/samba  username=fedora,password=redhat  0  0

#mount  -a

#umount  /mnt/samba

#vim /etc/samba/credit.passwd(#man  mount.cifs搜尋關鍵字credentials)

username=fedora

password=redhat

#chmod  go=---  /etc/samba/credit.passwd

#vim  /etc/fstab

//192.168.101.170/tools /mnt/samba credentials=/etc/samba/credit.passwd  0  0

浏覽器端配置samba:

#rpm  -ql  samba3x-swat

#vim /etc/xinetd.d/swat

disable  =  no(啟用swat服務)

only_from  =  0.0.0.0(讓其監聽在任意位址)

#service xinetd  restart

#chkconfig --list  swat

以上是學習《馬哥網絡視訊》做的筆記。

1、samba協定(server message block)服務消息塊;

CIFS協定(common internet file system)通用網際網路檔案系統。

作用:分享檔案與列印服務;可提供使用者登入samba主機時的身份認證;可提供windows上的主機名解析(netbios name解析)。

#rpm –qa | grep samba

samba-3.6.9-15.el6.x86_64   (主程式

samba-client-3.6.9          (用戶端

samba-common-3.6.9          (公共包、測試工具等

samba-winbind-clinets-3.6.9 (windows中域

samba-winbind-3.6.9

samba-libs-4.0.0            (底層庫等

主要程式:smbd(提供對伺服器中檔案、列印資源的共享通路,端口139、445;

nmbd(提供基于netbios主機名稱的解析,端口137、138

腳本:/etc/init.d/smb

配置檔案:/etc/samba/smb.conf   (主配置檔案

/etc/samba/lmhosts              (主機名與IP對應關系

/etc/samba/smbusers             (設定使用者别名

配置檔案檢查工具:#testparm –s (檢查配置檔案文法是否正确

2、常見配置項:

[global]                    (全局配置

[homes]                     (使用者目錄共享設定

[prints]                    (列印機共享設定

[myshare]                   (使用者自定義名稱的共享目錄設定

注:;分号是配置樣例行,執行個體

#cat /etc/samba/smb.conf.bak | grep –v "^#" | grep –v "^;"| grep –v "#" | awk 'NF>0'     (提取有效配置行

》常見全局配置項:

    workgroup = WORKGROUP

    server string = Samba ServerVersion %V

    security = share    (share匿名通路;user本地通路;server由其它伺服器提供認證;domain由域控制器提供認證

    passdb backend = tdbsam

》常見共享目錄配置項:

    comment = 描述資訊  (可寫變量%I,%H,%T

    path = 路徑

    browseable = yes    (是否浏覽中可見

    guest ok = yes      (是否允許所有人通路,等同于public

    writable = yes      (是否可寫,與readonly的作用相反

》其它設定:

    username map =/etc/samba/smbusers  (使用者映射,在此檔案中添加多個别名,空格隔開

    hosts allow =                      (ACL控制

    hosts deny =       

例:hosts allow = 192.168.1. EXPECT 192.168.1.15

    display charset =utf8              (samba伺服器顯示的字元集格式

    unix charset = utf8                (unix用戶端的字元集格式

    dos charset = cp950               (windows用戶端的big5編碼

    %I                                 (顯示用戶端的IP位址

    %H                                 (顯示家目錄路徑

    %T                                 (顯示目前日期和時間

3、本地映射:

    #mount –t cifs –o username=使用者名,password=密碼 原路徑 目标路徑

    #vi  /etc/fstab

原路徑  目标路徑  cifs  defaults,username=  ,password=  0   0

4、例:匿名通路

    伺服器端:#vi  /etc/samba/smb.conf

    [global]

        ……

        workgroup= WORKGROUP

        security= share

    [movie]

        comment = cang

        path = /cang

        writable = yes

        browseable = yes

        guest ok = yes

    用戶端:#smbclient  -L //192.168.216.16    (檢視

    #smbclient  //192.168.216.16/movie

    smb:\>get  檔案名

    smb:\>put   檔案名

    #mount  -t cifs  //192.168.216.16/movie  /mnt

    #df  -hT

    windows用戶端下:\\192.168.216.16\movie

注:服務端對目錄設權限時,可用chmod設定目錄本身權限,也可在主配置檔案中設定可寫或可讀,兩種配合使用。

5、例:本地使用者通路

        security = user

    [homes]

        comment = Home Directory (可寫%I,%T,%H

        create mode = 0644

        directory mode = 0755

    [music]

        comment =

        path = /music

        write list = zhangsan,@group    (擁有寫權限的清單

    #pdbedit  -a  -u  zhangsan      (将本地使用者轉為samba使用者

    #pdbedit  -x -u  zhangsan       (删除samba使用者

    #pdbedit  -L              (檢視samba使用者

    用戶端:#smbclient  -L //192.168.216.16  -U  zhangsan

    #smbclient  //192.168.216.16/homes  -U zhangsan

    #mount  -t cifs  -o  username=zhangsan,password=123 //192.168.216.16/music  /mnt

    6、例:僅項目組的人對/var/share/devel有寫權限

    #vi  /etc/samba/smb.conf

    write list = @devel(添加此項

    #groupadd  devel

    #useradd  -G devel  dev01

    #passwd  dev01

    #pdbedit  -a -u  dev01

    #chgrp  devel /var/share/devel

    #chmod  2770 /var/share/devel

    例:技術部的人對項目組目錄下檔案隻讀

    #groupadd  tech

    #useradd  -G tech  tech01

    #passwd  tech01

    #pdbedit  -a -u  tech01

    #setfacl  -m g:tech:rx  /var/share/devel

    #setfacl  -m d:g:tech:rx  /var/share/devel

本文轉自 chaijowin 51CTO部落格,原文連結:http://blog.51cto.com/jowin/1656976,如需轉載請自行聯系原作者

繼續閱讀