分类:
2009-06-04 15:23:33
我们常常在Windows之间通过局域网来访问共享目录,在Solaris和Windows之间,可以借助samba来实现Windows到Solaris的访问。Solaris 9和10的发行版本中已经自带了samba,不需要再安装,但在Solaris 8以及之前的版本中,如果要使用samba,需要先安装。安装包可从sunfreeware网站上下载。
1、samba的配置文件在/etc/sfw目录中,有一个smb.conf-example文件,是配置示例,可以参照这个文件进行需要的配置,自己手动创建一个smb.conf文件:
下面是一个配置文件例子(更详细的可查看smb.conf-example):
[global]
workgroup = MYGROUP
netbios name = cat
server string = Samba Server
security = user
[share]
comment = Share Directories
browseable = yes
writable = yes
available = yes
path = /export/home/smbshare
create mask = 0644
directory mask = 0755
[home]
comment = Home Directories
browseable = yes
writable = yes
available = yes
path = /export/home/%u
create mask = 0644
directory mask = 0755
说明:
[global]:
表示全局配置,这个是必须有的
workgroup = MYGROUP:
在windows中显示的工作组名称,可自定义
netbios name = cat:
所显示的计算机名,一般使用Solaris的hostname就可以,也可自定义
server string = Samba Server:
描述说明,在windows中局域网查看时会显示,可自定义
security = user:
可设置为share或者user,设置为share时,为向所有人开放,即不需要输入用户名密码就可以登录浏览,如果设置为user,则需要使用账户才能登录。关于share方式的共享,在后面详述
[share]:
在windows的资源管理器中访问该samba服务器时可看到的文件夹名称,名为share,除[global]外,其他的[xxx]都可看成是一个共享资源
comment = Share Directories:
注释,可自定义
browseable = yes:
共享目录是否可见,yes或者no,设置为no时,windows资源管理器中看不到该目录,但仍可以输入路径访问
writable = yes:
共享目录是否可写,yes或者no,writable也可写成read only,read only = no表示可写,但需要注意登录的账号必须拥有目录本身的可写权限才能生效,也就是说如果目录的permission为rwxr-xr-x,owner为root,那么即使这里writable = yes,也只有root账号访问samba时才能有写权限,其他账号登录时不可写
available = yes:
共享目录是否可用,yes或者no,设置为no时,改共享目录不可访问,如果不设置此参数,默认为可用
path = /export/home/smbshare:
目录路径
create mask = 0644:
创建文件时,文件的permission,为rw-r--r--,如果不设置,缺省值为rwxr--r--
directory mask = 0755:
创建目录时,目录的permission,为rwxr-xr-x
[home]:
同上[share]
path = /export/home/%u:
这里的%u表示登录samba的用户名,如果登录用户名为user1,那么路径就是/export/home/user1,那么当user1用户打开home目录时,显示的就是自己在Solaris上的home目录内容。类似的参数有:
%S = 当前服务名;
%P = 当前服务的根路径;
%u = 当前服务的用户名;
%g = 给定%u的所在的主工作组名;
%H = 给定的%u的宿主目录;
%v = Samba 版本号;
%h = 运行Samba的机器的主机名;
%m = 客户机的NETBIOS名;
%L = 服务器的 NetBIOS 名;
%T = 当前的日期和时间;
2、设置为share方式的共享,smb.conf如下:
[global]
workgroup = MYGROUP
netbios name = cat
server string = Samba Server
security = share
[share]
comment = Share Directories
browseable = yes
writable = yes
available = yes
path = /export/home/smbshare
create mask = 0644
directory mask = 0755
guest ok = yes
guest account = smbuser
红色标注的字段为不一样的地方,当设置security = share时,需要开放guest访问权限,即共享资源的设置中必须要有guest ok = yes,否则无法访问。
最后一行的guest account = smbuser,表示匿名登录samba时,以指定的smbuser账户登录。如果不设置,那么samba将以nobody账户登录。例子中的smbuser为Solaris中已存在的账户,通过smbpasswd命令添加到samba账户中。
3、添加samba账户
访问samba时使用的账户必须要是Solaris中已经存在的账户,但是samba使用的passwd文件和Solaris的passwd是分开的,需要通过smbpasswd命令进行添加,该命令位于/usr/sfw/bin目录下。如果smbuser这个账户是Solaris中已有的,添加为samba账户:
增加账户
# /usr/sfw/bin/smbpasswd -a smbuser
启用账户
# /usr/sfw/bin/smbpasswd -e smbuser
禁用账户
# /usr/sfw/bin/smbpasswd -d smbuser
删除账户
# /usr/sfw/bin/smbpasswd -x smbuser
更改smbuser用户密码
# /usr/sfw/bin/smbpasswd smbuser
增加账户时需要设置密码,这个密码与Solaris的账户密码可以不同。samba的passwd文件位于/etc/sfw/private/smbpasswd。
4、启动samba服务
samba服务的启动脚本位于/etc/init.d/samba,内容如下:
#!/sbin/sh
#
# Copyright (c) 2001 by Sun Microsystems, Inc
# All rights reserved.
#
#ident "@(#)samba 1.1 01/09/24 SMI"
case "$1" in
start)
[ -f /etc/sfw/smb.conf ] || exit 0
/usr/sfw/sbin/smbd -D
/usr/sfw/sbin/nmbd -D
;;
stop)
pkill smbd
pkill nmbd
;;
*)
echo "Usage: $0 { start | stop }"
exit 1
;;
esac
exit 0
启动samba服务:
# /etc/init.d/samba start
停止samba服务:
# /etc/init.d/samba stop
每次修改了smb.conf配置文件,需要重启samba服务以生效。
5、使用过程中发现,如果使用Solaris 9自带的samba,在设置security = user时,可能无法使用账户登录,在Windows xp中访问时提示:
\\IP is not accessible. You might not have permission to use this network resource. Contact the administrator of this server to find out if you have access permissions.
The account is not authorized to log in from this station.
该问题未找到解决办法,不过我从sunfreeware网站上下了个samba-3.2.4,重新安装配置后,便可以正常使用用户名密码登录了,可能是Solaris 9自带的samba有问题。Solaris 10下未测试。
如果使用安装的samba,文件的路径会不一样:
samba的安装目录为/usr/local/samba
smbpasswd等执行文件位于目录/usr/local/samba/bin
保存账户信息的smbpasswd文件位于目录/usr/local/samba/private
samba的服务监听程序位于目录/usr/local/samba/sbin,这个需要修改/etc/init.d/samba的启动脚本,将其中的/usr/sfw/sbin替换为/usr/local/samba/sbin
部分lib文件位于目录/usr/local/samba/lib,如果使用samba时提示找不到某些lib文件,可在/usr/lib下做个link