Linux下samba服务器在企业网络中应用

1. Samba服务基础:

Windows与Linux文件共享的方法,建议使用 Samba 服务器!

Samba应用环境 :

文件和打印机共享;
身份验证和权限设置;
名称解析;
浏览服务。
c/s
server:windows   linux(samba)

client: windows:\\ 网上邻居 net use

            linux:(samba-client)

文件传输:ssh       ftp      smb

SMB协议:Server Message Block,服务消息块

CIFS协议:Common Internet File System,通用互联网文件系统

Samba网站:http://www.samba.org/

Samba官方下载:http://ftp.samba.org/pub/samba/

Smb进程: tcp:smbd 139 445          

udp:nmbd 137 138
smbd:提供对服务器中文件、打印资源的共享访问
nmbd:提供基于NetBIOS主机名称的解析

2. Samba 配置简介:

Samba软件包组成:(包很大)

samba-3.0.33-3.14.el5.i386.rpm
samba-client-3.0.33-3.14.el5.i386.rpm
samba-common-3.0.33-3.14.el5.i386.rpm
samba-swat-3.0.33-3.14.el5.i386.rpm
system-config-samba-1.2.41-5.el5.noarch.rpm

samba这个软件主要提供了 SMB 服务器所需的各项服务程序 (smbd 及 nmbd)、 的文件档、以及其他与 SAMBA 相关的 logrotate 配置文件及开机默认选项档案等;

samba-client 这个软件则提供了当 Linux 做为 SAMBA Client 端时,所需要的工具指令,例如挂载 SAMBA 文件格式的 mount.cifs、 取得类似网芳相关树形图的 smbtree 等等;

samba-common 这个软件提供的则是服务器与客户端都会使用到的数据,包括 SAMBA 的主要配置文件 (smb.conf)、语法检验指令 (testparm) 等等;

samba-swat 端口tcp901, 是通过浏览器对 Samba 进行管理的工具之一。通过 SWAT ,可以在 Samba 允许访问范围内的客户端,用浏览器对服务端的 Samba 进行控制。在线文档的阅览、smb.conf 的确认和编辑,以及密码的变更、服务的重启等等都可以通过 SWAT 来完成,它的直观让 Samba 变得温和化,对那些不喜欢文本界面管理服务器的朋友来说,是一个强大的工具。

system-config-samba图形配置包

samba安装:

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

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

[root@junjie ~]# rpm -qa |grep samba
samba-common-3.0.33-3.7.el5
samba-client-3.0.33-3.7.el5

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

[root@junjie Server]# ls samba*    

samba-3.0.33-3.14.el5.i386.rpm
samba-client-3.0.33-3.14.el5.i386.rpm
samba-common-3.0.33-3.14.el5.i386.rpm
samba-swat-3.0.33-3.14.el5.i386.rpm

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

error: Failed dependencies:

       perl(Convert::ASN1) is needed by samba-3.0.33-3.14.el5.i386

       samba-common = 0:3.0.33-3.14.el5 is needed by samba-3.0.33-3.14.el5.i386

[root@junjie Server]# yum install -y samba samba-swat

Installed: samba.i386 0:3.0.33-3.14.el5 samba-swat.i386 0:3.0.33-3.14.el5

Dependency Installed: perl-Convert-ASN1.noarch 0:0.20-1.1

Updated: samba-client.i386 0:3.0.33-3.14.el5 samba-common.i386 0:3.0.33-3.14.el5

Complete!

samba配置说明:

可以用 rpm ql samba 查看samba的可配置文件

[root@junjie Server]# rpm -qc samba

/etc/logrotate.d/samba
/etc/pam.d/samba
/etc/rc.d/init.d/smb
/etc/samba/smbusers
/etc/sysconfig/samba

[root@junjie Server]# rpm -qc samba-common

/etc/samba/lmhosts
/etc/samba/smb.conf
/etc/security/pam_winbind.conf
默认主配置在/etc/samba/目录下。这个目录下还存放着我们稍后用密码访问时的口令文件。

[root@junjie ~]# ll /etc/samba/

total 20

-rw-r--r-- 1 root root   20 May 29 2009 lmhosts

-rw-r--r-- 1 root root 9733 May 29 2009 smb.conf

