一。 关于Samba是什么,我就只讲一句了:提供Unix和Windows之间的文件和打印机共享服务,也能作为client访问网络中其它Windows
系统上的共享文件.Solaris8默认并没有安装SAMBA,而Solairs10 Jan/2006之后的都已经默认安装了Samba3.0,只要简单的配置就可以成为
Samba Server。Samba 服务器包含两个Daemon,smbd和nmbd。smbd是 samba的内核,是建立对话,验证客户和提供文件系统和打印服务
的基础;nmbd则处理所有的名字注册和解析请求,实现了网络浏览的功能;它的任务是向局域网广播Samba服务器所提供的服务;
nmbd使Samba服务器显示在windows操作系统的网络邻居中,允许用户浏览可以通过samba使用的资源。
二。SAMBA服务关联文件结构
目录&文件 说明 其它
/etc/sfw/smb.conf-example Samba 配置文件示例 系统自带,是smb.conf的示例文件
/etc/sfw/smf.conf Samba 配置文件 系统自己没有这个文件,
需要从/etc/sfw/smb.conf-example拷贝或者手工创建这个文件
/usr/sfw/bin/smb(*) Bin工具 smbcacls, smbcontrol
smbpasswd , smbtar
smbtree, smbsh , smbclient
smbspool, smbstatus, smbcquotas
/var/samba/log 默认samba日志目录
/etc/init.d/samba samba管理命令 Solaris10已改为更简便的SVC服务管理方式
三。SAMBA設定
Solaris 10
Solaris10的samba服务默认不会启动
a 查看SAMAB是否已经启动?
#svcs -l samba
…
state: online
...
如果是offline的话,#svcadm enable samba
b SAMBA配置文件设定
#vi /etc/sfw/smb.conf
(没有的话就:#cp /etc/sfw/smb.conf-example /etc/sfw/smb.conf复制sample过来修改)
********************************************
SMB.CONF
********************************************
[global]
workgroup = WORK1 --> (1)
server string = Samba Server --> (2)
security = user --> (3)
encrypt passwords = yes --> (4)
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192 --> (5)
; interfaces = 192.168.12.2/24 192.168.13.2/24 --> (6)
map to guest = Bad User --> (7)
guest ok = Yes
coding system = euc --> (8)
client code page = 932 --> (9)
(1) 工作组指定,自己按要求看着弄吧.
(2) Windows 的网上邻居,或者我的网络里,用来表示这个共享目录的comment,property.
(3) samba工作模式.
user: 用户模式,也就是Samba是用户连入模式,连接到samba的时候需要密码验证
share: 共享模式,对任何访问这个samba地址的client来说,都是完全开放的. 这次我就弄这个
domain: domain认证模式,我没用过...
(4) 不显示真实密码设置. 就是*****的方式显示密码
(5) 网络性能设置.socket参数,buffer大小等.
(6) 通常不用管这个,当服务器启动了2个 NIC (俗称网卡)的时候,需要指定哦! “; “注释掉.
(7) 当(3)的值为share以为的时候,才有效。sguest用户访问设置,有3个选项
Never :密码不正确的login都拒绝 (默认值是Never!)
Bad User: 密码不正确的登陆被拒绝,如果这个用户不存在则会指定guest accout的用户来登陆
Bad Password:密码不正确的登陆被拒绝而且指定guest accout的用户来登陆
要小心哦,这个时候只要是密码不对都被用guest accout登陆哦!
(8) Encoding,不再详细介绍了。。。 euc,sjis, cap, utf8 etc...
(9) Windows code page 指定,比如中文是2312,日語是932
下面是共享目录设定:
#=========== Share Definitions ============
# Un-comment the following and create the netlogon directory for Domain Logons
[samba] ; [SAMBA Dir Name]
comment = Sun T2K Samba Dir ; comment
browseable = yes ; browseable = yes/no
writable = yes ; writable = yes/no
path = /export/home2/ws ; path = 服务器本地要共享路径
guest ok = yes ; guest ok = yes/no 是否无IP限制,可以随意访问
create mask = 0777 ; create mask = 上传或创建文件的属性
directory mask = 0777 ; directory mask = 上传或创建文件目录的属性
… …
********************************************
c 设置好了就,重新启动SAMBA服务,使得上面的smb.conf的修改内容得以刷新
#svcadm restart samba
Solaris 8
由于Solairs8默认没有安装samba,那就比较恶心要手动自己装了,而且还少了很多必要的软件。
具体请参考:
a http://www.sunfreeware.com这里,把下面的软件都下载了先!(很多吧?!可以没办法!一个字:慢慢下!)
coreutils-8.2-sol8-sparc-local , db-4.7.25.NC-sol8-sparc-local
gcc-3.4.6-sol8-sparc-local , gmp-4.2.1-sol8-sparc-local
krb5-1.7-sol8-sparc-local, libiconv-1.13.1-sol8-sparc-local
libintl-3.4.0-sol8-sparc-local, libtool-2.2.6b-sol8-sparc-local
ncurses-5.6-sol8-sparc-local, openldap-2.4.16-sol8-sparc-local
openssl-0.9.8l-sol8-sparc-local, popt-1.14-sol8-sparc-local
readline-5.2-sol8-sparc-local, samba-3.4.2-sol8-sparc-local
sasl-2.1.21-sol8-sparc-local, zlib-1.2.3-sol8-sparc-local
上面是2010。1。18日的文件状况,如果有最新版本就下最新版本,脑子不要太死哦!
samba的下载说明请参考: (!请注意x86和sparc版本!)
http://www.sunfreeware.com/programlistsparc8.html#samba
b 把刚才下好的软件安装!
注意其中有依赖关系,方正gcc要先装。而gcc安装需要:libiconv and libintl.
我大概列举下:
libintl-3.4.0-sol8-sparc-local.gz needs libiconv
krb5-1.7-sol8-sparc-local.gz needs openssl and ncurses
openldap-2.4.16-sol8-sparc-local.gz needs openssl, libtool, sasl, db-4.7.25.NC
libtool needs coreutils
coreutils-8.2-sol8-sparc-local.gz needs gmp
gcc-3.4.6 needs libiconv and libintl.
samba-3.4.2以外的都装好了,再装samba!
为了方便不知道gz怎么解压,pkgadd不会的人,例举下:
#gunzip libiconv-1.13.1-sol8-sparc-local.gz
#pkgadd -d libiconv-1.13.1-sol8-sparc-local (-d 是指定当前目录的pkg安装,否则你就都放在sfw/spool里巴)
c SMB.CONF修改,修改内容参见solaris10的 这部分,这里只讲solaris8下,
安装好samba,smb.conf-exmple的路径:
#cp /usr/local/doc/samba/example/smb.conf.default /usr/local/samba/lib/smb.conf
然后请参看前面solaris10下的smb.conf的配置
d. 配置swat(Samba Web Administration Tool)不?需要的话就设个端口号让OS认识swat
# vi /etc/services
最后一行添加以下内容:
swat 901/tcp # swat on samba
再设置inetd,好让swat通过inetd来启动
# vi /etc/inet/inetd.conf
最后一行添加以下内容:
swat stream tcp nowait.400 root /usr/local/samba/sbin/swat swat
services和inetd.conf文件修改保存后,重新启动inetd服务:
#pkill -HUP inetd
e 制作SAMBA起動脚本,
可以简单: 我推荐这个
# vi /etc/rc3.d/S99samba
/usr/local/samba/sbin/smbd -D -s/usr/local/samba/lib/smb.conf && echo "smbd started."
/usr/local/samba/sbin/nmbd -D -l/usr/local/samba/logs -s/usr/local/samba/lib/smb.conf && echo "nmbd started."
也可以稍微复杂:
#####################################
#!/bin/sh
if [ ! -d /usr/bin ]
then # /usr not mounted
exit
fi
killproc() { # kill the named process(es)
pid=`/usr/bin/ps -e |
/usr/bin/grep -w $1 |
/usr/bin/sed -e "s/^ *//" -e "s/ .*//"`
[ "$pid" != "" ] && kill $pid
}
# Start/stop processes required for samba server
case "$1" in
"start")
#
# Edit these lines to suit your installation (paths, workgroup, host)
# Add the following parameters to nmbd, smbd, winbindd if needed
# (this may be needed for custom file locations)
# -D -s$BASE/lib/smb.conf
#
BASE=/usr/local/samba
$BASE/sbin/nmbd
$BASE/sbin/smbd
;;
"stop")
killproc nmbd
killproc smbd
;;
"restart")
killproc nmbd
killproc smbd
BASE=/usr/local/samba
$BASE/sbin/nmbd
$BASE/sbin/smbd
;;
*)
echo "Usage: /etc/init.d/samba { start | stop | restart }"
;;
esac
#########################################
f 测试samba起動,结果出现:
# /etc/rc3.d/S99samba start
ld.so.1: smbd: fatal: libtalloc.so(!这里的库文件可能是别的!): open failed: No such file or directory
Killed
爬文很久,发现需要重新更新下solaris8的动态连接库文件路径,让samba的依赖软件和库文件重定位:
参考了http://bwachter.lart.info/solaris/solfaq.html
# crle -c /var/ld/ld.config -l /usr/local/lib:/usr/local/ssl/lib:/usr/local/BerkeleyDB.4.7/lib:/usr/local/samba/lib:/opt/sfw/lib:/usr/lib:/lib\
e 最后再测试下启动,终于无错误:
# /etc/rc3.d/S99samba start
$ps -ef | grep smbd
$ps -ef | grep nmbd
搞定!
本文实践成功,Solairs8是sun blade 150 , Solaris10是Sun Enterprise T2000
补充我在配置samba发现确实so文件:
补充一: ldd -r /usr/sbin/nmbd
bash-2.03# ldd -r /usr/sbin/nmbd
libthread.so.1 => /usr/lib/libthread.so.1
libldap-2.4.so.2 => /usr/local/lib/libldap-2.4.so.2
liblber-2.4.so.2 => /usr/local/lib/liblber-2.4.so.2
libgssapi_krb5.so.2 => /usr/local/lib/libgssapi_krb5.so.2
libkrb5.so.3 => /usr/local/lib/libkrb5.so.3
libk5crypto.so.3 => /usr/local/lib/libk5crypto.so.3
libcom_err.so.3 => /usr/local/lib/libcom_err.so.3
libresolv.so.2 => /usr/lib/libresolv.so.2
libsocket.so.1 => /usr/lib/libsocket.so.1
libnsl.so.1 => /usr/lib/libnsl.so.1
libdl.so.1 => /usr/lib/libdl.so.1
libpam.so.1 => /usr/lib/libpam.so.1
libsec.so.1 => /usr/lib/libsec.so.1
librt.so.1 => /usr/lib/librt.so.1
libiconv.so.2 => /usr/local/lib/libiconv.so.2
libaio.so.1 => /usr/lib/libaio.so.1
libpopt.so.0 => /usr/local/lib/libpopt.so.0
libtalloc.so => /usr/local/samba/lib/libtalloc.so
libtdb.so => /usr/local/samba/lib/libtdb.so
libwbclient.so => /usr/local/samba/lib/libwbclient.so
libz.so => /usr/lib/libz.so
libc.so.1 => /usr/lib/libc.so.1
libgen.so.1 => /usr/lib/libgen.so.1
libsasl2.so.2 => /usr/local/lib/libsasl2.so.2
libgss.so.1 => /usr/lib/libgss.so.1
libssl.so.0.9.8 => /usr/local/ssl/lib/libssl.so.0.9.8
libcrypto.so.0.9.8 => /usr/local/ssl/lib/libcrypto.so.0.9.8
libgcc_s.so.1 => /usr/lib/libgcc_s.so.1
libkrb5support.so.0 => /usr/local/lib/libkrb5support.so.0
libmp.so.2 => /usr/lib/libmp.so.2
libcmd.so.1 => /usr/lib/libcmd.so.1
libintl.so.8 => /usr/local/lib/libintl.so.8
libxfn.so.2 => /usr/lib/libxfn.so.2
/usr/platform/SUNW,UltraAX-i2/lib/libc_psr.so.1
这个命令主要是查看nmbd的依赖关系,查看是否缺少其他依赖包,判断下载更新依赖包。
补充2:
下载依赖包地址:
ftp://ftp.twaren.net/Sun/sunfreeware.com/sparc/8/
补充三: 修改启动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."
启动/停止samba服务器
执行下面的命令来启动Samba服务器:
# /etc/init.d/samba start
执行下面的命令来停止Samba服务器:
# /etc/init.d/samba stop
补充5:我的配置文件:
smb.conf