Skip to content
Snippets Groups Projects
Commit 489e294c authored by micah's avatar micah :speech_balloon:
Browse files

Added a slightly modified version of the anti-fascist patch (allows for

a configurable admingroup to be set, instead of forcing it to be root),
closes debian bug#370396
parent 8589faa7
No related branches found
No related tags found
No related merge requests found
...@@ -15,3 +15,4 @@ cmccallum@thecsl.org ...@@ -15,3 +15,4 @@ cmccallum@thecsl.org
Daniel.Bonniot@inria.fr Daniel.Bonniot@inria.fr
Brad Fritz <brad@fritzfam.com> -- trac patch Brad Fritz <brad@fritzfam.com> -- trac patch
garcondumonde@riseup.net garcondumonde@riseup.net
Martin Krafft madduck@debian.org -- admingroup patch
\ No newline at end of file
...@@ -3,6 +3,11 @@ version 0.9.4 -- unreleased ...@@ -3,6 +3,11 @@ version 0.9.4 -- unreleased
. Fixed bug in toint(), and thus isnow(), which caused it . Fixed bug in toint(), and thus isnow(), which caused it
to not work when run from cron. to not work when run from cron.
. Recursively ignore subdirs in /etc/backup.d (Closes: #361102) . Recursively ignore subdirs in /etc/backup.d (Closes: #361102)
. Add admingroup option to configuration to allow a group that can
read/write configurations (instead of only allowing root). Checks
and complains about group-readable files only when the group differs
from the one in the configuration file (default is root as before).
Thanks to Martin Krafft for the patch (Closes: #370396).
handler changes handler changes
Added tar handler Added tar handler
mysql: mysql:
......
...@@ -25,6 +25,10 @@ reportsuccess = yes ...@@ -25,6 +25,10 @@ reportsuccess = yes
# even if there was no error. (default = yes) # even if there was no error. (default = yes)
reportwarning = yes reportwarning = yes
# set to the administration group that is allowed to
# read/write configuration files in /etc/backup.d
admingroup = root
####################################################### #######################################################
# for most installations, the defaults below are good # # for most installations, the defaults below are good #
####################################################### #######################################################
......
...@@ -130,17 +130,37 @@ function msg { ...@@ -130,17 +130,37 @@ function msg {
# #
function check_perms() { function check_perms() {
local file=$1 local file=$1
local perms=`ls -ld $file` local perms
perms=${perms:4:6} perms=($(stat -L --printf='%a %g %G %u %U' $file))
if [ "$perms" != "------" ]; then local gperm=${perms[0]:1:1}
echo "Configuration files must not be group or world writable/readable! Dying on file $file" local wperm=${perms[0]:2:1}
fatal "Configuration files must not be group or world writable/readable! Dying on file $file" local gid=${perms[1]}
fi local group=${perms[2]}
if [ `ls -ld $file | awk '{print $3}'` != "root" ]; then local owner=${perms[3]}
echo "Configuration files must be owned by root! Dying on file $file"
fatal "Configuration files must be owned by root! Dying on file $file" if [ "$owner" != 0 ]; then
fi echo "Configuration files must be owned by root! Dying on file $file"
fatal "Configuration files must be owned by root! Dying on file $file"
fi
if [ $wperm -gt 0 ]; then
echo "Configuration files must not be world writable/readable! Dying on file $file"
fatal "Configuration files must not be world writable/readable! Dying on file $file"
fi
if [ $gperm -gt 0 ]; then
case "$admingroup" in
$gid|$group) :;;
*)
if [ "$gid" != 0 ]; then
echo "Configuration files must writable/readable by group ${perms[2]}! Dying on file $file"
fatal "Configuration files must writable/readable by group ${perms[2]}! Dying on file $file"
fi
;;
esac
fi
} }
# simple lowercase function # simple lowercase function
...@@ -423,6 +443,7 @@ getconf PGSQLDUMP /usr/bin/pg_dump ...@@ -423,6 +443,7 @@ getconf PGSQLDUMP /usr/bin/pg_dump
getconf PGSQLDUMPALL /usr/bin/pg_dumpall getconf PGSQLDUMPALL /usr/bin/pg_dumpall
getconf GZIP /bin/gzip getconf GZIP /bin/gzip
getconf RSYNC /usr/bin/rsync getconf RSYNC /usr/bin/rsync
getconf admingroup root
# initialize vservers support # initialize vservers support
# (get config variables and check real vservers availability) # (get config variables and check real vservers availability)
...@@ -461,6 +482,7 @@ fi ...@@ -461,6 +482,7 @@ fi
for file in $files; do for file in $files; do
[ -f "$file" ] || continue [ -f "$file" ] || continue
check_perms ${file%/*} # check containing dir
check_perms $file check_perms $file
suffix="${file##*.}" suffix="${file##*.}"
base=`basename $file` base=`basename $file`
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment