📄 basicsmb.fns
字号:
#! /bin/sh# Common functions for Samba build scripts.# Copyright (C) 2001 by Martin Pool <mbp@samba.org> and others# The following variables are passed in by the calling script. They# originate in either the buildfarm scripts or the configured# Makefile.# PREFIX = Installed prefix of samba test installation. Used to# locate binaries, configuration files, etc. # XXX: It's pretty bad to clobber the installed configuration file and# other data in $prefix, because somebody might unwittingly run this# with prefix=/usr. # Really what we want is a consistent way to pass the location of the# configuration and all other files into *all* Samba programs# (smbclient, smd, ...) and be able to set them to a temporary# directory when testing. Some of them take a -c parameter, but tpot# says it's not done consistently.template_setup() { cat template/$1 | \ sed "s|PREFIX|$prefix|g" | \ sed "s|BUILD_FARM|$test_root|g" | \ sed "s|WHOAMI|$whoami|g" | \ sed "s|LOGLEVEL|$loglevel|g" \ > $prefix/$2 echo "template_setup: Created $prefix/$2"}template_smb_conf_setup() { template_setup "basicsmb.smb.conf$1" "lib/smb.conf$1"}test_smb_conf_setup() { echo "test_smb_conf_setup: Configuring: " echo " PREFIX=$prefix" echo " BUILD_FARM=$test_root" echo " WHOAMI=$whoami" echo " LOGLEVEL=$loglevel" echo " TREE=$tree" case "$prefix" in /usr*|/|//) echo "** I don't want to clobber your installation in " echo "** $prefix" echo "** by running tests there. Please reconfigure this source tree to" echo "** use a different prefix." exit 1 esac# Please keep these names under 15 characters,# so that the final name is 31 characters or fewer. template_smb_conf_setup template_smb_conf_setup .hostsequiv template_smb_conf_setup .validusers template_smb_conf_setup .invalidusers template_smb_conf_setup .preexec template_smb_conf_setup .preexec_close template_smb_conf_setup .preexec_cl_fl template_smb_conf_setup .share template_smb_conf_setup .user template_smb_conf_setup .server template_smb_conf_setup .domain template_setup preexec lib/preexec touch $prefix/lib/smb.conf. touch $prefix/lib/smb.conf.localhost echo "127.0.0.1 localhost">$prefix/lib/lmhosts echo "127.0.0.2 BUILDFARM">>$prefix/lib/lmhosts echo "127.0.0.3 SHARE">>$prefix/lib/lmhosts echo "127.0.0.4 USER">>$prefix/lib/lmhosts echo "127.0.0.5 SERVER">>$prefix/lib/lmhosts echo "127.0.0.6 DOMAIN">>$prefix/lib/lmhosts echo "127.0.0.7 HOSTSEQUIV">>$prefix/lib/lmhosts echo "127.0.0.7 VALIDUSERS">>$prefix/lib/lmhosts echo "127.0.0.7 INVALIDUSERS">>$prefix/lib/lmhosts echo "127.0.0.7 PREEXEC">>$prefix/lib/lmhosts echo "127.0.0.7 PREEXEC_CLOSE">>$prefix/lib/lmhosts echo "127.0.0.7 PREEXEC_CL_FL">>$prefix/lib/lmhosts echo "127.0.0.1" > $prefix/lib/hosts.equiv}test_smbpasswd() { test_smbpasswd_password="$1" rm -f $prefix/private/smbpasswd echo "( echo $test_smbpasswd_password ; echo $test_smbpasswd_password; ) | $prefix/bin/smbpasswd -L -D $loglevel -s -a $whoami" ( echo $test_smbpasswd_password; echo $test_smbpasswd_password; ) | $prefix/bin/smbpasswd -L -D $loglevel -s -a $whoami status=$? if [ $status = 0 ]; then echo "smbpasswd correctly set initial password ($test_smbpasswd_password)" else echo "smbpasswd failed to set initial password ($test_smbpasswd_password)! (status $status)" return 1 fi return 0}test_smbpasswd_remote() { test_smbpasswd_rem_password="$1" test_smbpasswd_rem_newpassword="$2" echo "( echo $test_smbpasswd_rem_password; echo $test_smbpasswd_rem_newpassword; echo $test_smbpasswd_rem_newpassword; ) | $prefix/bin/smbpasswd -r localhost -s -U $whoami" ( echo $test_smbpasswd_rem_password; echo $test_smbpasswd_rem_newpassword; echo $test_smbpasswd_rem_newpassword; ) | $prefix/bin/smbpasswd -r localhost -s -U $whoami status=$? if [ $status = 0 ]; then echo "smbpasswd correctly remotely changed password ($test_smbpasswd_rem_password -> $test_smbpasswd_rem_newpassword)" else echo "smbpasswd failed to remotely changed password ($test_smbpasswd_rem_password -> $test_smbpasswd_rem_newpassword)! (status $status)" return 1 fi return 0}test_smbpasswd_local() { test_smbpasswd_newpassword="$2" echo "( echo $test_smbpasswd_newpassword ; echo $test_smbpasswd_newpassword; ) | $prefix/bin/smbpasswd -L -s $whoami" ( echo $test_smbpasswd_newpassword ; echo $test_smbpasswd_newpassword; ) | $prefix/bin/smbpasswd -L -s $whoami status=$? if [ $status = 0 ]; then echo "smbpasswd correctly locally changed password ($test_smbpasswd_password -> $test_smbpasswd_newpassword)" else echo "smbpasswd failed to locallly changed password ($test_smbpasswd_password -> $test_smbpasswd_newpassword)! (status $status)" return 1 fi return 0}test_listfilesauth() { remote_name="$1" echo $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami%$password -c 'ls' $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami%$password -c 'ls' status=$? if [ $status = 0 ]; then echo "listed files OK" else echo "listing files with smbd failed with status $status" return 1 fi return 0}test_listfilesnpw() { remote_name="$1" echo $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami% -c 'ls' $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami% -c 'ls' status=$? if [ $status = 0 ]; then echo "smbd listed files with NO PASSWORD on an authenticated share!" return 1 else echo "listing files with smbd failed with status $status (correct)" fi return 0}test_listfilesauth_should_deny() { remote_name="$1" echo $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami%$password -c 'ls' $prefix/bin/smbclient //$remote_name/samba -n buildclient -U$whoami%$password -c 'ls' status=$? if [ $status = 0 ]; then echo "smbd LISTED FILES despite smb.conf entires to the contary!" return 1 else echo "listing files with smbd failed with status $status (correct)" fi return 0}echo "LIBSMB_PROG=$LIBSMB_PROG" >&2# Give sensible defaults to some variables. # "What's my age again?"if [ ! $USER = "" ]; then whoami=$USERelse if [ ! $LOGNAME = "" ]; then whoami=$LOGNAME else whoami=build fifiif test -z "$loglevel"then loglevel=1fi
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -