summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergio <sergiotarxz@posteo.net>2026-09-11 22:30:16 +0200
committerSergio <sergiotarxz@posteo.net>2026-09-11 22:30:48 +0200
commit1f2e5026f035834d58807f71f0e841ace3b25414 (patch)
treea17e7b5aab2e5d5141e24550ceac55d8bf2568f1
parentca8ce16c0e521b25314f3aac3a169500e9931ac2 (diff)
Better user handling.
-rw-r--r--lib/AlgaOS/UpdateGrub.pm20
-rw-r--r--scripts/update-grub21
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';