-rw-r--r-- 1 root root   97 May 29 2009 smbusers

Samba的服务脚本

/etc/init.d/smb

Samba的配置目录及文件

/etc/samba/

Samba 的主配置文件叫/etc/samba/smb.conf

/etc/sysconfig/samba: 提供启动 smbd, nmbd 时,你还想要加入的相关服务参数。

Samba主配置文件smb.conf详解:

[root@junjie ~]# rpm -ql samba |grep smb.conf

/usr/share/doc/samba-3.0.33/htmldocs/manpages/smb.conf.5.htm

[root@junjie ~]# rpm -ql samba-common |grep smb.conf

/etc/samba/smb.conf
/usr/share/man/man5/smb.conf.5.gz
[root@junjie ~]# cp /etc/samba/smb.conf /etc/samba/smb.conf.bak

[root@junjie ~]# grep -v "^#" /etc/samba/smb.conf |grep –v “^;”

默认主配置在/etc/samba/目录下。这个目录下还存放着我们稍后用密码访问时的口令文件。smb.conf 含有多个段,每个段由段名开始,直到下个段名。每个段名放在方括号中间。配置文件中一行一个段名和参数,段名和参数名不分大小写。除了[global]段外,所有的段都可以看作是一个共享资源。段名是该共享资源的名字,段里的参数是该共享资源的属性。

Samba 安装好后,使用testparm 命令可以测试smb.conf 配置是否正确。使用testparm –v命令可以详细的列出smb.conf 支持的配置参数。

57 [global]全局配置参数:

74         workgroup = MYGROUP

75         server string = Samba Server Version %v

77 ;       netbios name = MYSERVER

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
91         max log size = 50

101         security = user

74行:workgroup:设置所在工作组名称,设定 Samba Server 所要加入的工作组或者域。

75行:server string:服务器描述信息,可以是任何字符串,也可以不填。宏%v 表示显示Samba的版本号。

77行:netbios name:设置Samba Server NetBIOS 名称。如果不填,则默认会使用该服务器的DNS 名称的第一部分。netbios name workgroup 名字不要设置成一样了。

79行:interfaces:设置Samba Server 监听哪些网卡,可以写网卡名,也可以写该网卡的IP 地址

80行:hosts allow = 127. 192.168.1. 192.168.10.1

说明:表示允许连接到Samba Server 的客户端,多个参数以空格隔开。可以用一个IP 表示,也可以用一个网段表示。hosts deny hosts allow 刚好相反。

设置客户机访问授权:一般用在全局配置[global]部分

hosts allow配置项:仅允许特定的客户机
hosts deny配置项:仅拒绝特定的客户机

客户机地址表示形式:以空格分隔多个地址

 主机名或IP地址,例如: 192.168.168.11 或者 prtsvr

 网络地址,例如:173.17. 或者 173.17.0.0/255.255.0.0

例如:hosts allow=172.17.2.EXCEPT172.17.2.50

表示容许来自172.17.2.*.*的主机连接,但排除172.17.2.50

hosts allow=172.17.2.0/255.255.0.0

表示容许来自172.17.2.0/255.255.0.0 子网中的所有主机连接

hosts allow=M1M2

表示容许来自M1 M2 两台计算机连接

hosts allow=@xq

表示容许来自XQ 网域的所有计算机连接

89行:log file设置Samba Server 日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问Samba Server 的机器都单独记录一个日志文件。如果pc1pc2 访问过Samba Server,就会在/var/log/samba 目录下留下log.pc1 log.pc2 两个日志文件。

91行:max log size = 50设置Samba Server 日志文件的最大容量,单位为kB0 代表不限制。

101行:security = user

说明:设置用户访问Samba Server 的验证方式,一共有四种验证方式。

1. share:用户访问Samba Server 不需要提供用户名和口令, 安全性能较低。

2. userSamba Server 共享目录只能被授权的用户访问,Samba Server 负责检查账号和密码

的正确性。账号和密码要在本Samba Server 中建立。

3. server:依靠其他Windows NT/2000 Samba Server 来验证用户的账号和密码,是一种代理

验证。此种安全模式下,系统管理员可以把所有的Windows 用户和口令集中到一个NT 系统

