def run(self, user, password, *options): """ Run a shell command. The command is executed as: "su - <user> -c <cmd>" and the user/password is authenticated using PAM. :param user: A user name. :type user: str :param password: The password. :type password: str :param options: List of options. :type options: list :return: (status, {stdout:<str>, stderr:<str>}) :rtype: tuple """ if not authenticate(user, password): return os.EX_NOPERM, {} shell = _Shell() context = Context.current() path = os.path.join('/tmp', context.sn) fp = open(path, 'w+') try: fp.write(self.content) finally: fp.close() try: os.chmod(path, 0755) cmd = [path] cmd += options cmd = ' '.join(cmd) return shell.run('su', '-', user, '-c', cmd) finally: os.unlink(path)
def run(self, user, password, *options): """ Run a shell command. The command is executed as: "su - <user> -c <cmd>" and the user/password is authenticated using PAM. :param user: A user name. :type user: str :param password: The password. :type password: str :param options: List of options. :type options: list :return: (status, {stdout:<str>, stderr:<str>}) :rtype: tuple """ if not authenticate(user, password): return os.EX_NOPERM, {} shell = _Shell() context = Context.current() path = os.path.join("/tmp", context.sn) fp = open(path, "w+") try: fp.write(self.content) finally: fp.close() try: os.chmod(path, 0755) cmd = [path] cmd += options cmd = " ".join(cmd) return shell.run("su", "-", user, "-c", cmd) finally: os.unlink(path)
def test_exception_raised(self, _start, _authenticate, _end): _start.return_value = 0 _authenticate.side_effect = ValueError user = "******" password = "******" service = "login" valid = pam.authenticate(user, password, service) self.assertTrue(_start.called) self.assertTrue(_authenticate.called) self.assertFalse(_end.called) self.assertFalse(valid)
def test_not_authenticated(self, _start, _authenticate, _end): _start.return_value = 0 _authenticate.return_value = 1 user = "******" password = "******" service = "login" valid = pam.authenticate(user, password, service) self.assertTrue(_start.called) self.assertTrue(_authenticate.called) self.assertTrue(_end.called) self.assertFalse(valid)
def test_exception_raised(self, _start, _authenticate, _end): _start.return_value = 0 _authenticate.side_effect = ValueError user = '******' password = '******' service = 'login' valid = pam.authenticate(user, password, service) self.assertTrue(_start.called) self.assertTrue(_authenticate.called) self.assertFalse(_end.called) self.assertFalse(valid)
def test_not_authenticated(self, _start, _authenticate, _end): _start.return_value = 0 _authenticate.return_value = 1 user = '******' password = '******' service = 'login' valid = pam.authenticate(user, password, service) self.assertTrue(_start.called) self.assertTrue(_authenticate.called) self.assertTrue(_end.called) self.assertFalse(valid)
def test_exception_raised(self, lib): lib.pam_start.return_value = 0 lib.pam_authenticate.side_effect = ValueError user = '******' password = '******' service = 'login' valid = pam.authenticate(user, password, service) self.assertTrue(lib.load.called) self.assertTrue(lib.pam_start.called) self.assertTrue(lib.pam_authenticate.called) self.assertFalse(lib.pam_end.called) self.assertFalse(valid)
def test_not_authenticated(self, lib): lib.pam_start.return_value = 0 lib.pam_authenticate.return_value = 1 user = '******' password = '******' service = 'login' valid = pam.authenticate(user, password, service) self.assertTrue(lib.load.called) self.assertTrue(lib.pam_start.called) self.assertTrue(lib.pam_authenticate.called) self.assertTrue(lib.pam_end.called) self.assertFalse(valid)
def run(self, cmd): """ Run a shell command. The command is executed as: "su - <user> -c <cmd>" and the user/password is authenticated using PAM. :param cmd: The command & arguments. :type cmd: str :return: (status, {stdout:<str>, stderr:<str>}) :rtype: tuple """ if authenticate(self.user, self.password): shell = _Shell() return shell.run("su", "-", self.user, "-c", cmd) else: return os.EX_NOPERM, {}
def run(self, cmd): """ Run a shell command. The command is executed as: "su - <user> -c <cmd>" and the user/password is authenticated using PAM. :param cmd: The command & arguments. :type cmd: str :return: (status, {stdout:<str>, stderr:<str>}) :rtype: tuple """ if authenticate(self.user, self.password): shell = _Shell() return shell.run('su', '-', self.user, '-c', cmd) else: return os.EX_NOPERM, {}