Skip to content

Commit 7ff4fed

Browse files
committed
Update
1 parent a046f53 commit 7ff4fed

4 files changed

Lines changed: 25 additions & 19 deletions

File tree

archinstall/lib/authentication/authentication_handler.py

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,14 @@ def setup_auth(
2121
self,
2222
install_session: 'Installer',
2323
auth_config: AuthenticationConfiguration,
24-
users: list['User'] | None = None,
24+
users: list['User'],
25+
hostname: str,
2526
) -> None:
2627
if auth_config.u2f_config and users is not None:
27-
self._setup_u2f_login(install_session, auth_config.u2f_config, users)
28+
self._setup_u2f_login(install_session, auth_config.u2f_config, users, hostname)
2829

29-
def _setup_u2f_login(
30-
self,
31-
install_session: 'Installer',
32-
u2f_config: U2FLoginConfiguration,
33-
users: list[User],
34-
) -> None:
35-
self._configure_u2f_mapping(install_session, u2f_config, users)
30+
def _setup_u2f_login(self, install_session: 'Installer', u2f_config: U2FLoginConfiguration, users: list[User], hostname: str) -> None:
31+
self._configure_u2f_mapping(install_session, u2f_config, users, hostname)
3632
self._update_pam_config(install_session, u2f_config)
3733

3834
def _update_pam_config(
@@ -42,9 +38,9 @@ def _update_pam_config(
4238
) -> None:
4339
match u2f_config.u2f_login_method:
4440
case U2FLoginMethod.Passwordless:
45-
config_entry = f'auth sufficient pam_u2f.so authfile={self._u2f_auth_file} cue'
41+
config_entry = 'auth sufficient pam_u2f.so authfile=/etc/u2f_mappings cue'
4642
case U2FLoginMethod.SecondFactor:
47-
config_entry = f'auth required pam_u2f.so authfile={self._u2f_auth_file} cue'
43+
config_entry = 'auth required pam_u2f.so authfile=/etc/u2f_mappings cue'
4844
case _:
4945
raise ValueError(f'Unknown U2F login method: {u2f_config.u2f_login_method}')
5046

@@ -79,15 +75,21 @@ def _add_u2f_entry(self, file: Path, entry: str) -> None:
7975

8076
file.write_text('\n'.join(content) + '\n')
8177

82-
def _configure_u2f_mapping(self, install_session: 'Installer', u2f_config: U2FLoginConfiguration, users: list[User]) -> None:
78+
def _configure_u2f_mapping(
79+
self,
80+
install_session: 'Installer',
81+
u2f_config: U2FLoginConfiguration,
82+
users: list[User],
83+
hostname: str,
84+
) -> None:
8385
debug(f'Setting up U2F login: {u2f_config.u2f_login_method.value}')
8486

8587
install_session.pacman.strap('pam-u2f')
8688

8789
Tui.print(tr(f'Setting up U2F login: {u2f_config.u2f_login_method.value}'))
8890

8991
# https://developers.yubico.com/pam-u2f/
90-
u2f_auth_file = install_session.target / self._u2f_auth_file
92+
u2f_auth_file = install_session.target / 'etc/u2f_mappings'
9193
u2f_auth_file.touch()
9294
existing_keys = u2f_auth_file.read_text()
9395

@@ -98,7 +100,11 @@ def _configure_u2f_mapping(self, install_session: 'Installer', u2f_config: U2FLo
98100
Tui.print(tr('Setting up U2F device for user: {}').format(user.username))
99101
Tui.print(tr('You may need to enter the PIN and then touch your U2F device to register it'))
100102

101-
worker = SysCommandWorker(f'arch-chroot {install_session.target} pamu2fcfg -u {user.username}', peek_output=True)
103+
cmd = ' '.join(['arch-chroot', str(install_session.target), 'pamu2fcfg', '-u', user.username, '-o', f'pam://{hostname}', '-i', f'pam://{hostname}'])
104+
105+
debug(f'Enrolling U2F device: {cmd}')
106+
107+
worker = SysCommandWorker(cmd, peek_output=True)
102108
pin_inputted = False
103109

104110
while worker.is_alive():

archinstall/lib/disk/fido.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ def get_fido2_devices(cls) -> list[Fido2Device]:
3838

3939
for line in fido_devices.split('\r\n'):
4040
path, details = line.replace(',', '').split(':', maxsplit=1)
41-
vendor, product, manufacturer = details.strip().split(' ', maxsplit=2)
41+
_, product, manufacturer = details.strip().split(' ', maxsplit=2)
4242

4343
cls._u2f_devices.append(Fido2Device(Path(path.strip()), manufacturer.strip(), product.strip().split('=')[1]))
4444

archinstall/lib/installer.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1506,7 +1506,7 @@ def _add_efistub_bootloader(
15061506

15071507
parent_dev_path = device_handler.get_parent_device_path(boot_partition.safe_dev_path)
15081508

1509-
cmd_template = (
1509+
cmd_template = [
15101510
'efibootmgr',
15111511
'--create',
15121512
'--disk',
@@ -1520,7 +1520,7 @@ def _add_efistub_bootloader(
15201520
'--unicode',
15211521
*cmdline,
15221522
'--verbose',
1523-
)
1523+
]
15241524

15251525
for kernel in self.kernels:
15261526
# Setup the firmware entry

archinstall/scripts/guided.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,8 +117,8 @@ def perform_installation(mountpoint: Path) -> None:
117117
if users := config.users:
118118
installation.create_users(users)
119119

120-
if config.auth_config:
121-
auth_handler.setup_auth(installation, config.auth_config, config.users)
120+
if config.auth_config and config.users:
121+
auth_handler.setup_auth(installation, config.auth_config, config.users, config.hostname)
122122

123123
if config.packages and config.packages[0] != '':
124124
installation.add_additional_packages(config.packages)

0 commit comments

Comments
 (0)