Koha-clms/debian
Tomas Cohen Arazi 67cecb7f75 Bug 17717: Add a --chdir option switch for koha-foreach
Until Perl 5.26, the current directory is added to @INC when running a
Perl script [1]. Having the current directory in @INC means it can be
tried to be traversed when performing a lib lookup. Since version 5.18,
Perl dies when it finds an unreadable directory (permissions) in @INC
that needs to be traversed. This behaviour won't change because Perl
devs consider it an enhancement to security. [2]

Because of this, we need to make sure our scripts are ran **from** a
directory in which they have read permissions.

Ths patch adds a --chdir option switch to the **koha-foreach** wrapper
script, that makes the inner shells/scripts to be ran within the Koha
instance's user home directory.

The change is trivial and should be QAed easily. I tested this on a prod
server:

- Create a /tmp/test.pl file containing:

use Modern::Perl;

use Cwd;
my $dir = getcwd;

warn $dir;

1;

A) then create a cronjob entry to run it using koha-foreach:
(in /etc/cron.d/test):
1/* * * * * root koha-foreach perl /tmp/test.pl
- Once I noticed the cronjob ran, I used mutt to read the emails in the
root user.
=> FAIL:
...
Subject: Cron <root@koha> koha-foreach --enabled perl /tmp/test.pl

"/root"
"/root"
"/root"
"/root"
"/root"
...

B) I then used the patched koha-foreach with different results:
=> SUCCESS:
...
Subject: Cron <root@koha> /root/koha-foreach --chdir --enabled perl /tmp/test.pl

"/var/lib/koha/acaderc"
"/var/lib/koha/agro"
"/var/lib/koha/anc"
"/var/lib/koha/arico"
"/var/lib/koha/artes"
...

So this patch's approach works. But...

C) master's koha-foreach seems to work just the same... I think it is
because of my previous attempt to fix this by using sudo in koha-shell.
So I think environmental conditions affect the behaviour (which shell is
configured for cron, sudo configuration, etc).

====

In conclusion, I think we should go ahead with this patch as it will solve
peoples issues, and it is a right solution (option #5 on the list) to
this Perl behaviour change. It doesn't cover other commands, but
followup patches could do.

I avoided /tmp as it is writable by any user... so it is an easy path
for both exploiting by replacing some lib, and also because the
existence of an unreadable dir that the interpreter could try to
traverse (unreadable /tmp/Authen or /tmp/Koha will trigger the same
error, and I assume people know what they are putting on the instance's
dir, at least it will be easier to track).

A followup patch takes care of making the cronjobs use --chdir when
calling koha-foreach

[1] https://lists.debian.org/debian-devel-announce/2016/08/msg00013.html
[2] https://rt.perl.org/Public/Bug/Display.html?id=123795

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>

Signed-off-by: Marcel de Rooy <m.de.rooy@rijksmuseum.nl>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
(cherry picked from commit 3db7e1a63a)
Signed-off-by: Fridolin Somers <fridolin.somers@biblibre.com>
2018-04-10 09:15:50 +02:00
..
docs Bug 17717: Add a --chdir option switch for koha-foreach 2018-04-10 09:15:50 +02:00
scripts Bug 17717: Add a --chdir option switch for koha-foreach 2018-04-10 09:15:50 +02:00
source Bug 18696: Change debian/source/format to quilt 2018-01-25 10:23:50 +01:00
templates Bug 18571: Add default ES configuration to koha-conf-site.xml.in 2017-05-10 16:26:35 +00:00
README.build Bug 5602: Changes to account for the version update. 2011-08-04 10:26:39 +12:00
bd-to-depends Bug 4847: Remove the python dependency for package builds 2015-03-25 11:22:49 -03:00
build-git-snapshot Bug 20072 - Fix build-git-snapshot for Debian source format quilt 2018-02-02 08:42:52 +01:00
changelog Bug 17019 - debian/changelog update 2016-08-08 14:30:55 +00:00
compat Replace old, non-functional Debian packaging with a new one. 2010-04-16 00:41:54 -04:00
control d/control 17.05.08 2018-01-25 10:25:09 +01:00
control.in Bug 17618: perl-modules Debian package name change 2017-05-09 21:29:51 +00:00
copyright Update FSF address in debian/copyright. 2010-06-02 07:14:43 -04:00
koha-common.README.Debian Bug 5139 - packages now do email and other cron jobs 2010-10-06 08:12:14 -04:00
koha-common.bash-completion Bug 14727: koha-indexer tab completion in bash 2015-10-13 11:37:55 -03:00
koha-common.config Bug 11404: (follow-up) only ask user if there are instances needing upgrading 2014-05-19 21:51:33 +00:00
koha-common.cron.d Bug 16823 - Comment out koha-rebuild-zebra in koha-common.cron.d 2016-07-08 13:26:55 +00:00
koha-common.cron.daily Bug 17669: Add new switch to crontab example and debian daily cron file 2017-04-21 13:55:25 -04:00
koha-common.cron.hourly Add koha-foreach, a script to run a command for each Koha instance. 2010-05-25 07:59:45 -04:00
koha-common.cron.monthly Bug 13585: Add a cronjob which send UsageStats monthly. 2015-09-07 10:47:06 -03:00
koha-common.default Bug 16830: Remove -x usage on koha-indexer 2016-08-04 19:41:41 +00:00
koha-common.dirs Split off koha-common. 2010-05-25 07:58:56 -04:00
koha-common.docs Bug 10802: make Debian package install history.txt 2013-09-16 15:27:16 +00:00
koha-common.init Bug 20234: Update service description in koha-common.init 2018-04-10 09:03:09 +02:00
koha-common.install Bug 16016: Sitemap handling scripts for packages 2016-05-04 13:34:21 +00:00
koha-common.logrotate Bug 20234: Make maintenance scripts use koha-zebra instead of koha-*-zebra 2018-04-10 09:02:37 +02:00
koha-common.postinst Bug 14106: (QA followup) avoid failures if no instances created 2015-05-22 12:28:14 -03:00
koha-common.preinst Bug 14068: fix preinst for fresh package installs 2015-04-29 15:14:10 -03:00
koha-common.templates Bug 11404: Make the install process aware of the changes 2014-05-19 21:50:54 +00:00
koha-post-install-setup Add koha-post-install-setup, a script to be run by sysadmin post-install. 2010-05-25 07:59:19 -04:00
koha.README.Debian Bug 5550 - correct filename referenced in docs 2011-01-01 07:43:30 +13:00
koha.apache-ports Replace old, non-functional Debian packaging with a new one. 2010-04-16 00:41:54 -04:00
koha.config Replace old, non-functional Debian packaging with a new one. 2010-04-16 00:41:54 -04:00
koha.dirs Replace old, non-functional Debian packaging with a new one. 2010-04-16 00:41:54 -04:00
koha.install Bug 7818 : Following, fixing so the packages build Still need to update koha-create to make use of the new file 2012-07-06 11:17:19 +02:00
koha.postinst Bug 4817: Point to README.Debian in koha package description, postinst output. 2010-05-27 05:19:03 -04:00
koha.postrm When purging, remove /var/log/koha. 2010-04-22 06:15:31 -04:00
koha.prerm Replace old, non-functional Debian packaging with a new one. 2010-04-16 00:41:54 -04:00
list-deps Bug 18907: Build has deprecating message 2017-12-21 09:16:13 +01:00
rules Bug 14167: remove the log4perl.conf file from /etc for packages 2015-07-24 12:54:23 -03:00
unavailable.html Add koha-disable, a script to disable a Koha instance. 2010-05-25 07:59:29 -04:00
update-control Add tools to update debian/control's build dependencies. 2010-06-02 07:14:36 -04:00

README.build

In order to build .deb packages, following debian packages need to be present
(installed): 
devscripts
pbuilder
dh-make
fakeroot

As root (or sudo) execute:
pbuilder create

Executing build-git-snapshot without any arguments will leave package and the
rest in some pbuilder dir, eg. /var/cache/pbuilder/result It is highly
recommended that --buildresult option is used.