2024年6月10日发(作者:)

一.升级需知

1.备份最重要:在samba升级之前,请一定做好相关文件的备份。CentOS默认samba

的密码文件、配置都保存在/etc/samba目录。

相关命令

1. #rsync -av /etc/samba/ /etc//

2. #cp /etc/init./smb /etc/init.d/

samba密码文件:、schannel_、

samba配置文件:

2.在升级前,请先仔细参考相关的升级文档。如果对新版本一无所知,那么你为何要

去升级它呢?下面是Samba 3.4版本的一些变化:

Major enhancements in Samba 3.4.0 include:

1. Configuration changes:

2. o The default passdb backend has been changed to 'tdbsam'!

3. General changes:

4. o Samba4 and Samba3 sources are included in the tarball

5. Authentication Changes:

6. o Changed the way smbd handles untrusted domain names given during u

ser

7. authentication.

8. Printing Changes:

9. o Various fixes including printer change notificiation for Samba spoolss pri

nt servers.

10. Configuration changes

11. =====================

12. ATTENTION

13. The default passdb backend has been changed to 'tdbsam'! That break

s existing

14. setups using the 'smbpasswd' backend without explicit declaration! Ple

ase use

15. 'passdb backend = smbpasswd' if you would like to stick to the 'smbpas

swd'

16. backend or convert your smbpasswd entries 'pdbedit -i smbp

asswd -e

17. tdbsam'.

18. The 'tdbsam' backend is much more flexible concerning per user setting

s

19. like 'profile path' or 'home directory' and there are some commands wh

ich do not

20. work with the 'smbpasswd' backend at all.

的一些说明

1)Samba配置文件

samba的配置文件是,这个文件通常位于/etc/samba/ 或

/usr/local/samba/lib/

你可以通过#testparm /etc/samba/命令来验证配置文件是否有错。

2)Samba密码文件

Samba-3默认使用tdbsam方式来存储密码,使用下面的命令来确认:

#grep passdb /etc/samba/

存储samba密码等敏感信息的tdb数据库文件位置默认是:/etc/samba/,可以通过

下面的命令确认:

相关命令

1. # smbd -b | grep PRIVATE_DIR

2. PRIVATE_DIR: /etc/samba

3. # smbd -b | grep PRIVATE_DIR #CentOS默认路径

4. SRCDIR: /builddir/build/BUILD/samba-3.0.28/source

5. BUILDDIR: /builddir/build/BUILD/samba-3.0.28/source

6. SBINDIR: /usr/sbin

7. BINDIR: /usr/bin

8. SWATDIR: /usr/share/swat

9. LIBDIR: /usr/lib/samba

10.

11.

12.

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

LOCKDIR: /var/cache/samba

PIDDIR: /var/run

PRIVATE_DIR: /etc/samba

# smbd -b|grep DIR #编译、安装、启动新版本后

SRCDIR: /usr/src/samba-3.4.3/source3

BUILDDIR: /usr/src/samba-3.4.3/source3

SBINDIR: /usr/local/samba/sbin

BINDIR: /usr/local/samba/bin

SWATDIR: /usr/local/samba/swat

LIBDIR: /usr/local/samba/lib

MODULESDIR: /usr/local/samba/lib

LOCKDIR: /usr/local/samba/var/locks

STATEDIR: /usr/local/samba/var/locks

23. CACHEDIR: /usr/local/samba/var/locks

24. PIDDIR: /usr/local/samba/var/locks

25. PRIVATE_DIR: /usr/local/samba/private

二、下载解压

下载新版Samba安装文件(这里以samba 3.4.3为例):/

相关命令

1. #rpm -q samba #确认当前samba版本

2. 5

3. #cd /usr/src/

4. #wget /samba/ftp/stable/

5. #tar -xvf

6. #cd samba-3.4.3

三、编译安装

Samba 3.4.3目录中有source3和source4两个samba版本。source3为Samba

稳定的3.4.3版本,source4为Samba 4预览版,目前还在测试中。

相关命令

1. #cd source3/

2. #./ #自动生成适合当前系统的configure脚本

3. #./configure –help #获取可用的configure参数

4. #./configure --with-automount --with-quotas

5. #make

6. #make install

samba安装目录的相关参数,其它请参考./configure –help

相关参数

1. Installation directories:

2. --prefix=PREFIX install architecture-independent files in PREFIX

3. [/usr/local/samba]

4. --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX

5. [PREFIX]

6. By default, `make install' will install all the files in `/usr/local/samba/bin', `/

usr/local/samba/lib' etc. You can specify an installation prefix other than `/usr/loc

