samba 升级

 

    前提RHEL5.3 samba3.5.11

1.备份(service smb stop)

   #rsync -av /etc/samba/ /etc/samba.old/ 
   #cp /etc/init.d/smb /etc/init.d/smb.bak  

    检测一下原先的版本号 rpm -q samba(如果是rpm装的,不是的话用smbd -b)

2.编译安装新的源码包(samba-3.5.11)

#tar -xvf samba-3.0.37.tar.gz 
   #cd samba-3.5.11

# cd source3

#./autogen.sh 

   #./configure   --prefix=/usr/local/samba 

   #make &&make install

   #cp -v /etc/samba/*.tdb /usr/local/samba/private/ 
   #cp -v /etc/samba/smb.conf /usr/local/samba/lib/ 

   #rm -rfv /etc/samba/ 
# ./bin/smbpasswd #测试一下, 

 vi /etc/ld.so.conf 
加入:/usr/local/samba/lib 
然后运行#ldconfig 
# yum remove system-config-samba (rpm -e )
# yum remove samba 

设置Samba路径
Samba默认是安装在/usr/local/samba,因此安装完成后,可能binsbin目录下的程序以及man无法使用。
解决办法: 
a.修改/etc/profile (全局或者在.bash_profile,.bashrc 文件中加上对应路径(使用下面的脚本也是一个选择)
例如# vim ~/.bash_profile
PATH=$PATH:HOME/bin:/usr/local/samba/bin:/usr/local/samba/sbin 
b.增加man手册
#vim /etc/man.config
MANPATH /usr/local/samba/share/man
MANPATH_MAP /usr/local/samba/bin /usr/local/samba/share/man
MANPATH_MAP /usr/local/samba/sbin /usr/local/samba/share/man  

修改samba服务启动脚本
#cp /etc/init.d/smb.bak /etc/init.d/smb

Vim smb (修改脚本)

#!/bin/sh

#

# chkconfig: - 91 35

# description: Starts and stops the Samba smbd and nmbd daemons \

#        used to provide SMB network services.

#

# pidfile: /usr/local/samba/var/locks/var/smbd.pid

# pidfile: /usr/local/samba/var/locks/nmbd.pid

# config:  /usr/local/samba/lib/smb.conf

# Source function library.

if [ -f /etc/init.d/functions ] ; then

  . /etc/init.d/functions

elif [ -f /etc/rc.d/init.d/functions ] ; then

  . /etc/rc.d/init.d/functions

else

  exit 1

fi

# Avoid using root's TMPDIR

unset TMPDIR

# Source networking configuration.

. /etc/sysconfig/network

if [ -f /etc/sysconfig/samba ]; then

   . /etc/sysconfig/samba

fi

# Check that networking is up.

[ ${NETWORKING} = "no" ] && exit 1

# Check that smb.conf exists.

[ -f /usr/local/samba/lib/smb.conf ] || exit 6

RETVAL=0

start() {

        KIND="SMB"

echo -n $"Starting $KIND services: "

daemon smbd $SMBDOPTIONS

RETVAL=$?

echo

        KIND="NMB"

echo -n $"Starting $KIND services: "

daemon nmbd $NMBDOPTIONS

RETVAL2=$?

echo

[ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && touch /usr/local/samba/var/locks/smbd.pid || \

   RETVAL=1

return $RETVAL

}

stop() {

        KIND="SMB"

echo -n $"Shutting down $KIND services: "

killproc smbd

RETVAL=$?

echo

KIND="NMB"

echo -n $"Shutting down $KIND services: "

killproc nmbd

RETVAL2=$?

[ $RETVAL -eq 0 -a $RETVAL2 -eq 0 ] && rm -f /usr/local/samba/var/locks/smbd.pid

echo ""

return $RETVAL

}

restart() {

stop

start

}

reload() {

        echo -n $"Reloading smb.conf file: "

killproc smbd -HUP

RETVAL=$?

echo

return $RETVAL

}

rhstatus() {

status smbd

RETVAL=$?

status nmbd

RETVAL2=$?

if [ $RETVAL -ne 0 ] ; then

return $RETVAL

fi

if [ $RETVAL2 -ne 0 ] ; then

return $RETVAL2

fi

}

# Allow status as non-root.

if [ "$1" = status ]; then

       rhstatus

       exit $?

fi

# Check that we can write to it... so non-root users stop here

[ -w /usr/local/samba/lib/smb.conf ] || exit 4

case "$1" in

  start)

   start

;;

  stop)

   stop

;;

  restart)

   restart

;;

  reload)

   reload

;;

  status)

   rhstatus

;;

  *)

echo $"Usage: $0 {start|stop|restart|reload|status}"

exit 2

esac

exit $?

加入服务 Chkconfig --add smb

修改bin的路径
 #!/bin/bash 
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 

此时

可以启动samba

    cd /etc/init.d

   chkconfig --add smb && chkconfig smb on

   Service smb start