Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2279862
  • 博文数量: 668
  • 博客积分: 10016
  • 博客等级: 上将
  • 技术积分: 8588
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-29 19:22
文章分类

全部博文(668)

文章存档

2011年(1)

2010年(2)

2009年(273)

2008年(392)

分类:

2008-08-13 13:19:17

前断时间我们的开发机器硬盘坏了,修复后原来的文件无法再共享了,重新配置了samba,这篇文章是同事总结的,呵呵。好东西就自己收藏一下。
UNIX或者LINUX 服务器上安装 samba 服务可以实现与 Windows 系统的文件共享和打印机共享。

关于Samba

有关 samba的资料网上很多,下面是我从网上找的一些关于samba的介绍:

Samba 组织的目标 —— Opening Windows To A Wider World 。他们之间的数据传输使用 SMB(Service Message Block) 协议 . 这是一个在传输层之上的协议 所以他可以支持很多不同异构系统的网络互联 比如 Linux,Solaris,Windows ),Samba 之所以能够工作 因为 SMB 协议模仿了 Windows 内核的文件和打印共享协议。微软已经将SMB改名为公共因特网文件系统(CIFS,Common Internet File System ),并打算把它设计为Internet的标准协议。这在一定程度上是由于它想与最初的基于NetBIOS的SMB保持一定的距离。NetBIOS是Windows 网络的一个伟大的工具,Microsoft使用NetBIOS实现了一个网络文件/打印服务系统,但是为LAN设计的它却注定了不能路由。  Samba执行了SMB/CIFS的一个版本,这个版本在很大程度上与大多数的Windows版本兼容。但是,无论是从Windows连接到Linux还是从Linux连接到Windows机器,Samba系统对于实现文件和打印服务来说总是很稳定的。我们可以通过Windows的网络邻居来轻松访问安装了Samba的UNIX/LINUX服务器。(更多的文档见 )。

一、安装 samba

1.          下载 samba for Solaris 的安装软件包: samba-3.0.10-sol9-sparc-local.gz

2.          解压并安装samba软件包:

  #gunzip samba-3.0.10-sol8-sparc-local.gz

#pkgadd d samba-3.0.10-sol8-sparc-local

安装完毕后,到默认安装目录/usr/local下可以看到安装的软件包samba目录。

、配置 samba

1.    创建 samba 配置文件

samba安装完成后 需要手工在 samba安装 目录 lib 目录下创建文件名为 smb.conf 的配置文件。安装程序不会创建该配置文件。

1.1 smb.conf文件的格式

smb.conf文件的格式有多个段构成,每段由段名开始,段名放在方括号中,下面是smb.conf文件的例子:

# cat /usr/local/samba/lib/smb.conf

# Samba config file created

# Date: 2006/03/25

# HuYingguang

[global]

workgroup = WORKFLOW

server string =  huyg  5.9

log file = /usr/local/samba/var/log.%m

max log size = 50

security = user

smb passwd file = /usr/local/samba/smbpasswd

unix charset =GBK

[emip]

comment = Network Logon Service

path = /export/home2/emip

writeable = yes

browseable = yes

guest ok = yes

[global] 段是全局变量 它设置了要加入的工作组 这里是 WORKFLOW),NetBIOS 安全参数 security 等参数 除了 [global] 段外 所有的段都可以看作是一个共享资源段可以有多组 段名是该共享资源的名字 而段里的参数就是共享资源的属性。通过设置它的参数可以设置共享目录路径和访问控制权限等。

1.2 下面看看一些重要 参数 的说明:

全局段参数 [global]

workgroup 设置 samba 服务器所要加入的工作组的名称 , 另外如果在设置了 security = domain, workgroup 可以指定域名。

     netbios name   指定 samba NetBIOS ,即 设置出现在“网上邻居”中的主机名。默认情况下,则使用真正的主机名。

     server string 设置服务器主机的说明信息 缺省为 samba %v, samba 尾随它的版本号

     hosts allow    设置允许什么样的 IP 地址的主机访问 Samba 服务器。默认的情况下 hosts allow 选项被注释 表示允许所有 IP 地址的主机访问。

     guest account 设置当访问那些被设置了“guest ok=yes”参数的资源时所要使用的帐号名。所设的帐号必须是在/etc/passwd文件中存在的用户。

     log file = /usr/local/samba/var/log.%m    设置日志文件。“% m”表示 Samba服务器为每一个连接的机器使用一个单独的日志文件,指定文件的位置,名称。Samba会自动将%m转换成连接主机的NetBios名。

     max log size        指定日志文件的最大容量(KB),设置为0,表示没有限制。默认值为5000。

     max disk size 设置能够共享的最大磁盘空间 ( MB ) ,默认值为0,表示不作任何限制。

     max open file 设置同一客户端最多能打开文件的数目,默认值为10000个。

     security       设置Samba服务器的安全等级,默认 user。