al/samba' using `--prefix',for instance `--prefix=$HOME'.

7. Fine tuning of the installation directories:

8. --bindir=DIR user executables [EPREFIX/bin]

9. --sbindir=DIR system admin executables [EPREFIX/sbin]

10. --libexecdir=DIR program executables [EPREFIX/libexec]

11. --datadir=DIR read-only architecture-independent data [PREFIX/s

hare]

12. --sysconfdir=DIR read-only single-machine data [PREFIX/etc]

13. --sharedstatedir=DIR modifiable architecture-independent data [PREFI

X/com]

14. --localstatedir=DIR modifiable single-machine data [PREFIX/var]

15. --libdir=DIR object code libraries [EPREFIX/lib]

16. --includedir=DIR C header files [PREFIX/include]

17. --oldincludedir=DIR C header files for non-gcc [/usr/include]

18. --infodir=DIR info documentation [PREFIX/info]

19. --mandir=DIR man documentation [PREFIX/man]

20. --with-privatedir=DIR Where to put smbpasswd ($ac_default_prefix/pri

vate)

21. --with-lockdir=DIR Where to put lock files ($ac_default_prefix/var/locks)

22. --with-configdir=DIR Directory that Samba daemons will use for lo

cating configuration files.

Samba编译的时候默认提供了Active Directory支持。如果不需要此功能,可以手工

编辑include/config.h ,把下面两行的1修改为0.

相关命令

1. /* Whether kerberos is available */

2. #define HAVE_KRB5 1

3. /* Whether ldap is available */

4. #define HAVE_LDAP 1

安装完成。哇,真是简单。

四、启用新版本Samba

1.先让我们看一下,安装后的Samba目录。

密码文件:、schannel_、、smbpasswd应该位于

/usr/local/samba/private目录。

配置文件:应该位于/usr/local/samba/lib目录。

所以,我们也需要将配置文件和密码文件复制到相应的目录。当然,我们要删除旧的

Samba版本。

相关命令

1. # cd /usr/local/samba/ #默认安装在/usr/local/samba/目录

2. # ls

3. bin include lib man private sbin share swat var

4. # ls bin/

5. eventlogadm ldbmodify ntlm_auth smbcacls smbpasswd tdbbackup

6. findsmb ldbrename pdbedit smbclient smbspool tdbdump

7. ldbadd ldbsearch profiles smbcontrol smbstatus tdbtool

8. ldbdel net rpcclient smbcquotas smbtar testparm

9. ldbedit nmblookup sharesec smbget smbtree wbinfo

10. # ls sbin/

11. nmbd smbd swat winbinddls

12. #cp -v /etc/samba/*.tdb /usr/local/samba/private/

13.

14.

15.

16.

17.

18.

19.

20.

21.

22.

23.

rch

24.

25.

#cp -v /etc/samba/ /usr/local/samba/lib/

#rm -rfv /etc/samba/

# ./bin/smbpasswd #测试一下,如果出错:

smbpasswd: error while loading shared libraries: .1:

ERROR:cannot open shared object file: No such file or directory

解决方法:vi /etc/

加入:/usr/local/samba/lib

然后运行#ldconfig

# rpm -e --test samba

error: Failed dependencies:

samba is needed by (installed)

# yum remove system-config-samba

# yum remove samba (不推荐直接使用rpm删除)

26. 设置Samba路径

27. Samba默认是安装在/usr/local/samba,因此安装完成后,可能bin、sbin目

录下的程序以及man无法使用。

28. 解决办法:

29. a.修改/etc/profile (全局) 或者在.bash_profile,.bashrc 文件中加上对应路径

(使用下面的脚本也是一个选择)

30. 例如# vim ~/.bash_profile

31. PATH=$PATH:$HOME/bin:/usr/local/samba/bin:/usr/local/samba/sbin

32. b.增加man手册

33. #vim /etc/

34. MANPATH /usr/local/samba/share/man

35. MANPATH_MAP /usr/local/samba/bin /usr/local/samba/share/man

36. MANPATH_MAP /usr/local/samba/sbin /usr/local/samba/share/man

2.启用新版本的Samba命令

首先,还原一下smb服务

#cp /etc/init.d/ /etc/init.d/smb

#!/bin/sh

for bin in `ls -1 /usr/local/samba/bin`

do

cp -bv /usr/local/samba/bin/$bin /usr/bin/

done

for sbin in `ls -1 /usr/local/samba/sbin`

do

cp -bv -s /usr/local/samba/sbin/$sbin /usr/sbin/

done

exit 0

五、简单测试

使用smbclient做个简单的测试。使用smbclient的时候,若提示找不到

/etc/samba/文件,则运行:

# ln -s /usr/local/samba/lib/ /etc/samba/

测试命令

1. # smbclient -L //192.168.1.9 -U root

2. Enter password:

3. Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.4.3]

4. Sharename Type Comment

5. --------- ---- -------

6. public Disk

7. #smbclient //192.168.1.9/it -U root

8. Enter password:

9. Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.4.3]

10. smb: >

六、其它

to Add Windows 7 on a Samba Domain Controller (PDC)

Samba从3.3版本后才提供了加Windows 7到域的支持,如果你的版本符合要求,

但在加入PDC的时候,却提示域不存在或无法联系,那么请导入下面的注册表即可:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesLanManWorksta

tionParameters]

"DNSNameResolutionRequired"=dword:00000000

"DomainCompatibilityMode"=dword:00000001

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetservicesNetlogonPara

meters]

"RequireSignOnSeal"=dword:00000001

"RequireStrongKey"=dword:00000001

2.出现奇怪错误的时候,可以使用如下命令调试:

# pdbedit -d 10 -x -u testuser

3.最后,哈哈,如何使用yum直接升级到新版本的samba

# cd /etc/.d/

# wget /pub/samba/recent/centos/5/

# yum install samba

/*内容*/

[sernet-samba]

name=SerNet Samba Team packages (CentOS 5)

type=rpm-md

baseurl=/pub/samba/recent/centos/5

enabled=1