Пример #1
0
    def setup_groups(self):
        """
        Add groups for configured users
        """
        system_users = Users(self.root_dir)

        for user in self.xml_state.get_users():
            for group in self.xml_state.get_user_groups(user.get_name()):
                if not system_users.group_exists(group):
                    log.info('Adding group %s', group)
                    system_users.group_add(group, [])
Пример #2
0
    def setup_users(self):
        """
        Add/Modify configured users
        """
        system_users = Users(self.root_dir)

        for user in self.xml_state.get_users():
            log.info('Setting up user %s', user.get_name())
            password = user.get_password()
            password_format = user.get_pwdformat()
            home_path = user.get_home()
            user_name = user.get_name()
            user_id = user.get_id()
            user_realname = user.get_realname()
            user_shell = user.get_shell()
            user_groups = self.xml_state.get_user_groups(user.get_name())

            user_exists = system_users.user_exists(user_name)

            options = []
            if password_format == 'plain':
                password = self._create_passwd_hash(password)
            if password:
                options.append('-p')
                options.append(password)
            if user_shell:
                options.append('-s')
                options.append(user_shell)
            if len(user_groups):
                options.append('-g')
                options.append(user_groups[0])
                if len(user_groups) > 1:
                    options.append('-G')
                    options.append(','.join(user_groups[1:]))
            if user_id:
                options.append('-u')
                options.append('{0}'.format(user_id))
            if user_realname:
                options.append('-c')
                options.append(user_realname)
            if not user_exists and home_path:
                options.append('-m')
                options.append('-d')
                options.append(home_path)

            if user_exists:
                log.info('--> Modifying user: %s [%s]', user_name,
                         user_groups[0] if len(user_groups) else '')
                system_users.user_modify(user_name, options)
            else:
                log.info('--> Adding user: %s [%s]', user_name,
                         user_groups[0] if len(user_groups) else '')
                system_users.user_add(user_name, options)
                if home_path:
                    log.info('--> Setting permissions for %s', home_path)
                    # Emtpy group string assumes the login or default group
                    system_users.setup_home_for_user(
                        user_name, user_groups[0] if len(user_groups) else '',
                        home_path)
Пример #3
0
    def setup_groups(self):
        """
        Add groups for configured users
        """
        system_users = Users(self.root_dir)

        for user in self.xml_state.get_users():
            for group in self.xml_state.get_user_groups(user.get_name()):
                if not system_users.group_exists(group):
                    log.info('Adding group %s', group)
                    system_users.group_add(group, [])
Пример #4
0
    def setup_users(self) -> None:
        """
        Add/Modify configured users
        """
        system_users = Users(self.root_dir)

        for user in self.xml_state.get_users():
            log.info('Setting up user {0}'.format(user.get_name()))
            password = user.get_password()
            password_format = user.get_pwdformat()
            home_path = user.get_home()
            user_name = user.get_name()
            user_id = user.get_id()
            user_realname = user.get_realname()
            user_shell = user.get_shell()
            user_groups = self.xml_state.get_user_groups(user.get_name())

            user_exists = system_users.user_exists(user_name)

            options = self._process_user_options(
                password_format, password, user_shell, user_groups,
                user_id, user_realname, user_exists, home_path
            )

            group_msg = '--> Primary group for user {0}: {1}'.format(
                user_name, user_groups[0]
            ) if len(user_groups) else ''

            if user_exists:
                log.info('--> Modifying user: {0}'.format(user_name))
                if group_msg:
                    log.info(group_msg)
                system_users.user_modify(user_name, options)
            else:
                log.info('--> Adding user: {0}'.format(user_name))
                if group_msg:
                    log.info(group_msg)
                system_users.user_add(user_name, options)
                if home_path:
                    log.info(
                        '--> Setting permissions for {0}'.format(home_path)
                    )
                    # Emtpy group string assumes the login or default group
                    system_users.setup_home_for_user(
                        user_name,
                        user_groups[0] if len(user_groups) else '',
                        home_path
                    )
Пример #5
0
class TestUsers:
    def setup(self):
        self.users = Users('root_dir')

    def setup_method(self, cls):
        self.setup()

    @patch('kiwi.system.users.Command.run')
    def test_user_exists(self, mock_command):
        assert self.users.user_exists('user') is True
        mock_command.assert_called_once_with(
            ['chroot', 'root_dir', 'grep', '-q', '^user:'******'/etc/passwd'])

    @patch('kiwi.system.users.Command.run')
    def test_user_exists_return_value(self, mock_command):
        assert self.users.user_exists('user') is True
        mock_command.side_effect = Exception
        assert self.users.user_exists('user') is False

    @patch('kiwi.system.users.Command.run')
    def test_group_exists(self, mock_command):
        assert self.users.group_exists('group') is True
        mock_command.assert_called_once_with(
            ['chroot', 'root_dir', 'grep', '-q', '^group:', '/etc/group'])

    @patch('kiwi.system.users.Command.run')
    def test_group_add(self, mock_command):
        assert self.users.group_add('group', ['--option', 'value']) is None
        mock_command.assert_called_once_with(
            ['chroot', 'root_dir', 'groupadd', '--option', 'value', 'group'])

    @patch('kiwi.system.users.Command.run')
    def test_user_add(self, mock_command):
        assert self.users.user_add('user', ['--option', 'value']) is None
        mock_command.assert_called_once_with(
            ['chroot', 'root_dir', 'useradd', '--option', 'value', 'user'])

    @patch('kiwi.system.users.Command.run')
    def test_user_modify(self, mock_command):
        assert self.users.user_modify('user', ['--option', 'value']) is None
        mock_command.assert_called_once_with(
            ['chroot', 'root_dir', 'usermod', '--option', 'value', 'user'])

    @patch('kiwi.system.users.Command.run')
    def test_setup_home_for_user(self, mock_command):
        assert self.users.setup_home_for_user('user', 'group', '/home/path') \
            is None
        mock_command.assert_called_once_with(
            ['chroot', 'root_dir', 'chown', '-R', 'user:group', '/home/path'])
