diff options
| author | Sergio <sergiotarxz@posteo.net> | 2026-09-11 22:30:16 +0200 |
|---|---|---|
| committer | Sergio <sergiotarxz@posteo.net> | 2026-09-11 22:30:48 +0200 |
| commit | 1f2e5026f035834d58807f71f0e841ace3b25414 (patch) | |
| tree | a17e7b5aab2e5d5141e24550ceac55d8bf2568f1 | |
| parent | ca8ce16c0e521b25314f3aac3a169500e9931ac2 (diff) | |
Better user handling.
| -rw-r--r-- | lib/AlgaOS/UpdateGrub.pm | 20 | ||||
| -rw-r--r-- | scripts/update-grub | 21 |
2 files changed, 38 insertions, 3 deletions
diff --git a/lib/AlgaOS/UpdateGrub.pm b/lib/AlgaOS/UpdateGrub.pm index 5514652..c688c95 100644 --- a/lib/AlgaOS/UpdateGrub.pm +++ b/lib/AlgaOS/UpdateGrub.pm @@ -63,7 +63,7 @@ sub _build_wants_pass_in_sensitive_options { } sub _build_user_list { - return [qw/admin/]; + return [qw/admin/, @users]; } sub run($self) { @@ -201,6 +201,24 @@ menuentry "Recupera o Reinstala AlgaOS" $security_string { } EOF } + if ( $self->search_recovery || $self->search_root ) { + say 'Attempting grub install'; + if ( system qw{grub-install --target=i386-pc --recheck}, + $self->target_device ) + { + die 'Failed grub installation for i386'; + } + if ( + system qw{grub-install + --target=x86_64-efi + --efi-directory=/boot/efi + --removable} + ) + { + die 'Failed grub installation for efi'; + } + + } } diff --git a/scripts/update-grub b/scripts/update-grub index b96e0b6..2d0b024 100644 --- a/scripts/update-grub +++ b/scripts/update-grub @@ -12,10 +12,17 @@ my $recovery = 1; my $root = 1; my $live = 0; my $protect = 1; -my $user_list = ['admin']; +my @users; +{ + open my $fh, '<', $self->root_dir . '/grub_users'; + my $/ = undef; + @users = split /\s*,\s*/, <$fh>; +} +my $user_list = ['admin', @users]; my $target_device; my $chroot; my $new_pass; +my $new_user_list = []; Getopt::Long::Configure( "bundling", "no_ignore_case" ); GetOptions( @@ -25,7 +32,7 @@ GetOptions( 'live' => \$live, 'protect!' => \$protect, 'new-pass=s' => \$new_pass, - 'user=s@' => $user_list, + 'user=s@' => $new_user_list, 'target-device=s' => \$target_device, 'chroot=s' => \$chroot, ); @@ -47,6 +54,16 @@ if ( $live && !$chroot ) { exit -1; } +if (@$new_user_list) { + my %users = (map { ($_ => 1) } @$user_list); + for my $user (@$new_user_list) { + open my $fh, '>', '/grub_users'; + print $fh ",$user"; + } + %users = (%users, map { $_ => 1 } @$new_user_list); + $user_list = [keys %users]; +} + if ( $root && !$protect && $recovery ) { say STDERR 'Not having password in grub and having recovery and root makes your data very easily accesible without even using an external device, giving you 10 seconds to think about it, press ctrl+c to interrupt if unsure'; |
