[Eisfair] In Zusammenhang mit Locky Frage an die Sambaexperten
Thomas Bork
tom at eisfair.org
Di Feb 23 21:36:50 CET 2016
Am 23.02.2016 um 08:55 schrieb Olaf Jaehrling:
> ist sowas [1] hier mit samba möglich?
Basteln kann man viel. Allerdings wird das nur ein Wettlauf mit
unbestimmtem Ausgang.
> Zusammenfassung: Wenn Dateien mit bestimmten Endungen auf den Filserver geladen werden, dann blockt der diese und/oder hält den Dienst an und/oder fährt den gesamten Fileserver herunter um ein komplettes löschen der Freigaben zu verhindern.
root preexec (S)
This is the same as the preexec parameter except that the command is run
as root. This is useful for mounting filesystems (such as CDROMs) when a
connection is opened.
Default: root preexec =
preexec (S)
This option specifies a command to be run whenever the service is
connected to. It takes the usual substitutions.
An interesting example is to send the users a welcome message every time
they log in. Maybe a message of the day? Here is an example:
preexec = csh -c 'echo \"Welcome to %S!\" |
/usr/local/samba/bin/smbclient -M %m -I %I' &
Of course, this could get annoying after a while :-)
See also preexec close and postexec.
Default: preexec =
Example: preexec = echo \"%u connected to %S from %m (%I)\" >> /tmp/log
Sieh Dir an, was in unserem Samba-Paket definiert wird, wenn SAMBA_DEBUG
groesser 2 gesetzt ist:
[...]
if [ $SAMBA_DEBUGLEVEL -gt 0 ]
then
debuglevel="$SAMBA_DEBUGLEVEL"
if [ $debuglevel -gt 2 ]
then
smbinfo='yes'
else
smbinfo='no'
fi
else
debuglevel='0'
smbinfo='no'
fi
[...]
do_smbinfo ()
{
if [ "$smbinfo" = "yes" ]
then
x='T=%T|d=%d|v=%v|h=%h|L=%L|N=%N|p=%p|R=%R|S=%S|P=%P|U=%U|G=%G|u=%u|g=%g|H=%H|I=%I|M=%M|m=%m|a=%a'
echo " root preexec = /var/install/bin/samba-smbinfo \"$x\" &"
fi
}
[...]
{
echo "[public]"
echo " comment = public directory on $HOSTNAME"
echo " path = $path"
echo " force create mode = 0777"
echo " force directory mode= 0777"
echo " browseable = yes"
echo " writeable = yes"
do_smbinfo
[...]
Das Skript /var/install/bin/samba-smbinfo:
#! /bin/sh
#----------------------------------------------------------------------------
# /var/install/bin/samba-smbinfo - send info with samba vars to machine
#
# Copyright (c) 2002-2015 Thomas Bork, tom(at)eisfair(dot)net
#
# Creation : 2002-07-28 tb
# Last Update: 2015-06-20 tb
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#----------------------------------------------------------------------------
outputfile=`/bin/mktemp -t samba-smbinfo-XXXXXXXXXX`
if [ $? -ne 0 ]
then
outputfile="/tmp/samba-smbinfo-$$"
fi
msgcommand ()
{
cat "$outputfile" | awk '{print
gensub("<tab>","\t","g",gensub("<newline>","\n","g"))}' |
/usr/bin/smbclient -U "eisfair Samba Server" -N -M "$machine" -I "$ip"
1>/dev/null
rm -f "$outputfile"
}
>"$outputfile"
oldifs="$IFS"
IFS='|'
set -- $1
while [ -n "$1" ]
do
if [ -n "`echo "$1" | grep '='`" ]
then
index=`echo "$1" | cut -d'=' -f1`
value=`echo "$1" | cut -d'=' -f2`
case $index in
T ) message="Datum/Zeit<tab><tab><tab><tab>(%$index)<tab>=
$value";;
d ) message="PID des Servers<tab><tab><tab><tab>(%$index)<tab>=
$value";;
v ) message="Samba-Version<tab><tab><tab><tab>(%$index)<tab>=
$value";;
h ) message="(Internet)Hostname des
Servers<tab><tab>(%$index)<tab>= $value";;
L ) message="NETBIOS-Name des
Servers<tab><tab><tab>(%$index)<tab>= $value";;
N ) message="NIS
Heimat-Verzeichnis<tab><tab><tab>(%$index)<tab>= $value";;
p ) message="Pfad des
NIS-Heimatverzeichnisses<tab><tab>(%$index)<tab>= $value";;
R ) message="Ausgehandeltes
Protokoll-Level<tab><tab>(%$index)<tab>= $value";;
S ) message="Name der aktuellen
Freigabe<tab><tab><tab>(%$index)<tab>= $value";;
P ) message="Hauptverzeichnis der aktuellen
Freigabe<tab>(%$index)<tab>= $value";;
U ) message="Vom Client angeforderter
Benutzername<tab>(%$index)<tab>= $value";;
G ) message="Primaere Gruppe des angeforderten
Benutzers<tab>(%$index)<tab>= $value";;
u ) message="Name des effektiven
Benutzers<tab><tab>(%$index)<tab>= $value";;
g ) message="Primaerer Gruppenname des effektiven
Benutzers<tab>(%$index)<tab>= $value";;
H ) message="Heimatverzeichnis des effektiven
Benutzers<tab>(%$index)<tab>= $value";;
I ) message="IP Adresse des
Client-Rechners<tab><tab>(%$index)<tab>= $value"
ip="$value"
;;
M ) message="(Internet)Hostname des
Client-Rechners<tab>(%$index)<tab>= $value";;
m ) message="NETBIOS-Name des
Client-Rechners<tab><tab>(%$index)<tab>= $value"
machine="$value"
;;
a ) message="Betriebssystem des
Client-Rechners<tab><tab>(%$index)<tab>= $value";;
esac
echo "$message" >>"$outputfile"
fi
shift
done
IFS="$oldifs"
msgcommand
Das heisst, Du kannst beliebige Dinge skripten und ausführen lassen: auf
Namen filtern, Mails senden, die Freigabe deaktivieren (smbcontrol smbd
close-share share-Name) usw.
Viel Spass beim Basteln...
--
der tom
[eisfair-team]
Mehr Informationen über die Mailingliste Eisfair