,使用Windows NT 进行Samba 认证, 远程服务器可以自动认证全部用户和口令,如果认证

失败,Samba 将使用用户级安全模式作为替代的方式。

3.       domain:域安全级别,使用主域控制器(PDC)来完成认证。

221         load printers = yes
222         cups options = raw
224 ;       printcap name = /etc/printcap
226 ;       printcap name = lpstat
227 ;       printing = cups

221行:表示是否容许打印机中的所有打印机,在开机时自动加载浏览列表,以支持客户端的浏览功能

224-225行:是用来设置开机时自动加载的打印机配置文件名称和路径

227行:用来指定打印系统的类型

248 [homes]个人主目录配置参数:

249         comment = Home Directories
250         browseable = no
251         writable = yes
252 ;       valid users = %S
253 ;       valid users = MYDOMAIN\%S
comment = Home Directories //主目录注释说明
browseable = no //是否容许其他用户浏览个人主目录,是否被看到
writable = yes //是否容许写入个人目录
valid users = %S //容许登陆的用户,%S 表示当前登陆的用户

255 [printers]打印机配置参数:

256         comment = All Printers
257         path = /var/spool/samba
258         browseable = no
259         guest ok = no
260         writable = no
261         printable = yes

[共享文件]设置:

comment:对共享目录的注释、说明信息

path:共享目录在服务器中对应的实际路径
browseable:该共享目录在“网上邻居”中是否可见

guest ok:是否允许所有人访问,等效于“public”

writable:是否可写,与read only的作用相反

Samba服务设置的读取、写入权限,优先级要低于文件系统中设置的权限

建立Samba用户数据库文件

默认数据库文件位于:/etc/samba/smbpasswd

系统用户帐号 -> Samba用户帐号

smbpasswd -a user1         #添加

smbpasswd -d user1         #禁用

smbpasswd -e user1         #启用

smbpasswd -x user1         #删除

Samba帐号的别名设置

在smb.conf文件中需要启用如下配置

 username map = /etc/samba/smbusers

默认的别名映射文件:/etc/samba/smbusers

配置文件语法检测工具:testparm

状态查看工具:smbstatus

[root@junjie ~]# smbstatus

 

3. Samba客户端访问方法:

使用Windows客户端访问文件共享服务

网上邻居、UNC路径

windows 下:断开连接的方法:注销系统或输入以下命令.

使用Linux客户端访问文件共享服务:smbclient

smbclient命令,查看及登录使用共享

 smbclient -L 192.168.168.1
 smbclient //192.168.168.1/movie  -U user1
smbclient -L //服务器地址 –U smb账号
smbclient  //服务器地址/共享名称 –U smb账号

挂载:

mount命令,将共享目录挂载到本地使用

#mount -o username=vina //192.168.168.1/movie /mnt

#mount –t cifs –o username=smb账号,password=‘密码’//服务器地址/共享资源名称 /挂载点

smbmount //192.168.5.100 /mnt/dir1 –o username=user1

自动挂载:vim /etc/fstab

//192.168.2.100/qq    /mnt/qq  cifs defaults, credentials=/etc/samba/account.txt 0 0

安全控制:
vim /etc/samba/account.txt
chmod 600 /etc/samba/account.txt

4.   Samba服务器配置案例:

samba安装:

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

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

[root@junjie ~]# rpm -qa |grep samba
samba-common-3.0.33-3.7.el5
samba-client-3.0.33-3.7.el5

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

[root@junjie Server]# ls samba*    

samba-3.0.33-3.14.el5.i386.rpm
samba-client-3.0.33-3.14.el5.i386.rpm
samba-common-3.0.33-3.14.el5.i386.rpm
samba-swat-3.0.33-3.14.el5.i386.rpm

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

error: Failed dependencies:

       perl(Convert::ASN1) is needed by samba-3.0.33-3.14.el5.i386

       samba-common = 0:3.0.33-3.14.el5 is needed by samba-3.0.33-3.14.el5.i386

[root@junjie Server]# yum install -y samba samba-swat

Installed: samba.i386 0:3.0.33-3.14.el5 samba-swat.i386 0:3.0.33-3.14.el5

Dependency Installed: perl-Convert-ASN1.noarch 0:0.20-1.1

