Exemplo n.º 1
0
 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)
Exemplo n.º 2
0
 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)
Exemplo n.º 3
0
 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)
Exemplo n.º 4
0
 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)
Exemplo n.º 5
0
 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)
Exemplo n.º 6
0
 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)
Exemplo n.º 7
0
 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)
Exemplo n.º 8
0
 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)
Exemplo n.º 9
0
 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)
Exemplo n.º 10
0
    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, {}
Exemplo n.º 11
0
    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, {}