前断时间我们的开发机器硬盘坏了,修复后原来的文件无法再共享了,重新配置了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服务器。(更多的文档见www.samba.org )。
一、安装
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则关闭该资源的共享服务,用户无法连接到该资源上。
exec 和 postexec 、root preexec 和 root 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
端口监听,在浏览输入:
http://x.x.x.x:901
进入
web
管理页面。
您将首先使用系统的
root
帐号登录。只要成功
地登录进了
Samba
配置页面,就可以浏览系统的文档,或从
Globals(
全局
)
选项卡开始配置了。