基本原理

Samba,是种自由软件,用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网络协定做连结。在目前的版本(v3),不仅可存取及分享SMB的资料夹及打印机,本身还可以整合入Windows Server的网域、扮演为网域控制站(Domain Controller)以及加入Active Directory成员。简而言之,此软件在Windows与UNIX系列OS之间搭起一座桥梁,让两者的资源可互通有无。

Samba是许多服务以及协议的实现,其包括TCP/IP上的NetBIOS(NBT)、SMB、CIFS (SMB的增强版本)、 DCE/RPC或者更具体来说MSRPC(网络邻居协议套件)、一种 WINS服 务器(也被称作NetBIOS Name Server(NBNS))、NT 域协议套件(包括NT Domain Logons、Secure Accounts Manager(SAM)数据库、Local Security Authority(LSA)服务、NT-style打印服务(SPOOLSS)、NTLM以及近来出现的包括一种改进的Kerberos协议与改进的轻型目录访问协议(LDAP)在内的Active Directory Logon服务)。以上这些服务以及协议经常被错误地归类为NetBIOS或者SMB。Samba也能够用于共享打印机。

Samba能够为选定的Unix目录(包括所有子目录)建立网络共享。该功能使得Windows用户可以像访问普通Windows下的文件夹那样来通过网络访问这些Unix目录。

Samba是SMB的一种实现方法,主要用来实现Linux系统的文件和打印服务。Linux用户通过配置使用Samba服务器可以实现与Windows用户的资源共享。守护进程smbd和nmbd是Samba的核心,在全部时间内运行。nmbd程序使得通过企图计算机可以浏览Linux服务器。

配置文件:/etc/samba/smb.conf

案例一

共享名为Public的物理路径为 /abc,权限是所有人可以访问,只有 ro(只读)权限

共享名为Smblisi的物理路径为 /lisi,权限是只有 lisi 有权限进行rw(读写)操作

1.在windows上实现

查询跟samba相关的

[root@uodekoaix Server]# ll samba*

-r--r--r-- 86 root root 17012467 2009-07-23 samba-3.0.33-3.14.el5.i386.rpm //主程序

-r--r--r-- 86 root root 5930356 2009-07-23 samba-client-3.0.33-3.14.el5.i386.rpm //客户端连接服务器的工具

-r--r--r-- 99 root root 9094678 2009-07-23 samba-common-3.0.33-3.14.el5.i386.rpm //测试工具等

-r--r--r-- 86 root root 8628593 2009-07-23 samba-swat-3.0.33-3.14.el5.i386.rpm //web

查询已近安装的

[root@uodekoaix Server]# rpm -qa |grep samba

samba-common-3.0.33-3.14.el5

samba-client-3.0.33-3.14.el5

安装samba主程序

[root@uodekoaix Server]# rpm -ivh perl-Convert-ASN1-0.20-1.1.noarch.rpm //安装所依赖的

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

[root@uodekoaix Server]# netstat -tupln |grep smb //端口

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

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

[root@uodekoaix Server]# netstat -tupln |grep nmb //端口

udp 0 0 192.168.101.1:137 0.0.0.0:* 9432/nmbd

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

udp 0 0 192.168.101.1:138 0.0.0.0:* 9432/nmbd

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

查询安装目录

[root@uodekoaix ~]# rpm -ql samba-common |less

/etc/samba/smb.conf

[root@uodekoaix Server]# vim /etc/samba/smb.conf   //修改配置文件

74 workgroup = MYGROUP

75 server string = Samba Server Version %v

76

77 ; netbios name = MYSERVER

78

79 ; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24

80 ; hosts allow = 127. 192.168.12. 192.168.13.

89 log file = /var/log/samba/%m.log //日志

90 # max 50KB per log file, then rotate

91 max log size = 50 //日志最大限制,如果不限制的话改为0

101 security = user //安全级别(share是匿名访问不安全,一般保持user身份验证是本地账号库,server,domain身份验证通过域里边的dc)

263 [public]

264 comment = this is public

265 path = /abc

