Morgen,
oh man wieder was neues...
Downgrade auf z.B. 3.6 ist anscheinend nicht möglich?
Hier mal meine abgeänderte /etc/inid.d/smb.sh:
#!/bin/sh
. /etc/init.d/functions
CONFIG=/etc/config/smb.conf
SMBD_LOCKS="/usr/local/samba/var/locks"
GROUP_FILE="/etc/group"
SAMBA_NET="/usr/local/samba/bin/net"
WBINFO="/usr/bin/wbinfo"
# Check that smb.conf exists.
[ -f $CONFIG ] || exit 0
. /etc/init.d/functions
DATA_VOL_PATH=
make_vol_base(){
FindDefVol
_ret=$?
if [ $_ret = 0 ]; then
DATA_VOL_PATH="${DEF_VOLMP}"
fi
}
conv_old_msdfs()
{
if [ -d /etc/config/msdfs_root ]; then
echo conver MSDFS
make_vol_base
if [ "x$DATA_VOL_PATH" != "x" ]; then
mkdir ${DATA_VOL_PATH}/.@msdfs_root
cd /etc/config/msdfs_root
tar cf - * | tar xf - -C ${DATA_VOL_PATH}/.@msdfs_root
if [ $? = 0 ]; then
sed -i "s:/etc/config/msdfs_root:${DATA_VOL_PATH}/.@msdfs_root:g" $CONFIG
if [ $? = 0 ]; then
cd ~
rm -rf /etc/config/msdfs_root
fi
fi
fi
fi
}
_init_smbconf()
{
if [ -x /sbin/hal_app ]; then
/sbin/setcfg global "socket options" "TCP_NODELAY SO_KEEPALIVE" -f ${CONFIG}
else
SO_SNDBUF=`/sbin/getcfg Samba SO_SNDBUF -d 65536 -f /etc/default_config/uLinux.conf`
SO_RCVBUF=`/sbin/getcfg Samba SO_RCVBUF -d 65536 -f /etc/default_config/uLinux.conf`
/sbin/setcfg global "socket options" "TCP_NODELAY SO_KEEPALIVE SO_SNDBUF=${SO_SNDBUF} SO_RCVBUF=${SO_RCVBUF}" -f ${CONFIG}
fi
#/sbin/setcfg global "passdb backend" smbpasswd -f ${CONFIG}
/sbin/setcfg global "null passwords" yes -f ${CONFIG}
/sbin/setcfg global "use sendfile" yes -f ${CONFIG}
/sbin/setcfg global "oplocks" yes -f ${CONFIG}
DEAD_TIME=`/sbin/getcfg Samba deadtime -d 10 -f /etc/config/uLinux.conf`
/sbin/setcfg global "deadtime" "${DEAD_TIME}" -f ${CONFIG}
/sbin/setcfg global "username level" 0 -f ${CONFIG}
/sbin/setcfg global "display charset" "UTF8" -f ${CONFIG}
/sbin/setcfg global "unix extensions" no -f ${CONFIG}
/sbin/setcfg global "store dos attributes" yes -f ${CONFIG}
/sbin/setcfg global "client ntlmv2 auth" yes -f ${CONFIG}
/sbin/setcfg global "dos filetime resolution" no -f ${CONFIG}
/sbin/setcfg global "inherit acls" yes -f ${CONFIG}
/sbin/setcfg global "wide links" yes -f ${CONFIG}
/sbin/setcfg global "force unknown acl user" yes -f ${CONFIG}
#/sbin/setcfg global "template homedir" "/share/homes/DOMAIN=%D/%U" -f ${CONFIG}
/sbin/setcfg global "domain logons" "no" -f ${CONFIG}
/sbin/setcfg -e global "config file" -f ${CONFIG}
/sbin/setcfg -e global "template shell" -f ${CONFIG}
/sbin/setcfg -e global 'obey pam restrictions' -f ${CONFIG}
_dos_charset=`/sbin/getcfg global "dos charset" -d none -f ${CONFIG}`
if [ "x${_dos_charset}" = "xUTF8" ]; then
/sbin/setcfg -e global 'dos charset' -f ${CONFIG}
fi
if [ -x /sbin/hal_app ]; then
_splice=0
else
_splice=`/sbin/getcfg Samba "SPLICE" -d 1`
fi
if [ "x${_splice}" = "x1" ]; then
/sbin/setcfg global "min receivefile size" 4096 -f ${CONFIG}
else
/sbin/setcfg -e global "min receivefile size" -f ${CONFIG}
fi
_case_sensitive=`/sbin/getcfg Samba "Case Sensitive" -d auto`
/sbin/setcfg global "case sensitive" ${_case_sensitive} -f ${CONFIG}
OS_LEVEL=`/sbin/getcfg global "os level" -d none -f ${CONFIG}`
if [ "x${OS_LEVEL}" != "x20" ]; then
/sbin/setcfg global "preferred master" no -f ${CONFIG}
/sbin/setcfg global "domain master" auto -f ${CONFIG}
/sbin/setcfg global "local master" no -f ${CONFIG}
/sbin/setcfg global "os level" 20 -f ${CONFIG}
fi
map_dos=`/sbin/getcfg global "map archive" -d yes -f ${CONFIG}`
if [ "x${map_dos}" = "xyes" ]; then
/sbin/setcfg global "map archive" no -f ${CONFIG}
/sbin/setcfg global "map system" no -f ${CONFIG}
/sbin/setcfg global "map hidden" no -f ${CONFIG}
/sbin/setcfg global "map read only" no -f ${CONFIG}
fi
mode=`/sbin/getcfg global "force directory security mode" -f ${CONFIG}`
if [ "x${mode}" = "x0777" ]; then
/sbin/setcfg global "force directory security mode" 0000 -f ${CONFIG}
fi
# for Mac OS 10.5 smb catnot upload the file to the empty share
/sbin/setcfg global "veto files" "/.AppleDB/.AppleDouble/.AppleDesktop/:2eDS_Store/Network Trash Folder/Temporary Items/TheVolumeSettingsFolder/.@__thumb/.@__desc/:2e*/" -f ${CONFIG}
/usr/bin/readlink /usr/local/samba 2>/dev/null 1>/dev/null
if [ $? != 0 ] && [ -f /mnt/HDA_ROOT/update_pkg/samba.tgz ]; then
/etc/init.d/installtgz.sh samba /mnt/HDA_ROOT/update_pkg/samba.tgz
fi
if [ `/sbin/getcfg LDAP Enable -u -d FALSE` = TRUE ]; then
_passwd=`/sbin/getcfg global "passdb backend" -d smbpasswd -f ${CONFIG}`
if [ "x$_passwd" != "xsmbpasswd" ]; then
_ldap_host=`/sbin/getcfg LDAP host -d "127.0.0.1"`
_ssl=`/sbin/getcfg LDAP ssl -d 0`
if [ "x$_ssl" = "x1" ]; then # ssl
/sbin/setcfg global "passdb backend" "ldapsam:ldaps://$_ldap_host" -f ${CONFIG}
/sbin/setcfg global "ldap ssl" "off" -f ${CONFIG}
elif [ "x$_ssl" = "x2" ]; then # tls
/sbin/setcfg global "passdb backend" "ldapsam:ldap://$_ldap_host" -f ${CONFIG}
/sbin/setcfg global "ldap ssl" "start tls" -f ${CONFIG}
else
/sbin/setcfg global "passdb backend" "ldapsam:ldap://$_ldap_host" -f ${CONFIG}
/sbin/setcfg global "ldap ssl" "off" -f ${CONFIG}
fi
# set WORKGROUP if backend LDAP is QNAP NAS
# LDAP Server Type = 0 (Remote QNAP NAS)
# LDAP Server Type = 1 (Local QNAP NAS)
# LDAP Server Type = 2 (Remote LDAP Server)
if [ `/sbin/getcfg LDAP "LDAP Server Type" -u -d 2` != "2" ]; then
base_dn=`/sbin/getcfg global "ldap suffix" -f ${CONFIG}`
dc=${base_dn#*dc=}
workgroup=${dc%%,*}
/sbin/setcfg global workgroup "$workgroup" -f ${CONFIG}
fi
/sbin/setcfg global "domain logons" "yes" -f ${CONFIG}
fi
else
/sbin/setcfg global "passdb backend" smbpasswd -f ${CONFIG}
fi
## QNAP private flag for enhance ACL. please notice switch this flag will break samba acl hash.
if [ x`/sbin/getcfg Samba "Win ACL" -u -d FALSE` = "xFALSE" ]; then
enhance_acl_v1=`/sbin/getcfg global "enhance acl v1" -d null -f ${CONFIG}`
if [ "x$enhance_acl_v1" != "xno" ]; then
/sbin/setcfg global "enhance acl v1" yes -f ${CONFIG}
fi
fi
## QNAP private flag for replacing Everyone to everyone or remove it if need.
if [ x`/sbin/getcfg System "ACL Enable" -u -d FALSE` = "xFALSE" ]; then
/sbin/setcfg global "remove everyone" no -f ${CONFIG}
else
/sbin/setcfg global "remove everyone" yes -f ${CONFIG}
fi
offline_files=`/sbin/getcfg Samba "offline_files" -d TRUE`
if [ "x${offline_files}" == "xTRUE" ]; then
/sbin/setcfg global 'kernel oplocks' no -f ${CONFIG}
else
/sbin/setcfg global 'kernel oplocks' yes -f ${CONFIG}
fi
mangled_names=`/sbin/getcfg Samba "mangled_names" -d FALSE`
if [ "x${mangled_names}" == "xFALSE" ]; then
/sbin/setcfg global 'mangled names' no -f ${CONFIG}
else
/sbin/setcfg global 'mangled names' yes -f ${CONFIG}
fi
[ `/sbin/getcfg global "printcap cache time" -d "1" -f ${CONFIG}` == "0" ] || /sbin/setcfg global "printcap cache time" "0" -f ${CONFIG}
}
_init_group()
{
_passwd=`/sbin/getcfg global "passdb backend" -d smbpasswd -f ${CONFIG}`
if [ "x$_passwd" != "xsmbpasswd" ]; then
return
fi
HIDDEN_GROUP="dovecot guest xmail"
/bin/cat $GROUP_FILE | while read line
do
group_name=${line%%:*}
hidden_flag=0
for hidden in $HIDDEN_GROUP
do
if [ "$group_name" = "$hidden" ]; then
hidden_flag=1
break
fi
done
if [ "$hidden_flag" = 0 -a -x ${SAMBA_NET} ]; then
${SAMBA_NET} groupmap add unixgroup=$group_name > /dev/null 2>&1
fi
done
}
_del_group()
{
/bin/cat $GROUP_FILE | while read line
do
group_name=${line%%:*}
if [ -x ${SAMBA_NET} ]; then
${SAMBA_NET} groupmap delete ntgroup=$group_name > /dev/null 2>&1
fi
done
}
#_init_home()
#{
# home_func=`/sbin/getcfg Samba HomeLink -u -d FALSE`
# local acl_list="\"%u\""
# winbind_separator=`/sbin/getcfg global "winbind separator" -d '\\' -f ${CONFIG}`
# homes_path=`/sbin/getcfg homes path -d FALSE -f ${CONFIG}`
#
# if [ $home_func == "FALSE" -o $homes_path == "FALSE" ]; then
# #echo "home folder is disabled"
# return
# fi
#
# if [ ! -e "$homes_path" ]; then
# #echo "homes is lost"
# return
# fi
#
# /sbin/setcfg home "comment" Home -f ${CONFIG}
# /sbin/setcfg home "path" %H -f ${CONFIG}
# /sbin/setcfg home "browsable" yes -f ${CONFIG}
# /sbin/setcfg home "oplocks" yes -f ${CONFIG}
# /sbin/setcfg home "ftp write only" no -f ${CONFIG}
# /sbin/setcfg home "inherit permissions" yes -f ${CONFIG}
# /sbin/setcfg home "writable" yes -f ${CONFIG}
# /sbin/setcfg home "read list" $acl_list -f ${CONFIG}
# /sbin/setcfg home "write list" $acl_list -f ${CONFIG}
# /sbin/setcfg home "valid users" $acl_list -f ${CONFIG}
# /sbin/setcfg home "root preexec" "/sbin/create_home -u '%q'" -f ${CONFIG}
#}
#_del_home()
#{
# home_path=`/sbin/getcfg home "path" -d home -f ${CONFIG}`
# if [ "$home_path" == "%H" ]; then
# /sbin/rmcfg home -f ${CONFIG}
# fi
#}
# move samba locks directory to /mnt/HDA_ROOT/.locks
_locks()
{
if [ -d /mnt/HDA_ROOT/.locks ]; then
/bin/rm -rf /mnt/HDA_ROOT/.locks
/bin/rm $SMBD_LOCKS
fi
volume_test=`/sbin/getcfg Public path -f /etc/smb.conf | cut -d '/' -f 3`
[ "x${volume_test}" = "x" ] || volume=${volume_test}
_lock_real_path=/share/${volume}/.locks
if [ ! -d ${_lock_real_path} ]; then
echo "samba locks directory is not exist, create it"
if [ ! -d /share/${volume} ]; then
/bin/mkdir -p /share/${volume}
/bin/chmod 777 /share/${volume}
fi
/bin/mkdir ${_lock_real_path}
/bin/rm -rf $SMBD_LOCKS
/bin/ln -sf ${_lock_real_path} $SMBD_LOCKS
else
/usr/bin/readlink $SMBD_LOCKS 2>/dev/null 1>/dev/null
if [ $? != 0 ]; then
# not symbolic link
/bin/rm -rf $SMBD_LOCKS
/bin/ln -sf ${_lock_real_path} $SMBD_LOCKS
else
# symbolic link
ret=`/usr/bin/readlink $SMBD_LOCKS`
if [ "x${ret}" != "x${_lock_real_path}" ]; then
/bin/rm -f $SMBD_LOCKS
/bin/ln -sf ${_lock_real_path} $SMBD_LOCKS
fi
fi
fi
/bin/mkdir ${_lock_real_path}/.test_locks 2>/dev/null 1>/dev/null
if [ $? != 0 ]; then
_lock_real_path=/mnt/HDA_ROOT/.locks
/bin/mkdir ${_lock_real_path}
/bin/rm -f $SMBD_LOCKS
/bin/ln -sf ${_lock_real_path} $SMBD_LOCKS
/bin/mkdir ${_lock_real_path}/.test_locks 2>/dev/null 1>/dev/null
if [ $? != 0 ]; then
_lock_real_path=/var/.locks
/bin/mkdir ${_lock_real_path} 2>/dev/null 1>/dev/null
/bin/rm -f $SMBD_LOCKS
/bin/ln -sf ${_lock_real_path} $SMBD_LOCKS
else
/bin/rmdir ${_lock_real_path}/.test_locks
fi
else
/bin/rmdir ${_lock_real_path}/.test_locks
fi
/bin/echo "locks path was set to ${_lock_real_path}"
}
# See how we were called.
case "$1" in
start)
conv_old_msdfs
test -f /usr/local/samba/sbin/smbd || exit 0
if [ `/sbin/getcfg Samba Enable -u -d TRUE` = FALSE ]
then
# _del_home
# _init_home
echo "Starting SMB Services: disabled."
exit 0
fi
if [ x`/sbin/getcfg Samba "Win ACL" -u -d FALSE` = xTRUE ]; then
[ ! -f /usr/local/samba/lib/acl_xattr.so.disable ] || /bin/mv /usr/local/samba/lib/acl_xattr.so.disable /usr/local/samba/lib/acl_xattr.so 2>>/dev/null
else
[ ! -f /usr/local/samba/lib/acl_xattr.so ] || /bin/mv /usr/local/samba/lib/acl_xattr.so /usr/local/samba/lib/acl_xattr.so.disable 2>>/dev/null
fi
_init_smbconf
_locks
_init_group
# _del_home
/etc/init.d/winbind start
# _init_home
echo -n "Starting SMB services:"
/sbin/daemon_mgr smbd start "/usr/local/samba/sbin/smbd -l /var/log -D -s $CONFIG"
if [ "$?" = "0" ]; then echo -n " smbd"; fi
/sbin/daemon_mgr nmbd start "/usr/local/samba/sbin/nmbd -l /var/log -D -s $CONFIG"
if [ "$?" = "0" ]; then echo -n " nmbd"; fi
echo "."
touch /var/lock/subsys/smb
;;
stop)
echo -n "Shutting down SMB services:"
## we have to get all the smbd process here instead of just the
## main parent (i.e. killproc) because it can take a long time
## for an individual process to process a TERM signal
smbdpids=`pidof smbd`
/sbin/daemon_mgr smbd stop /usr/local/samba/sbin/smbd
for pid in $smbdpids; do
/bin/kill -TERM $pid 2>/dev/null 1>/dev/null
done
echo -n " smbd"
nmbdpids=`pidof nmbd`
/sbin/daemon_mgr nmbd stop /usr/local/samba/sbin/nmbd
for pid in $nmbdpids; do
/bin/kill -TERM $pid 2>/dev/null 1>/dev/null
done
echo " nmbd."
/bin/rm -f /var/lock/subsys/smb
/bin/rm -f $SMBD_LOCKS/smbd.pid $SMBD_LOCKS/nmbd.pid
/etc/init.d/winbind stop
_del_group
;;
nmbdrestart)
test -f /usr/local/samba/sbin/smbd || exit 0
if [ `/sbin/getcfg Samba Enable -u -d TRUE` = FALSE ]
then
echo "Starting nmbd Services: disabled."
exit 0
fi
echo -n "Restarting nmbd services:"
nmbdpids=`pidof nmbd`
/sbin/daemon_mgr nmbd stop /usr/local/samba/sbin/nmbd
for pid in $nmbdpids; do
/bin/kill -TERM $pid 2>/dev/null 1>/dev/null
done
/bin/rm -f $SMBD_LOCKS/nmbd.pid
/sbin/daemon_mgr nmbd start "/usr/local/samba/sbin/nmbd -l /var/log -D -s $CONFIG"
if [ "$?" = "0" ]; then echo -n " nmbd"; fi
echo "."
echo "done."
;;
restart)
echo "Restarting SMB services:"
$0 stop
$0 start
echo "done."
;;
*)
echo "Usage: smb {start|stop|restart}"
exit 1
esac
Alles anzeigen
allerdings steht in der smb trotzdem "template homedir=....." drinne....
blockiert denn diese template einstellung meine [homes] ?
--- EDIT ---
so ich habe jetzt mal folgendes probiert:
/etc/init.d/smb stop
dann:
in der smb.conf die zeile mit "template homedir" gelöscht und folgendes gestartet:
/etc/init.d/winbind start; /usr/local/samba/sbin/smbd -l /var/log -D -s /etc/config/smb.conf; /usr/local/samba/sbin/nmbd -l /var/log -D -s /etc/config/smb.conf
allerdings wird es immernochnicht angezeigt...
ohje
Gruß
GerhardSchr