modulizing the usergroup retriving
This commit is contained in:
parent
06a2626db8
commit
8559d7fe7d
|
@ -24,3 +24,23 @@ log = logging.getLogger('subiquity.common.resources')
|
|||
|
||||
def resource_path(relative_path):
|
||||
return os.path.join(os.environ.get("SUBIQUITY_ROOT", "."), relative_path)
|
||||
|
||||
|
||||
def get_users_and_groups(chroot_prefix=[]):
|
||||
# prevent import when calling just resource_path
|
||||
from subiquitycore.utils import run_command
|
||||
|
||||
users_and_groups_path = resource_path('users-and-groups')
|
||||
groups = ['admin']
|
||||
if os.path.exists(users_and_groups_path):
|
||||
groups = open(users_and_groups_path).read().split()
|
||||
groups.append('sudo')
|
||||
|
||||
command = chroot_prefix + ['getent', 'group']
|
||||
cp = run_command(command, check=True)
|
||||
target_groups = set()
|
||||
for line in cp.stdout.splitlines():
|
||||
target_groups.add(line.split(':')[0])
|
||||
|
||||
groups = target_groups.intersection(groups)
|
||||
return groups
|
||||
|
|
|
@ -27,9 +27,8 @@ from curtin.commands.install import CONFIG_BUILTIN
|
|||
from curtin.config import merge_config
|
||||
|
||||
from subiquitycore.file_util import write_file
|
||||
from subiquitycore.utils import run_command
|
||||
|
||||
from subiquity.common.resources import resource_path
|
||||
from subiquity.common.resources import resource_path, get_users_and_groups
|
||||
from subiquity.server.types import InstallerChannels
|
||||
|
||||
from .filesystem import FilesystemModel
|
||||
|
@ -218,14 +217,6 @@ class SubiquityModel:
|
|||
def confirm(self):
|
||||
self._confirmation.set()
|
||||
|
||||
def get_target_groups(self):
|
||||
command = self.chroot_prefix + ['getent', 'group']
|
||||
cp = run_command(command, check=True)
|
||||
groups = set()
|
||||
for line in cp.stdout.splitlines():
|
||||
groups.add(line.split(':')[0])
|
||||
return groups
|
||||
|
||||
def _cloud_init_config(self):
|
||||
config = {
|
||||
'growpart': {
|
||||
|
@ -237,14 +228,7 @@ class SubiquityModel:
|
|||
config['preserve_hostname'] = True
|
||||
user = self.identity.user
|
||||
if user:
|
||||
users_and_groups_path = resource_path('users-and-groups')
|
||||
if os.path.exists(users_and_groups_path):
|
||||
groups = open(users_and_groups_path).read().split()
|
||||
else:
|
||||
groups = ['admin']
|
||||
groups.append('sudo')
|
||||
groups = [group for group in groups
|
||||
if group in self.get_target_groups()]
|
||||
groups = get_users_and_groups(self.chroot_prefix)
|
||||
user_info = {
|
||||
'name': user.username,
|
||||
'gecos': user.realname,
|
||||
|
|
|
@ -61,28 +61,6 @@ def get_windows_locale():
|
|||
return None
|
||||
|
||||
|
||||
def get_userandgroups():
|
||||
from subiquity.common.resources import resource_path
|
||||
from subiquitycore.utils import run_command
|
||||
|
||||
users_and_groups_path = resource_path('users-and-groups')
|
||||
if os.path.exists(users_and_groups_path):
|
||||
groups = open(users_and_groups_path).read().split()
|
||||
else:
|
||||
groups = ['admin']
|
||||
groups.append('sudo')
|
||||
|
||||
command = ['getent', 'group']
|
||||
cp = run_command(command, check=True)
|
||||
target_groups = set()
|
||||
for line in cp.stdout.splitlines():
|
||||
target_groups.add(line.split(':')[0])
|
||||
|
||||
groups = [group for group in groups if group in target_groups]
|
||||
oneline_usergroups = ",".join(groups)
|
||||
return oneline_usergroups
|
||||
|
||||
|
||||
def convert_if_bool(value):
|
||||
if value.lower() in ('true', 'false'):
|
||||
return value.lower() == 'true'
|
||||
|
|
|
@ -17,11 +17,11 @@ import logging
|
|||
|
||||
from subiquity.common.errorreport import ErrorReportKind
|
||||
from subiquity.common.types import ApplicationState
|
||||
from subiquity.common.resources import get_users_and_groups
|
||||
from subiquity.server.controller import SubiquityController
|
||||
from subiquitycore.context import with_context
|
||||
from subiquitycore.utils import run_command
|
||||
from system_setup.common.wsl_conf import wsl_config_update
|
||||
from system_setup.common.wsl_utils import get_userandgroups
|
||||
|
||||
log = logging.getLogger("system_setup.server.controllers.configure")
|
||||
|
||||
|
@ -87,10 +87,12 @@ class ConfigureController(SubiquityController):
|
|||
% (wsl_id.username,
|
||||
create_user_act.stderr))
|
||||
log.debug("created user %s", wsl_id.username)
|
||||
|
||||
oneline_usergroups = ",".join(get_users_and_groups())
|
||||
assign_grp_act = \
|
||||
run_command(["/usr/sbin/usermod", "-a",
|
||||
"-c", wsl_id.realname,
|
||||
"-G", get_userandgroups(),
|
||||
"-G", oneline_usergroups,
|
||||
wsl_id.username])
|
||||
if assign_grp_act.returncode != 0:
|
||||
raise Exception(("Failed to assign group"
|
||||
|
|
Loading…
Reference in New Issue