Bug 15012: use sudo instead of su in koha-shell
authorJonathan Druart <jonathan.druart@bugs.koha-community.org>
Wed, 14 Oct 2015 13:45:24 +0000 (13:45 +0000)
committerLiz Rea <wizzyrea@gmail.com>
Thu, 29 Oct 2015 23:02:36 +0000 (12:02 +1300)
Not sure this is the best way to fix it but it looks to work.

Test plan:
  sudo koha-shell kohadev
should not return any error
Without this patch, you should get
  bash: cannot set terminal process group (-1): Inappropriate ioctl for device
  bash: no job control in this shell

Confirm that other options work as before

Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Works as expected. Tested on kohadevbox:ansible.
KOHA_CONF and PERL5LIB are correctly set on the child shell.
Bonus point: koha-shell doesn't die if the user issues Ctrl+C to abort an execution.

Signed-off-by: Robin Sheat <robin@catalyst.net.nz>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit 0e9e51db94abdabe6e603d98a05bf315c8d3fa91)
Signed-off-by: Chris Cormack <chris@bigballofwax.co.nz>
(cherry picked from commit fb546fa7ac5d572d722aa4dcc79edb56976b517b)
Signed-off-by: Liz Rea <wizzyrea@gmail.com>

debian/scripts/koha-shell

index 8d05b51..b8d92f5 100755 (executable)
@@ -42,18 +42,18 @@ my $shell = $opts{shell} || $ENV{SHELL} || '/bin/sh';
 
 # Now we're set up, build the 'su' command
 my @su_args;
-push @su_args, '/bin/su';
-push @su_args, '--preserve-environment' if $opts{'preserve-environment'};
+push @su_args, '/usr/bin/sudo';
+push @su_args, '--preserve-env' if $opts{'preserve-environment'};
 push @su_args, '--login' if $opts{login};
-push @su_args, '--command',
+push @su_args, "-u", "$instance-koha";
+push @su_args,
     "env "
   . "KOHA_CONF=/etc/koha/sites/$instance/koha-conf.xml "
   . "PERL5LIB=/usr/share/koha/lib $shell"
   . ( $opts{command} ? " -c '$opts{command}'" : '' );
-push @su_args, "$instance-koha";
 
 print "Command: '".join("' '",@su_args)."'\n" if $opts{verbose};
-system(@su_args);
+system("@su_args");
 if ( $? == -1 ) {
     print STDERR "failed to execute: $!\n";
 }