Updated: samba-client.i386 0:3.0.33-3.14.el5 samba-common.i386 0:3.0.33-3.14.el5

Complete!

[root@junjie ~]# useradd user1

[root@junjie ~]# useradd user2

[root@junjie ~]# echo "123" |passwd --stdin user1

Changing password for user user1.

passwd: all authentication tokens updated successfully.

[root@junjie ~]# echo "123" |passwd --stdin user2

Changing password for user user2.

passwd: all authentication tokens updated successfully.

[root@junjie ~]# smbpasswd -a user1

New SMB password:

Retype new SMB password:

Added user user1.

[root@junjie ~]# smbpasswd -a user2

New SMB password:

Retype new SMB password:

Added user user2.
 

[root@junjie ~]# mkdir /public

[root@junjie ~]# touch /public/p1

[root@junjie ~]# mkdir /soft

[root@junjie ~]# touch /soft/f1

[root@junjie ~]# mkdir /smbuser2

[root@junjie ~]# touch /smbuser2/f1.user2

[root@junjie ~]# chmod 777 /public/ /soft/ /smbuser2/

[root@junjie ~]# ll -d /public/ /soft/ /smbuser2/

drwxrwxrwx 2 root root 4096 Apr 15 18:03 /public/

drwxrwxrwx 2 root root 4096 Apr 15 18:12 /smbuser2/

drwxrwxrwx 2 root root 4096 Apr 15 18:04 /soft/

 

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

89         log file = /var/log/samba/%m.log
91         max log size = 50
101         security = user
289 [public]
290         comment = this public dir
291         path = /public
292         public = yes
293 [smb-user1]
294         comment = this user1's dir
295         path = /soft
296         valid users = user1
297         writable = yes
298 [smb-user2]
299         comment = this user2's dir
300         path = /smbuser2
301         valid users = user2
303         writable = yes
 

#检查语法:

[root@junjie ~]# testparm

Load smb config files from /etc/samba/smb.conf

Processing section "[homes]"

Processing section "[printers]"

Processing section "[public]"

Processing section "[smb-user1]"

Processing section "[smb-user2]"

Loaded services file OK.

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

 
[global]
       workgroup = MYGROUP
       server string = Samba Server Version %v
       passdb backend = tdbsam
       log file = /var/log/samba/%m.log
       max log size = 50
       cups options = raw
 
[homes]
       comment = Home Directories
       read only = No
       browseable = No
 
[printers]
       comment = All Printers
       path = /var/spool/samba
       printable = Yes
       browseable = No
 
[public]
       comment = this public dir
       path = /public
       guest ok = Yes
 
[smb-user1]
       comment = this user1's dir
       path = /soft
       valid users = user1
       read only = No
 
[smb-user2]
       comment = this user2's dir
       path = /smbuser2
       valid users = user2
       read only = No

#重启samba的服务smb

[root@junjie ~]# service smb restart

Shutting down SMB services:                                [ OK ]

Shutting down NMB services:                                [ OK ]

Starting SMB services:                                     [ OK ]

Starting NMB services:                                     [ OK ]

 

#user1登录测试

使用命令关闭user1的连接,接下来使用user2访问测试!

#user2登录测试

在Linux下:查看连接信息和日志信息
#日志信息

 
附录1:源码安装samba服务器:

[root@junjie ~]# ll samba-3.5.14.tar.gz

-rw-r--r-- 1 root root 30368829 Apr 1 10:49 samba-3.5.14.tar.gz

[root@junjie ~]# tar -zxvf samba-3.5.14.tar.gz -C /usr/local/src/

[root@junjie ~]# cd /usr/local/src/samba-3.5.14/source3/

[root@junjie source3]# ls

[root@junjie source3]# ./autogen.sh

[root@junjie source3]# ./configure --help

[root@junjie source3]# ./configure && make && make install

==============================================================

MO files for pam_winbind are installed.

==============================================================
==============================================================

All MO files for Samba are installed. You can use "make uninstall"

or "make uninstallmo" to remove them.

==============================================================

make: warning: Clock skew detected. Your build may be incomplete.

#make installbin && make installman && make revert(可选)

#其它配置略.

附录2:图形化管理samba服务器