天天看點

Linux下資源共享服務之samba 的講解!

一、Samba 簡介:

  Samba是在Linux和UNIX系統上實作SMB協定的一個免費軟體,由伺服器及用戶端程式構成。

SMB應用功能:

由上面說明的 SAMBA 發展緣由,可以看出, SAMBA 最初發展的主要目就是要用來溝通Windows 與 Unix Like 這兩個不同的作業平台。最大的好處就是不必讓同樣的一份資料放置在不同的地方,搞到後來都不曉得哪一份資料是最新的!而且也可以透過這樣的一個檔案系統上Linux 與 Windows 的檔案傳輸變得更為簡單!也就是說,可以透過『網絡上的芳鄰』來進行Linux 與 Windows 檔案的傳輸。那麼 SAMBA 可以進行哪些動作呢?

①分享檔案與列印機服務;

③進行 Windows 網絡上的主機名稱解析 (NetBIOS name)

④進行裝置的分享 ( 例如 Zip, CDROM... )

兩個守護程式:smbd 和 nmbd(對用戶端提供NetBIOS名服務)

二、内容講解:

1.挂載CD光牒,安裝samba服務:

[root@gjp99 ~]# mkdir /mnt/cdrom 

[root@gjp99 ~]# mount /dev/cdrom /mnt/cdrom 

mount: block device /dev/cdrom is write-protected, mounting read-only 

[root@gjp99 ~]# cd /mnt/cdrom/Server/ 

[root@gjp99 Server]# ll samba* 

-r--r--r-- 86 root root 17012467 Jul 23  2009 samba-3.0.33-3.14.el5.i386.rpm 

-r--r--r-- 86 root root  5930356 Jul 23  2009 samba-client-3.0.33-3.14.el5.i386.rpm 

-r--r--r-- 99 root root  9094678 Jul 23  2009 samba-common-3.0.33-3.14.el5.i386.rpm 

-r--r--r-- 86 root root  8628593 Jul 23  2009 samba-swat-3.0.33-3.14.el5.i386.rpm

伺服器端:samba-3.0.33-3.14.el5.i386.rpm  samba-common-3.0.33-3.14.el5.i386.rpm 

用戶端:samba-client-3.0.33-3.14.el5.i386.rpm 

通過web頁面管理 :samba-swat-3.0.33-3.14.el5.i386.rpm

[root@gjp99 Server]# rpm -qa |grep samba  查詢已安裝過的軟體包 

samba-common-3.0.33-3.14.el5 

samba-client-3.0.33-3.14.el5

由于samba依賴perl-Convert-ASN1-0.20-1.1.noarch.rpm 

[root@gjp99 Server]# rpm -ivh perl-Convert-ASN1-0.20-1.1.noarch.rpm

warning: perl-Convert-ASN1-0.20-1.1.noarch.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 

Preparing...                ########################################### [100%] 

   1:perl-Convert-ASN1      ########################################### [100%] 

[root@gjp99 Server]# rpm -ivh samba-3.0.33-3.14.el5.i386.rpm 

warning: samba-3.0.33-3.14.el5.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 

   1:samba                  ########################################### [100%]

[root@gjp99 Server]# rpm -ql samba |less

/etc/pam.d/samba    支援pam驗證 

/etc/rc.d/init.d/smb   控制腳本

samba的賬号庫:  /usr/bin/smbpasswd   與本地賬号庫不同

主配置文檔    /etc/samba/smb.conf 

<a href="http://5645432.blog.51cto.com/attachment/201210/11/5635432_1349926742tvMY.png"></a>

[root@gjp99 Server]# netstat -tupln |grep smb 

tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN      19547/smbd          

tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN      19547/smbd          

[root@gjp99 Server]# netstat -tupln |grep nmb 

udp        0      0 192.168.10.99:137           0.0.0.0:*                               19550/nmbd          

udp        0      0 0.0.0.0:137                 0.0.0.0:*                               19550/nmbd          

udp        0      0 192.168.10.99:138           0.0.0.0:*                               19550/nmbd          

udp        0      0 0.0.0.0:138                 0.0.0.0:*                               19550/nmbd

2. windows 客戶機通路samba伺服器

windows xp 配置:

<a href="http://5645432.blog.51cto.com/attachment/201210/11/5635432_1349926767bXlc.png"></a>

<a href="http://5645432.blog.51cto.com/attachment/201210/11/5635432_1349926847ndZE.png"></a>

