mirror of
https://github.com/webmin/webmin.git
synced 2026-06-05 21:00:22 +01:00
77 lines
2.4 KiB
Perl
Executable File
77 lines
2.4 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# Show a form for editing GRUB 2 password protection.
|
|
|
|
use strict;
|
|
use warnings;
|
|
require './grub2-lib.pl'; ## no critic
|
|
|
|
our (%text);
|
|
|
|
&ReadParse();
|
|
&error_setup($text{'security_err'});
|
|
my %access = &get_module_acl();
|
|
&error("$text{'eacl_np'} $text{'eacl_psecurity'}") if (!$access{'security'});
|
|
|
|
my $state = &grub2_read_security_config();
|
|
|
|
&ui_print_header(undef, $text{'security_title'}, "", "security_current");
|
|
|
|
# Refuse to edit administrator-owned password scripts we cannot safely merge.
|
|
if ($state->{'exists'} && !$state->{'managed'}) {
|
|
print &ui_alert($text{'security_unmanaged'}, 'warning');
|
|
&ui_print_footer("index.cgi", $text{'index_return'});
|
|
exit;
|
|
}
|
|
|
|
print &ui_form_start("save_security.cgi", "post");
|
|
print &ui_table_start($text{'security_header'}, "width=100%", 2);
|
|
print &ui_table_row(
|
|
$text{'security_current_state'},
|
|
$state->{'enabled'} ?
|
|
&text('security_current_enabled',
|
|
&html_escape($state->{'user'} || 'root')) :
|
|
$text{'security_current_disabled'}
|
|
);
|
|
print &ui_table_row(
|
|
$text{'security_current_hash'},
|
|
$state->{'hash'} ? $text{'security_current_hash_set'} :
|
|
$text{'security_current_hash_missing'}
|
|
);
|
|
print &ui_table_hr();
|
|
print &ui_table_row(
|
|
&hlink($text{'security_enable'}, "security_enable"),
|
|
&ui_yesno_radio("enabled", $state->{'enabled'} ? 1 : 0)
|
|
);
|
|
print &ui_table_row(
|
|
&hlink($text{'security_user'}, "security_user"),
|
|
&ui_textbox("user", $state->{'user'} || "root", 30)
|
|
);
|
|
print &ui_table_hr();
|
|
print &ui_table_row(
|
|
$text{'security_password_status'},
|
|
$state->{'enabled'} && $state->{'hash'} ?
|
|
$text{'security_password_keep'} :
|
|
$text{'security_password_required'}
|
|
);
|
|
# Password fields are optional when keeping the existing PBKDF2 hash.
|
|
print &ui_table_row(
|
|
&hlink($text{'security_newpass'}, "security_password"),
|
|
&ui_password("password", "", 30)
|
|
);
|
|
print &ui_table_row(
|
|
&hlink($text{'security_newpass2'}, "security_password"),
|
|
&ui_password("password2", "", 30)
|
|
);
|
|
print &ui_table_hr();
|
|
# Existing hashes are shown because GRUB stores hashes, not clear text.
|
|
print &ui_table_row(
|
|
&hlink($text{'security_hash'}, "security_hash"),
|
|
&ui_textbox("hash", $state->{'hash'} || "", 30, undef, undef, undef,
|
|
"w-100").
|
|
&ui_tag('div', &ui_note($text{'security_hash_note'}, 0)),
|
|
2, undef, undef, 1);
|
|
print &ui_table_end();
|
|
print &ui_form_end([ [ undef, $text{'save'} ] ]);
|
|
|
|
&ui_print_footer("index.cgi", $text{'index_return'});
|