Koha/debian/scripts
Tomas Cohen Arazi f312f83dbc 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>
2018-03-15 08:22:04 +00:00
..
koha-create Bug 20234: Make maintenance scripts use koha-zebra instead of koha-*-zebra 2018-02-27 15:58:33 -03:00
koha-create-dirs Bug 17951: Make koha-create set template_cache_dir correctly 2017-12-22 13:15:39 -03:00
koha-disable Bug 20234: Make maintenance scripts use koha-zebra instead of koha-*-zebra 2018-02-27 15:58:33 -03:00
koha-dump Bug 14532: (followup) Use tar's --exclude for simplicity 2016-03-02 04:39:51 +00:00
koha-dump-defaults Bug 17265 - Make koha-create-defaults less greedy 2017-01-13 11:33:11 +00:00
koha-elasticsearch Bug 19462: Add a koha-elasticsearch command 2017-10-27 14:10:31 -03:00
koha-email-disable Bug 11404: koha-functions.sh introduced for reuse 2014-05-19 21:49:06 +00:00
koha-email-enable Bug 11404: koha-functions.sh introduced for reuse 2014-05-19 21:49:06 +00:00
koha-enable Bug 11404: koha-functions.sh introduced for reuse 2014-05-19 21:49:06 +00:00
koha-enable-sip Bug 9250 - [SIGNED-OFF] provide commands to manage the SIP server 2013-05-01 22:03:13 -04:00
koha-foreach Bug 17717: Add a --chdir option switch for koha-foreach 2018-03-15 08:22:04 +00:00
koha-functions.sh Bug 18913: Allow symbolic link in /etc/koha/sites 2018-02-19 16:41:00 -03:00
koha-indexer Bug 18554: Adjust a few typos including responsability 2017-05-09 21:03:22 +00:00
koha-list Bug 15303 Letsencrypt option for Debian package installations 2016-04-29 13:04:31 +00:00
koha-mysql Bug 12372: (QA followup) Standardized argument parsing for koha-mysql. 2015-08-24 13:18:08 -03:00
koha-mysqlcheck Bug 11404: koha-functions.sh introduced for reuse 2014-05-19 21:49:06 +00:00
koha-passwd Bug 13143 - Detect if the password is in a pipe 2016-01-27 06:27:08 +00:00
koha-plack Bug 18964: Add --debugger option to koha-plack 2018-01-23 16:05:54 -03:00
koha-rebuild-zebra Bug 18069: Remove residue of rebuild_zebra -x 2017-03-22 21:14:31 +00:00
koha-remove Bug 20234: Make maintenance scripts use koha-zebra instead of koha-*-zebra 2018-02-27 15:58:33 -03:00
koha-reset-passwd Bug 11404: koha-functions.sh introduced for reuse 2014-05-19 21:49:06 +00:00
koha-restart-zebra Bug 13896: (QA followup) fix koha-{stop|restart}-zebra too 2015-04-08 14:56:44 -03:00
koha-restore Bug 11404: koha-functions.sh introduced for reuse 2014-05-19 21:49:06 +00:00
koha-run-backups Bug 9260: stop koha-run-backups complaining "missing ]" 2012-12-21 08:11:39 -05:00
koha-shell Bug 18502: Make koha-shell set the right PERL5LIB on dev installs 2017-05-05 12:12:04 -03:00
koha-sitemap Bug 16733: Adjust other debian scripts using PERL5LIB 2017-01-20 14:15:27 +00:00
koha-start-sip Bug 16733: Adjust other debian scripts using PERL5LIB 2017-01-20 14:15:27 +00:00
koha-start-zebra Bug 15714: Remove zebra.log and add loglevels 2016-02-24 03:38:18 +00:00
koha-stop-sip Bug 16733: Adjust other debian scripts using PERL5LIB 2017-01-20 14:15:27 +00:00
koha-stop-zebra Bug 16885: koha-stop-zebra should be more sure of stopping zebrasrv 2016-08-17 17:57:15 +00:00
koha-translate Bug 16749: Use is_instance to make sure the dev instance exist 2017-02-17 13:20:58 +00:00
koha-upgrade-schema Bug 16749: Add is_instance check to koha-upgrade-schema 2017-02-17 13:20:58 +00:00
koha-upgrade-to-3.4 Bug 6651 - fix splitting of names when updating to 3.4 2011-09-13 10:29:12 +12:00
koha-zebra Bug 17467: Add missing --status switch handling 2018-01-19 15:11:14 -03:00