一、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>
通路方式:
<1.【網路上的芳鄰】---搜尋計算機
<a href="http://5645432.blog.51cto.com/attachment/201210/11/5635432_1349928049LzeR.png"></a>
<2. 網路上的芳鄰
<3. unc路徑 \\對方位址或名字\共享名字
<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: \> 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: \> ? //下面都是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: \> dir 顯示遠端
smb: \> !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: \> 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: \> 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: \> !dir
Desktop extman-1.1.tar.gz
Maildir f1.gjp
extmail-1.2.tar.gz
smb: \> 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