node console: restrict all non-login commands to root@pam

and not just upgrade.

note that the only other non-login command (ceph_install) is restricted to
root@pam in the web UI anyway, and that the termproxy endpoint is lacking this
check and thus always falls back to a login prompt for non-login commands
requested by non-root users.

Signed-off-by: Fabian Grünbichler <f.gruenbichler@proxmox.com>
This commit is contained in:
Fabian Grünbichler 2023-06-14 12:42:13 +02:00 committed by Thomas Lamprecht
parent 6e167f9a9a
commit 4fb92ae88a

View File

@ -949,7 +949,7 @@ __PACKAGE__->register_method ({
node => get_standard_option('pve-node'),
cmd => {
type => 'string',
description => "Run specific command or default to login.",
description => "Run specific command or default to login (requires 'root\@pam')",
enum => [keys %$shell_cmd_map],
optional => 1,
default => 'login',
@ -1000,7 +1000,7 @@ __PACKAGE__->register_method ({
raise_perm_exc("realm != pam") if $realm ne 'pam';
if (defined($param->{cmd}) && $param->{cmd} eq 'upgrade' && $user ne 'root@pam') {
if (defined($param->{cmd}) && $param->{cmd} ne 'login' && $user ne 'root@pam') {
raise_perm_exc('user != root@pam');
}
@ -1089,7 +1089,7 @@ __PACKAGE__->register_method ({
node => get_standard_option('pve-node'),
cmd => {
type => 'string',
description => "Run specific command or default to login.",
description => "Run specific command or default to login (requires 'root\@pam')",
enum => [keys %$shell_cmd_map],
optional => 1,
default => 'login',
@ -1223,7 +1223,7 @@ __PACKAGE__->register_method ({
proxy => get_standard_option('spice-proxy', { optional => 1 }),
cmd => {
type => 'string',
description => "Run specific command or default to login.",
description => "Run specific command or default to login (requires 'root\@pam')",
enum => [keys %$shell_cmd_map],
optional => 1,
default => 'login',
@ -1248,7 +1248,7 @@ __PACKAGE__->register_method ({
raise_perm_exc("realm != pam") if $realm ne 'pam';
if (defined($param->{cmd}) && $param->{cmd} eq 'upgrade' && $user ne 'root@pam') {
if (defined($param->{cmd}) && $param->{cmd} ne 'login' && $user ne 'root@pam') {
raise_perm_exc('user != root@pam');
}