266 browseable = yes

267 guest ok = yes

268 writable = no

269 printable = no

270

271 [smbls]

272 comment = this is lisi //描述

273 path = /lisi //指定私用目录路径,以便指定用户可读写

274 browseable = yes

275 guest ok = no //为no,表示该私用目录不供公众用户所共享

276 writable = yes //指定的用户对该私用目录具有写权限

277 printable = no //不允许打印

278 valid users=lisi //指定使用该私用目录的合法用户为lisi,只有fred用户可以访问

[root@uodekoaix ~]# mkdir /abc

[root@uodekoaix zhangsan]# cd /abc

[root@uodekoaix abc]# touch f1.public

[root@uodekoaix ~]# mkdir /lisi

[root@uodekoaix ~]# useradd lisi 增加lisi账号

[root@uodekoaix ~]# cd /lisi

[root@uodekoaix lisi]# ll

总计 0

[root@uodekoaix lisi]# touch f1.lisi

[root@uodekoaix lisi]# smbpasswd -a lisi //先有本地账号,才能创建smb账号

New SMB password:

Retype new SMB password:

Added user lisi.

[root@uodekoaix lisi]# chown lisi.lisi /lisi //更改所有者所有组为lisi

[root@uodekoaix Server]# service smb restart

通过客户端lisi登陆进行验证

clip_image002

clip_image004

查看创建的f1文件

clip_image006

Lisi可以访问public下的内容

clip_image008

Lisi不能在public下创建文件夹等非读操作

clip_image010

验证成功!!!

2.在linux客户端上实现

查询是否安装smbclient工具

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

samba-client-3.0.33-3.14.el5

samba-common-3.0.33-3.14.el5

连接到服务器上

[root@station99 ~]# smbclient -L //192.168.101.1 -U lisi

Password:

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

Sharename Type Comment

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

public Disk this is public

smbls Disk this is lisi

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

lisi Disk Home Directories

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

Server Comment

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

Workgroup Master

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

MYGROUP

查看,上传,下载

[root@station99 ~]# smbclient //192.168.101.1/smbls -U lisi

Password:

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

smb: \> dir

. D 0 Sat Sep 1 08:46:56 2012

.. D 0 Sat Sep 1 08:45:10 2012

f1.lisi 0 Sat Sep 1 08:46:56 2012

38752 blocks of size 262144. 25957 blocks available

smb: \> !dir

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

smb: \> put install.log //上传

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

smb: \> dir

. D 0 Sat Sep 1 11:15:01 2012

.. D 0 Sat Sep 1 08:45:10 2012

f1.lisi 0 Sat Sep 1 08:46:56 2012

install.log A 31360 Sat Sep 1 11:15:01 2012

38752 blocks of size 262144. 25957 blocks available

smb: \> mget f1* //下载

Get file f1.lisi? y

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

smb: \> !dir

anaconda-ks.cfg f1.lisi install.log install.log.syslog

smb: \> quit

案例二、挂载

手工挂载

方式一

[root@station99 ~]# mount -t cifs //192.168.101.1/smbls /mnt/smb -o username=lisi%123

[root@station99 ~]# 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.101.1/smbls on /mnt/smb type cifs (rw,mand) //挂载成功

方式二

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

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

1 LABEL=/ / ext3 defaults 1 1

2 LABEL=/boot /boot ext3 defaults 1 2

3 tmpfs /dev/shm tmpfs defaults 0 0

4 devpts /dev/pts devpts gid=5,mode=620 0 0

5 sysfs /sys sysfs defaults 0 0

6 proc /proc proc defaults 0 0

7 LABEL=SWAP-sda3 swap swap defaults 0 0

8 //192.168.101.1/smbls /mnt/smb cifs defaults,credentials=/etc/samba/f1 0 0

[root@station99 ~]# vim /etc/samba/f1

username=lisi

password=123

[root@station99 ~]# 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.101.1/smbls on /mnt/smb type cifs (rw,mand)

[root@station99 ~]# mount -a

自动挂载

未完,待续。