在OEL6 下安装samba3.6源码包,折腾了近两天才搞定,郁闷啊,写这篇blog的时候,samba3.6 install problem 在internet上非常少,只有这个URL
http://blog.csdn.net/xyp84/article/details/6830984 说了下安装一些步骤和问题,但我的环境不符合这位哥的情况,最后在国外论坛上看到一条信息才解决。
我的安装大致解决三个问题:1、安装 2、smbd服务启动 3、认证tdb故障
下面是我的基本处理过程:
1、 下载samba3.6 并解压
[root@heliy /home/fukeyun/Desktop/download/temp]#ls ../samba-3.6.0.tar.gz
../samba-3.6.0.tar.gz
[root@heliy /home/fukeyun/Desktop/download/temp]#ls
samba-3.6.0
2 、安装
#cd ./samba-3.6.0
[root@heliy /home/fukeyun/Desktop/download/temp/samba-3.6.0]#find . -name 'configure'
./lib/tdb/configure
./lib/replace/configure
./lib/talloc/configure
./lib/tevent/configure
./source4/lib/ldb/configure
./source3/configure
[root@heliy /home/fukeyun/Desktop/download/temp/samba-3.6.0]#cd ./source3
[root@heliy /home/fukeyun/Desktop/download/temp/samba-3.6.0/source3]#./autogen.sh
[root@heliy /home/fukeyun/Desktop/download/temp/samba-3.6.0/source3]#./autogen.sh
./autogen.sh: running script/mkversion.sh
./script/mkversion.sh: 'include/version.h' created for Samba("3.6.0")
./autogen.sh: running autoheader -Im4 -I../m4 -I../lib/replace
./autogen.sh: running autoconf -Im4 -I../m4 -I../lib/replace
Now run ./configure (or ./configure.developer) and then make.
安装完后提示你./configure 或 ./configure.developer
#./configure ##默认安装到/usr/local/samba ,如果想安装到其他path,加--prefix=/path.. 或 --help查看详细信息
#make
#make install
需要几分钟时间。
3、配置
先cp配置文件,再启动服务,不然出现如下错误:
[root@heliy /usr/local/samba]#cat ./var/log.smbd
[2011/10/26 04:56:37, 0] smbd/server.c:1045(main)
smbd version 3.6.0 started.
Copyright Andrew Tridgell and the Samba Team 1992-2011
[2011/10/26 04:56:37, 0] smbd/server.c:1060(main)
error opening config file
拷贝smb.conf文件
[root@heliy /home/fukeyun/Desktop/download/temp/samba-3.6.0/source3]#cp ../examples/smb.conf.default /usr/local/samba/lib/smb.conf
#vi /usr/local/samba/lib/smb.conf
smb.conf文件只有两个location
/etc/samba/smb.conf or /usr/local/samba/lib/smb.conf
简单配置下,详细配置见附件
查看smb.conf文件调用路径和测试smb.conf文件是否有语法错误:
# smbd -b | grep smb.conf
testparm
启动服务
启动nmbd -D 能启动,但smbd无法启动
查看日志:
#cat ./var/log.smbd
错误如下:
smbd version 3.6.0 started.
Copyright Andrew Tridgell and the Samba Team 1992-2011
/usr/local/samba/sbin/smbd: symbol lookup error: /usr/local/samba/sbin/smbd: undefined symbol: wbcSidsToUnixIds
[2011/10/26 05:31:27, 0] smbd/server.c:1045(main)
就这个错误折腾我近两天,郁闷,国外论坛有条信息如下:
==========================================
Guido Leenders 2011-09-13 18:05:57 UTC
I had the same problem when compiling Samba 3.6.0 from source. In the log.smbd it said: undefined symbol wbcSidsToUnixIds for smbd. Configure options: ./configure --prefix=/usr --exec-prefix=/usr --with-ldap --with-libtalloc=no --enable-external-libtalloc=no --with-libtdb=no --enable-external-libtdb=no --with-libnetapi --with-libsmbclient --with-libsmbsharemodes --with-libaddns --with-ads --with-dnsupdate --with-pam --with-acl-support --with-aio-support --with-winbind --with-lockdir=/var/lib/samba --with-configdir=/etc/samba --with-logfilebase=/var/log/samba The installation did install libwbclient: Installing module pam_smbpass as ///usr/lib/security/pam_smbpass.so Installing module pam_winbind as ///usr/lib/security/pam_winbind.so /usr/bin/install -c bin/libwbclient.so.0 //usr/lib if test -r bin/libwbclient.so.0 ; then \ ln -f -s `basename bin/libwbclient.so.0` \ //usr/lib/`basename bin/libwbclient.so` ; \ fi : bin/libwbclient.a //usr/lib /usr/bin/install -c -m 0644 /usr/local/src/samba-3.6.0/source3/../nsswitch/libwbclient/wbclient.h //usr/include Resolution for me was simply: ldconfig And restart smbd. Rgds, Guido Leenders
========================================
很明显,是libwbclient.so库文件问题
[fukeyun@heliy ~]$ls /usr/lib/libw
libwavpack.so.1 libwbclient.so.0 libwnck-1.so.22.3.23
libwavpack.so.1.1.3 libwnck-1.so.22
如果没有,安装库文件:
[root@heliy /home/fukeyun/Desktop/download/temp/samba-3.6.0/source3]#/usr/bin/install -c ./bin/libwbclient.so.0 /usr/lib
再启动服务
smbd -D 和 nmbd -D
[root@heliy /usr/local/samba]#ps -ef |grep 'mbd'
root 31681 1 0 05:49 ? 00:00:00 ./sbin/smbd -D
root 31682 31681 0 05:49 ? 00:00:00 ./sbin/smbd -D
root 31720 1 0 05:51 ? 00:00:00 ./sbin/nmbd -D
root 32149 2828 0 06:16 pts/0 00:00:00 grep mbd
如果认为samba就此建好了,就大错了,由于默认安装gnome-desktop时安装了samba一些rpm包,会造成在全局环境下命令不是源码包的命令,比如smbpasswd
,你which smbpasswd 看明显不是/usr/local/samba/bin下的命令,testparm
用到的smb.conf文件是/etc/samba/smb.conf,所以我现在才明白samba的安装只有两种正确方式:1、用系统光盘的RPM包,或下载的RPM安装 。就不需要卸载已安装的samba rpm包 2、用源码包安装前最好卸载samba 的rpm包,我现在介绍第2种方式:
删掉rpm包
[root@heliy /usr/local/samba]#rpm -aq | grep -i 'samba'
samba-common-3.5.4-68.el6.i686
samba-winbind-clients-3.5.4-68.el6.i686
samba-client-3.5.4-68.el6.i686
[root@heliy /usr/local/samba]#rpm -e samba-client-3.5.4-68.el6.i686
[root@heliy /usr/local/samba]#rpm -e samba-common-3.5.4-68.el6.i686
再按前面写的安装samba,./configure make make install (题外话:由于我是按上面的方法安装初次,所以要删除前面的安装make uninstall 再删除一些目录[root@heliy /usr/local/samba]#rm -fR /etc/samba/
[root@heliy /usr/local/samba]#rm -fR /usr/local/samba/
[root@heliy /usr/local/samba]#rm -fR /var/log/samba/
[root@heliy /usr/local/samba]#rm -fR /var/lib/samba/ )
cp smb.conf 和配置,上面有
设置全局环境变量
[root@heliy /usr/local/samba]#vi /etc/profile.d/heliy.sh
export PATH=$PATH:/usr/local/samba/bin/
[root@heliy /usr/local/samba]#source /etc/profile.d/heliy.sh
root@heliy /usr/local/samba]#env | grep 'PATH'
PATH=/usr/lib/qt-3.3/bin:/usr/local/bin:............:/usr/local/samba/bin/
在这里有个小收获: 我打开了两个终端,我用source /etc/profile.d/heliy.sh后,本终端可以获取全局变量更改后的路径,另一个不行,比如输入smb再按TAB键,第一个终端就可以显示很多命令,第二个就不行,必须关闭打开新的才有。
设置用户
#smbpasswd -a fukeyun
#smbpasswd -e fukeyun
启动服务 smbd -D nmbd -D 就不会出现本blog前面的错误提示
最后登录如下:
[root@heliy /home/fukeyun]#smbclient -L //localhost/myshare -U fukeyun
Enter fukeyun's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.0]
Sharename Type Comment
--------- ---- -------
Error returning browse list: NT_STATUS_CONNECTION_INVALID
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.0]
Server Comment
--------- -------
HELIY Samba Server
Workgroup Master
--------- -------
WORKGROUP HELIY
[root@heliy /home/fukeyun/Desktop/download/temp/samba-3.6.0/source3]#smbclient -L //localhost -U%
smbclient: symbol lookup error: smbclient: undefined symbol: tdb_transaction_start_nonblock
上面出现了error:kill smbd和nmbd ,查看日志,出现以下错误:
[2011/10/29 05:32:51, 0] smbd/server.c:1045(main)
smbd version 3.6.0 started.
Copyright Andrew Tridgell and the Samba Team 1992-2011
./sbin/smbd: symbol lookup error: ./sbin/smbd: undefined symbol: tdb_transaction_start_nonblock
一波未平,一波又起啊
#cd .././lib/tdb
#./configure && make && make install
在国外网站上搜到samba3.6的库文件:
libnetapi.so.0
libsmbclient.so.0
libsmbsharemodes.so.0
libtdb.so.1.2.9
libwbclient.so.0
tdb.h, libtdb.so.1.2.9
tdb_jenkins_hash ( TDB_DATA* key )
tdb_summary ( tdb_context* tdb )
tdb_transaction_start_nonblock ( tdb_context* tdb )
wbclient.h, libwbclient.so.0
wbcDcInfo ( char const* domain, size_t* num_dcs, char const*** dc_names, char const*** dc_ips )
wbcLookupSids ( wbcDomainSid const* sids, int num_sids, wbcDomainInfo** domains, int* num_domains, wbcTranslatedName** names )
wbcSidsToUnixIds ( wbcDomainSid const* sids, uint32_t num_sids, wbcUnixId* ids )
wbcSidToStringBuf
明显和上面smbd起不来的原因相同,都是库文件的原因
[root@heliy /usr/local/samba]#ls -l /usr/lib/libtd*
-rwxr-xr-x. 1 root root 68316 Oct 29 05:31 /usr/lib/libtdb.so
lrwxrwxrwx. 1 root root 15 Sep 6 03:59 /usr/lib/libtdb.so.1 -> libtdb.so.1.2.1
-rwxr-xr-x. 1 root root 60932 Jul 7 2010 /usr/lib/libtdb.so.1.2.1
-rwxr-xr-x. 1 root root 68316 Oct 29 05:25 /usr/lib/libtdb.so.1.2.9
lrwxrwxrwx. 1 root root 16 Sep 6 03:59 /usr/lib/libtdsS.so.2 -> libtdsS.so.2.0.0
-rwxr-xr-x. 1 root root 4100 Jul 9 2010 /usr/lib/libtdsS.so.2.0.0
删除libtdb.so 、 libtdb.so.1 、 libtdb.so.1.2.1,保留libtdb.so.1.2.9
建个link
#ln -s /usr/lib/libtdb.so.1.2.9 /usr/lib/libtdb.so.1
再此启动smbd -D,就没有任何错误了
[2011/10/29 05:56:18, 0] smbd/server.c:1045(main)
smbd version 3.6.0 started.
Copyright Andrew Tridgell and the Samba Team 1992-2011
[2011/10/29 06:03:06, 0] smbd/server.c:1045(main)
smbd version 3.6.0 started.
Copyright Andrew Tridgell and the Samba Team 1992-2011
[fukeyun@heliy ~]$ps -ef | grep 'mbd'
root 1762 1 0 16:27 ? 00:00:00 /usr/local/samba/sbin/smbd -D
root 1764 1 0 16:27 ? 00:00:00 /usr/local/samba/sbin/nmbd -D
root 1770 1762 0 16:27 ? 00:00:00 /usr/local/samba/sbin/smbd -D
[fukeyun@heliy ~]$ps -ef | grep 'winb'
root 4181 1 0 18:05 ? 00:00:00 /usr/local/samba/sbin/winbindd
root 4182 4181 0 18:05 ? 00:00:00 /usr/local/samba/sbin/winbindd
fukeyun 4184 3504 0 18:06 pts/1 00:00:00 grep winb
[root@heliy /home/fukeyun/Desktop/download/temp/samba-3.6.0/source3]#smbclient -L //localhost -U fukeyun
Enter fukeyun's password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.0]
Sharename Type Comment
--------- ---- -------
myshare Disk Mary's and Fred's stuff
IPC$ IPC IPC Service (Samba Server)
fukeyun Disk Home Directories
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 3.6.0]
Server Comment
--------- -------
HELIY Samba Server
MHQ-XXB0003
Workgroup Master
--------- -------
WORKGROUP MHQ-XXB0003
从xp远程共享连接:
这篇blog只是解决了samba3.6源码安装的一些问题,至于smb.conf 、一些命令、swat、linux入域、samba备份等问题将逐步用blog记录,大家一起学习。