Пример #6
0
 def setup(self):
     self.users = Users('root_dir')
Пример #7
0
 def setup(self):
     self.users = Users('root_dir')
Пример #8
0
class TestUsers(object):
    def setup(self):
        self.users = Users('root_dir')

    @patch('kiwi.system.users.Command.run')
    def test_user_exists(self, mock_command):
        self.users.user_exists('user')
        mock_command.assert_called_once_with(
            ['chroot', 'root_dir', 'grep', '-q', '^user:'******'/etc/passwd']
        )

    @patch('kiwi.system.users.Command.run')
    def test_user_exists_return_value(self, mock_command):
        assert self.users.user_exists('user') is True
        mock_command.side_effect = Exception
        assert self.users.user_exists('user') is False

    @patch('kiwi.system.users.Command.run')
    def test_group_exists(self, mock_command):
        self.users.group_exists('group')
        mock_command.assert_called_once_with(
            ['chroot', 'root_dir', 'grep', '-q', '^group:', '/etc/group']
        )

    @patch('kiwi.system.users.Command.run')
    def test_group_add(self, mock_command):
        self.users.group_add('group', ['--option', 'value'])
        mock_command.assert_called_once_with(
            ['chroot', 'root_dir', 'groupadd', '--option', 'value', 'group']
        )

    @patch('kiwi.system.users.Command.run')
    def test_user_add(self, mock_command):
        self.users.user_add('user', ['--option', 'value'])
        mock_command.assert_called_once_with(
            ['chroot', 'root_dir', 'useradd', '--option', 'value', 'user']
        )

    @patch('kiwi.system.users.Command.run')
    def test_user_modify(self, mock_command):
        self.users.user_modify('user', ['--option', 'value'])
        mock_command.assert_called_once_with(
            ['chroot', 'root_dir', 'usermod', '--option', 'value', 'user']
        )

    @patch('kiwi.system.users.Command.run')
    def test_setup_home_for_user(self, mock_command):
        self.users.setup_home_for_user('user', 'group', '/home/path')
        mock_command.assert_called_once_with(
            ['chroot', 'root_dir', 'chown', '-R', 'user:group', '/home/path']
        )
Пример #9
0
    def setup_users(self):
        """
        Add/Modify configured users
        """
        system_users = Users(self.root_dir)

        for user in self.xml_state.get_users():
            log.info('Setting up user %s', user.get_name())
            password = user.get_password()
            password_format = user.get_pwdformat()
            home_path = user.get_home()
            user_name = user.get_name()
            user_id = user.get_id()
            user_realname = user.get_realname()
            user_shell = user.get_shell()
            user_groups = self.xml_state.get_user_groups(user.get_name())

            user_exists = system_users.user_exists(user_name)

            options = []
            if password_format == 'plain':
                password = self._create_passwd_hash(password)
            if password:
                options.append('-p')
                options.append(password)
            if user_shell:
                options.append('-s')
                options.append(user_shell)
            if len(user_groups):
                options.append('-g')
                options.append(user_groups[0])
                if len(user_groups) > 1:
                    options.append('-G')
                    options.append(','.join(user_groups[1:]))
            if user_id:
                options.append('-u')
                options.append('{0}'.format(user_id))
            if user_realname:
                options.append('-c')
                options.append(user_realname)
            if not user_exists and home_path:
                options.append('-m')
                options.append('-d')
                options.append(home_path)

            if user_exists:
                log.info(
                    '--> Modifying user: %s [%s]',
                    user_name,
                    user_groups[0] if len(user_groups) else ''
                )
                system_users.user_modify(user_name, options)
            else:
                log.info(
                    '--> Adding user: %s [%s]',
                    user_name,
                    user_groups[0] if len(user_groups) else ''
                )
                system_users.user_add(user_name, options)
                if home_path:
                    log.info(
                        '--> Setting permissions for %s', home_path
                    )
                    # Emtpy group string assumes the login or default group
                    system_users.setup_home_for_user(
                        user_name,
                        user_groups[0] if len(user_groups) else '',
                        home_path
                    )