From 5d342044a27959d79847ca1dd5311ad005634818 Mon Sep 17 00:00:00 2001 From: douglas-raillard-arm Date: Wed, 24 Mar 2021 10:09:45 +0000 Subject: [PATCH] host and ssh: Fix sudo invocation Add -k to sudo invocation to avoid using cached credentials. If cached credentials is used, sudo will not write a prompt again, leading to the stderr fixup code to remove a char from stderr output. --- devlib/host.py | 4 ++-- devlib/utils/ssh.py | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/devlib/host.py b/devlib/host.py index fcd48cb..8bd0edf 100644 --- a/devlib/host.py +++ b/devlib/host.py @@ -102,7 +102,7 @@ class LocalConnection(ConnectionBase): if self.unrooted: raise TargetStableError('unrooted') password = self._get_password() - command = "echo {} | sudo -p ' ' -S -- sh -c {}".format(quote(password), quote(command)) + command = "echo {} | sudo -k -p ' ' -S -- sh -c {}".format(quote(password), quote(command)) ignore = None if check_exit_code else 'all' try: stdout, stderr = check_output(command, shell=True, timeout=timeout, ignore=ignore) @@ -127,7 +127,7 @@ class LocalConnection(ConnectionBase): password = self._get_password() # The sudo prompt will add a space on stderr, but we cannot filter # it out here - command = "echo {} | sudo -p ' ' -S -- sh -c {}".format(quote(password), quote(command)) + command = "echo {} | sudo -k -p ' ' -S -- sh -c {}".format(quote(password), quote(command)) # Make sure to get a new PGID so PopenBackgroundCommand() can kill # all sub processes that could be started without troubles. diff --git a/devlib/utils/ssh.py b/devlib/utils/ssh.py index 0177e31..3235ce8 100644 --- a/devlib/utils/ssh.py +++ b/devlib/utils/ssh.py @@ -59,7 +59,7 @@ from devlib.connection import (ConnectionBase, ParamikoBackgroundCommand, PopenB SSHTransferManager) -DEFAULT_SSH_SUDO_COMMAND = "sudo -p ' ' -S -- sh -c {}" +DEFAULT_SSH_SUDO_COMMAND = "sudo -k -p ' ' -S -- sh -c {}" ssh = None