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, [])
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)
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 )
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'])
def setup(self): self.users = Users('root_dir')
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'] )
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 )