security 共有四种选项设置:

                   share     用户不需要帐号及密码可以登陆Samba服务器。

user   由提供服务的Samba服务器检查用户帐号及密码。

server  检查帐号及密码的工作可指定另一台Samba服务器负责。

domain  需要指定一台Windows NT/2000/XP服务器(通常为域控制器),以验证用户输入的帐号及密码。

     password server     如果安全等级为“server”或“domain”,则使用此选项指定要验证密码的主机名。

     encrypt passwords  设置当Samba客户端将帐号及密码传送到服务器端时,是否采取密码加密的方式,默认值为no。

     smb passwd file     设置在Samba服务器上存放加密的密码文件的位置(Samba服务器与 Unix是 采用不同的密码文件)。

     config file    设置此项可以用另一个配置文件覆盖缺省的配置文件,如果文件不存在,该项无效。这使得samba的配置更灵活,让一台Linux /Unix 服务器模拟多台不同配置的NT 服务器 。可以 让访问 samba 服务器的客户机使用 自己的配置文件 ,如: 先在 /usr/localsamba/lib目录 下为 host1 配置一个名为 smb.conf.host1 的文件 ,然后 在缺省的 smb.conf 里加这行 config file = /usr/localsamba/lib/smb.conf.%m。这样host1登录samba服务器时就会使用smb.conf.host1配置文件,其他客户端则使用默认的配置文件。

     d eadtime 设置该 参数用于切断一个不活动的连接。当一个没有打开任何文件的连接的不活动的时间超过datetime指定的的时间后,samba就自动切断这个连接。默认的值是零,samba不自动切断任何连接。(值为整数,单位分钟)

共享段参数 emip]

     comment   对共享的描述 可以是任意的字符串

     path      设置共享资源的服务路径 %u %m 这样的宏来代替路径里的 unix 用户和客户机的 Netbios 名。例如 path = /home/emip/%u这样 用户在连接到这共享时具体的路径会被他的用户名代替。

     writeable设置指定的共享路径是否可以写,yes或no

     browseable     指定共享是否可以浏览,默认是yes 

     available指定共享资源是否可用,默认是yes,设为no则关闭该资源的共享服务,用户无法连接到该资源上。

     execpostexec   root preexecroot postexec  指定在用户与共享资源在连接和断开时在服务器上执行一个命令,这两对参数很有用,区别是root preexec 和root preexec 是以root的权限运行。 

load printers   指定在samba启动时是否自动把printcap文件里的所有打印机加载,从而可以在浏览清单里看到所有的打印机,默认是yes 

printable   指定用户能不能打印,默认是no,要让一个打印共享可以让用户使用,必须设为yes 

print name   打印机名  

printer drive r  打印机的驱动类型,这个参数可以让WINDOWS知道远程打印机上的类型,具体的值可以参考在WINDOWS里安装打印机出现选择打印机类型时的打印机类型。

admin users    参数用来赋予某用户为共享资源的管理员权限。缺省是admin users = no

valid users    指定共享资源的有效用户,即允许访问该资源的用户。多个用户用 逗号分隔

invalid users 指定不允许访问该共享资源的用户

max connections     指定一个服务的最大连接数目

samba安装目录:samba/doc/samba/examples/smb.conf.default文件中有详细的参数说明。

2.    测试Samba配置文件格式是否正确

设置好smb.conf文件之后,执行下面的命令测试smb.conf的设置语法是否正确。

# cd /usr/local/samba/bin/testparm

Load smb config files from /usr/local/samba/lib/smb.conf

Processing section "[emip]"

Loaded services file OK.

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

出现如上信息表示smb.conf文 配置 正确。

3.    设置 samba密码文件