通路方式:

&lt;1.【網路上的芳鄰】---搜尋計算機

<a href="http://5645432.blog.51cto.com/attachment/201210/11/5635432_1349928049LzeR.png"></a>

&lt;2. 網路上的芳鄰

&lt;3. unc路徑   \\對方位址或名字\共享名字

&lt;4. 映射網絡驅動器

指令行下  net use       檢視 net share

3.編輯主配置文檔

以防配置檔案誤改或者不小心删除,則首先備份一份!

[root@gjp99 Server]# cp /etc/samba/smb.conf  /etc/samba/smb.conf.bak

[root@gjp99 Server]# vim /etc/samba/smb.conf

意思:通路eth0的任意一個位址,都可以通路到eth0

測試:配輔助位址

[root@gjp99 Server]# ifconfig eth0:0 192.168.10.98

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034918J3zg.png"></a>

出于安全考慮,這樣是不安全的

增加此行,限制僅能用192.168.10.99/24的通路

80         interfaces = lo  192.168.10.99/24

測試結果發現:192.168.10.98  和 192.168.10.98  都能通路,說明設定未生效

[root@gjp99 Server]# man 5 smb.conf   //檢視配置文檔

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_13500349223dKQ.png"></a>

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_135003492961Me.png"></a>

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_13500349379QT7.png"></a>

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034941rY3O.png"></a>

[root@gjp99 Server]# service smb restart 

Shutting down SMB services:                                [  OK  ] 

Shutting down NMB services:                                [  OK  ] 

Starting SMB services:                                     [  OK  ] 

Starting NMB services:                                     [  OK  ]

發現通路192.168.10.98 已通路不到,達到我們期望的效果!

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034944ouXi.png"></a>

目前達到隻要能ping通192.168.10.99 ,就能夠通路其samba

用windows 7 通路:

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034946YKv6.png"></a>

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034948Mjt5.png"></a>

測試結果證明

192.168.10.31 已無法通路!僅能192.168.10.1 能夠通路!

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034949ieVD.png"></a>

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034950PqnO.png"></a>

剛才不能通路的ip,已可以成功通路!

[root@gjp99 ~]# ll /var/log/samba/    發現沒有通路日志 

total 12 

drwx------ 4 root root 4096 Aug  3 14:09 cores 

-rw-r--r-- 1 root root 1450 Aug  3 15:09 nmbd.log 

-rw-r--r-- 1 root root 3454 Aug  3 15:38 smbd.log 

[root@gjp99 ~]# vim /etc/samba/smb.conf

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034953QL3j.png"></a>

[root@gjp99 ~]# service smb restart 

Starting NMB services:                                     [  OK  ] 

[root@gjp99 ~]# ll /var/log/samba/    還沒有日志檔案 

-rw-r--r-- 1 root root 1688 Aug  3 16:27 nmbd.log 

-rw-r--r-- 1 root root 3600 Aug  3 16:27 smbd.log

說明需要通路下,才能夠産生!

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034955f4ba.png"></a>

雖然沒進去,說明已經通路了!

[root@gjp99 ~]# ll /var/log/samba/ 

total 16 

-rw-r--r-- 1 root root    0 Aug  3 16:29 192.168.10.1.log   通路時以用戶端的ip為名字進行記錄 

-rw-r--r-- 1 root root 3600 Aug  3 16:27 smbd.log 

-rw-r--r-- 1 root root  151 Aug  3 16:29 xz-20120711gzjd.log   和以用戶端的計算機名稱進行記錄

[root@gjp99 ~]# tail -f /var/log/samba/smbd.log 

  Denied connection from  (192.168.10.31) 

[2012/08/03 15:38:14, 1] smbd/process.c:process_smb(1062) 

  Connection denied from 192.168.10.31 

[2012/08/03 15:38:14, 0] lib/access.c:check_access(327) 

[2012/08/03 16:27:32, 0] smbd/server.c:main(944) 

  smbd version 3.0.33-3.14.el5 started. 

  Copyright Andrew Tridgell and the Samba Team 1992-2008

samba伺服器的安全級别 

share  可匿名通路 

user   身份驗證  samba帳号庫 【本地】 

server  身份驗證  samba帳号庫 【其他伺服器】   

domain 【ads活動目錄資料庫】  身份驗證   dc

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034958MVRL.png"></a>

測試:

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034960Sass.png"></a>

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034962uuGn.png"></a>

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034964AUsC.png"></a>

由于開啟了這行,是以才會一旦進去,就能夠看到列印機和傳真!

三、案例: 

1.要求:

共享名       實體路徑            權限 

public        /pub                任何人 ro 

smbgjp      /gjp                 gjp    rw 

smblzw      /lzw                  lzw     rw

2.準備知識:

本地權限    網絡權限 

相同      相同 

不同      最小 

ro         ro   ---》ro 

rw         ro  ---》ro

3.具體配置:

[root@gjp99 ~]# mkdir /pub /gjp /lzw 

[root@gjp99 ~]# ll -d /pub /gjp /lzw 

drwxr-xr-x 2 root root 4096 Aug  3 17:22 /gjp 

drwxr-xr-x 2 root root 4096 Aug  3 17:22 /lzw 

drwxr-xr-x 2 root root 4096 Aug  3 17:22 /pub

建立賬号,可以不設定密碼,因為通路samba使用的是samba賬号! 

[root@gjp99 ~]# useradd gjp 

[root@gjp99 ~]# useradd lzw

必須有本地賬号,才會有samba賬号!

[root@gjp99 ~]# chown gjp.gjp /gjp 

[root@gjp99 ~]# chown lzw.lzw /lzw 

drwxr-xr-x 2 gjp  gjp  4096 Aug  3 17:22 /gjp 

drwxr-xr-x 2 lzw  lzw  4096 Aug  3 17:22 /lzw 

為了通路時有提示資訊,是以在每個目錄中設定了相應的檔案

[root@gjp99 ~]# cd /gjp 

[root@gjp99 gjp]# touch f1.gjp 

[root@gjp99 gjp]# cd /lzw 

[root@gjp99 lzw]# touch f1.lzw 

[root@gjp99 lzw]# cd /pub 

[root@gjp99 pub]# touch f1.public

samba 賬号的建立:

[root@gjp99 ~]# vim /etc/samba/smb.conf 

265 [public] 

266         comment = public dir

267         path = /pub 

268         browseable = yes 

269         guest ok = yes 

270         writable = no 

271         printable = yes 

272 [smbgjp]273         comment = gjp share  dir 

274         path = /gjp 

275         browseable = yes 

276         guest ok = no 

277         valid users = gjp 

278         writable = yes 

280 [smblzw]281         comment = lzw share  dir 

282         path = /lzw 

283         browseable = yes 

284         guest ok = no 

285         valid users = lzw 

286         writable = yes

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034967is2q.png"></a>

必須事先建立好本地賬号,才能建立smb賬号!

[root@gjp99 pub]# smbpasswd -a gjp  

New SMB password:輸入密碼:123 

Retype new SMB password: 

Added user gjp. 

[root@gjp99 pub]# smbpasswd -a lzw 

New SMB password: 

Added user lzw. 

[root@gjp99 pub]# service smb restart 

用一個賬号通路過之後,再次通路時,最好登出下!

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034975lCEQ.png"></a>

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034977KTGO.png"></a>

用自己的賬号登入進去,rw權限可以實作!屬于自己的私有空間!可以進行任意操作!

用lzw賬号登入:

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034986SLG6.png"></a>

把smb.conf 檔案中public中的列印機那行去掉!

[root@gjp99 pub]# service smb restart

在用lzw賬号登入:(檢視public有什麼不同)

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_1350034988rpVg.png"></a>

<a href="http://5645432.blog.51cto.com/attachment/201210/12/5635432_13500349900UxQ.png"></a>

 4.用linux系統作為samba用戶端進行通路:

[root@mail ~]# ifconfig 

eth0      Link encap:Ethernet  HWaddr 00:0C:29:F9:1C:6F  

          inet addr:192.168.10.2  Bcast:192.168.10.255  Mask:255.255.255.0

[root@mail ~]# ping 192.168.10.99 

PING 192.168.10.99 (192.168.10.99) 56(84) bytes of data. 

64 bytes from 192.168.10.99: icmp_seq=1 ttl=64 time=2.34 ms 

64 bytes from 192.168.10.99: icmp_seq=2 ttl=64 time=0.394 ms

檢視是否安裝了smb用戶端:

[root@mail ~]# rpm -qa |grep samba 

用賬号gjp登入測試: 

[root@mail ~]# smbclient -L \\192.168.10.99 -U gjp 