如果配置文件中 samba服务器的 安全等级设为:security = user就需要设置smb password file参数并创建参数值所指定的密码文件。创建方法如下:

#cat /etc/passwd | mksmbpasswd.sh  >  / usr/local /samba/smbpasswd

此命令将未加密的/etc/passwd文件转换成加密的smbpasswd文件。

# chmod  500  /etc/samba

# chmod  600  /etc/samba/smbpasswd

创建完成之后再利用 smbpasswd 命令 设置 / usr/local/samba/smbpassword 文件中每个帐号所使用的密码。下面以 emip用户 为例。注意:此处设置的密码是 emip 要访问Samba服务器的密码,并非登录 Solaris 主机的密码,默认设置 UNIX password  sync=YES , 则登录 Solaris 主机的密码将改变,与Samba服务器的密码一致。如果希望这两个密码不一致,则设置 UNIX password sync=NO

root@smb_server  root]# smbpasswd emip

New SMB password: 此处输入密码

Retype SMB password: 重新输入密码

三、Samba服务器的启动与停止

1.    修改启动shell脚本

samba server 服务是 3 个守护进程组成:

nmbd 进程  Netbios 名称服务器 , 该进程使用 UDP 协议提供 Netbios 名称服务和浏览支持,处理命名注册和决策请求。该进程应当是被首先启动。

smbd 进程  SMB 服务器,使用 TCP 协议给 SMB 客户提供文件和打印服务;应当在 nmbd 进程后立即启动。

Winbindd 进程 当 Samba 服务器是 windows NT ADS 域中的成员时,此时当启动该守护进程。

修改配置文件路径和服务器应用程序进程为正确的位置,并加入启动 / 停止成功的信(注意启动的先后顺序):

/etc/init.d/samba 文件中 start stop 部分:

start)

        [ -f /etc/sfw/smb.conf ] || exit 0

        /usr/sfw/sbin/smbd -D

        /usr/sfw/sbin/nmbd -D

        ;;

stop)

        pkill smbd

        pkill nmbd

修改为:

start)

        [ -f / usr/local/samba/lib/ smb.conf ] || exit 0

        /usr/local/samba/sbin/smbd -D   && echo "smbd started."

        /usr/local/samba/sbin/nmbd D  && echo "nmbd started."

            /usr/local/samba/sbin/winbindd  && echo "winbindd started."

        ;;

stop)

        pkill smbd  && echo "smbd stoped."

        pkill nmbd  && echo "nmbd stoped."

pkill winbindd   && echo "winbindd stoped."

2.    启动/停止samba服务器

执行下面的命令来启动Samba服务器:

# /etc/init.d/samba start

执行下面的命令来停止Samba服务器:

# /etc/init.d/samba stop

四、 Samba 服务管理配置工具

1.    Samba实用组件

Samba 提供了几个实用的组件 位于 /usr/local/samba/bin 目录下面 ): 

smbclient   SMB 客户程序 用来存取 SMB 服务器上的共享资源  

testprns        测试服务器上打印机访问的程序  

testparms   测试 Samba 配置文件的正确性的工具  

smbstatus   工具可以列出当前 Samba 服务器上的连接  

smbtree     工具来显示共享目录树形结构。

Smbpasswd   工具用来设定用户密码; 

swat        samba Web 管理工具

通过这些工具我们可以更好的管理配置samba服务器。

例如:

#smbpasswd a username 添加访问的共享资源的用户

#smbclient -L hostname 显示samba server上的共享资源

2.    web页面管理配置工具swat

这个页面管理工具可以配置几乎所有的Samba参数,提高了Samba的使用便捷性和易用性。在首页它还提供了命令和参数的帮助文档手册。

Samba Web 管理工具 (SWAT) 是一个通过 inetd 运行的服务程序。 因此, 需要它加入inet.d守护进程:

#Vi /etc/services

加入 swat            901/tcp

#vi /etc/inetd.conf

加入 swat stream tcp nowait/400 root /usr/local/samba/bin/swat swat

修改重新启动 /usr/sbin/inetd 守护进程 , 这里的 Swat 使用了 TCP901 端口监听,在浏览输入: 进入 web 管理页面。 您将首先使用系统的 root 帐号登录。只要成功 地登录进了 Samba 配置页面,就可以浏览系统的文档,或从 Globals( 全局 ) 选项卡开始配置了。

阅读(1722) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~