Password: 

Domain=[GJP99] OS=[Unix] Server=[Samba 3.0.33-3.14.el5]

    Sharename       Type      Comment 

    ---------       ----      ------- 

    public          Disk      public dir 

    smbgjp          Disk      gjp share  dir 

    smblzw          Disk      lzw share  dir 

    IPC$            IPC       IPC Service (Samba Server Version 3.0.33-3.14.el5) 

    gjp             Disk      Home Directories 

    Server               Comment 

    ---------            -------

    Workgroup            Master 

    ---------            ------- 

    MYGROUP              GJP99 

    WORKGROUP            PC-201203120919

[root@mail ~]# smbclient //192.168.10.99/smbgjp -U gjp 

Domain=[GJP99] OS=[Unix] Server=[Samba 3.0.33-3.14.el5] 

smb: \&gt; dir 

  .                                   D        0  Fri Aug  3 17:58:40 2012 

  ..                                  D        0  Fri Aug  3 17:22:35 2012 

  f1.gjp                                       0  Fri Aug  3 17:31:46 2012

        38752 blocks of size 262144. 27325 blocks available 

smb: \&gt; ?      //下面都是ftp指令 

?              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           

md             mget           mkdir          more           mput           

newer          open           posix          posix_open     posix_mkdir    

posix_rmdir    posix_unlink   print          prompt         put            

pwd            q              queue          quit           rd             

recurse        reget          rename         reput          rm             

rmdir          showacls       setmode        stat           symlink        

tar            tarmode        translate      unlock         volume         

vuid           wdel           logon          listconnect    showconnect    

!             

smb: \&gt; dir   顯示遠端 

smb: \&gt; !dir   顯示本地 

Desktop                     extmail-1.2.tar.gz 

Maildir                     extman-1.1.tar.gz 

Unix-Syslog-1.1                 install.log 

Unix-Syslog-1.1.tar.gz             install.log.syslog 

anaconda-ks.cfg                 mbox 

courier-authlib-0.63.1.20111230.tar.bz2  postfix-2.8.2.tar.gz 

smb: \&gt; put mbox    上傳檔案 

putting file mbox as \mbox (28.5 kb/s) (average 28.5 kb/s) 

  .                                   D        0  Fri Aug  3 18:44:04 2012 

  f1.gjp                                       0  Fri Aug  3 17:31:46 2012 

  mbox                                A     1399  Fri Aug  3 18:44:04 2012

        38752 blocks of size 262144. 27325 blocks available

smb: \&gt; mget f1*   批量下載下傳檔案 

Get file f1.gjp? y 

getting file \f1.gjp of size 0 as f1.gjp (0.0 kb/s) (average 0.0 kb/s) 

smb: \&gt; !dir 

Desktop                     extman-1.1.tar.gz 

Maildir                     f1.gjp 

extmail-1.2.tar.gz 

smb: \&gt; quit   退出

[root@mail ~]# mount -t cifs //192.168.10.99/smbgjp /mnt/smb -o username=gjp%123 

[root@mail ~]# mount 

/dev/sda2 on / type ext3 (rw) 

proc on /proc type proc (rw) 

sysfs on /sys type sysfs (rw) 

devpts on /dev/pts type devpts (rw,gid=5,mode=620) 

/dev/sda1 on /boot type ext3 (rw) 

tmpfs on /dev/shm type tmpfs (rw) 

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) 

sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) 

//192.168.10.99/smbgjp on /mnt/smb type cifs (rw,mand)挂載成功

[root@mail ~]# umount /mnt/smb 

[root@mail ~]# vim /etc/fstab

增加此行:

//192.168.10.99/smbgjp  /mnt/smb                cifs    defaults,username=gjp%123 0 0

[root@mail ~]# mount -a 

//192.168.10.99/smbgjp on /mnt/smb type cifs (rw,mand)

可以實作,但是這樣不安全,如果有人檢視/etc/fstab,則能夠看到使用者名和密碼!

把密碼放到一個檔案中:

//192.168.10.99/smbgjp  /mnt/smb             cifs    defaults,credentials=/etc/samba/f1 0 0

[root@mail samba]# vim f1

username=gjp 

passwd=123

[root@mail samba]# mount -a 

[root@mail samba]# mount 

本文轉自 gjp0731 51CTO部落格,原文連結:http://blog.51cto.com/guojiping/1022373

繼續閱讀