From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 7A4D961DE2 for ; Thu, 10 Feb 2022 16:30:26 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 70A161F25F for ; Thu, 10 Feb 2022 16:29:56 +0100 (CET) Received: from proxmox-new.maurer-it.com (proxmox-new.maurer-it.com [94.136.29.106]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS id 59D1F1F256 for ; Thu, 10 Feb 2022 16:29:55 +0100 (CET) Received: from proxmox-new.maurer-it.com (localhost.localdomain [127.0.0.1]) by proxmox-new.maurer-it.com (Proxmox) with ESMTP id 3401B46DD6 for ; Thu, 10 Feb 2022 16:29:55 +0100 (CET) Date: Thu, 10 Feb 2022 16:29:48 +0100 From: Fabian =?iso-8859-1?q?Gr=FCnbichler?= To: Proxmox VE development discussion References: <20220208131011.752134-1-o.bektas@proxmox.com> <20220208131011.752134-5-o.bektas@proxmox.com> In-Reply-To: <<20220208131011.752134-5-o.bektas@proxmox.com> MIME-Version: 1.0 User-Agent: astroid/0.15.0 (https://github.com/astroidmail/astroid) Message-Id: <1644500864.trbyijgtmq.astroid@nora.none> Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-SPAM-LEVEL: Spam detection results: 0 AWL 0.194 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record T_SCC_BODY_TEXT_LINE -0.01 - URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [proxmox.com] Subject: Re: [pve-devel] [PATCH v1 manager 4/5] change 'root@pam' checks with 'SuperUser' capability check X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 10 Feb 2022 15:30:26 -0000 On February 8, 2022 2:10 pm, Oguz Bektas wrote: > 'root@pam' has the privilege by default (since it's an SA), so we can > drop the string comparisons all around and check that privilege instead > when deciding to enable/disable buttons or views >=20 > Signed-off-by: Oguz Bektas > --- > www/manager6/Utils.js | 3 ++- > www/manager6/dc/Config.js | 2 +- > www/manager6/dc/UserView.js | 2 +- > www/manager6/lxc/Options.js | 2 +- > www/manager6/lxc/Resources.js | 2 +- > www/manager6/node/Config.js | 2 +- > www/manager6/window/Migrate.js | 4 ++-- > 7 files changed, 9 insertions(+), 8 deletions(-) >=20 > diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js > index aafe359a..31ab94e8 100644 > --- a/www/manager6/Utils.js > +++ b/www/manager6/Utils.js > @@ -1656,7 +1656,8 @@ Ext.define('PVE.Utils', { > =20 > showCephInstallOrMask: function(container, msg, nodename, callback) = { > if (msg.match(/not (installed|initialized)/i)) { > - if (Proxmox.UserName =3D=3D=3D 'root@pam') { > + let caps =3D Ext.state.Manager.get('GuiCap'); > + if (caps.node.SuperUser) { but if you change this here, you also need to change the backend - as=20 this is currently root-only (the API path called by the Ceph install=20 wizard requires Sys.Console which is not a given just because you have=20 SuperUser, and the ceph_install handling itself requires root@pam - the=20 user is then presented with a login shell). so either this remains=20 root-only for now (like the upgrade thing - both have the same problem=20 after all!), but then please add a comment why or mention that in the=20 commit message - or you find a good safe solution, then please argue why=20 it is safe ;) > container.el.mask(); > if (!container.down('pveCephInstallWindow')) { > var isInstalled =3D !!msg.match(/not initialized/i); > diff --git a/www/manager6/dc/Config.js b/www/manager6/dc/Config.js > index 9c54b19d..917c426f 100644 > --- a/www/manager6/dc/Config.js > +++ b/www/manager6/dc/Config.js > @@ -197,7 +197,7 @@ Ext.define('PVE.dc.Config', { > }); > } > =20 > - if (Proxmox.UserName =3D=3D=3D 'root@pam') { > + if (caps.dc.SuperUser) { the plugins actually require 'Sys.Modify', and the account endpoints are=20 unqualified (root-only) or open to everyone (those returning=20 schema/static stuff for front-end re-use) at the moment but that can=20 probably be re-evaluated. in any case, switching this just in the=20 front-end cannot work.. > me.items.push({ > xtype: 'pveACMEClusterView', > title: 'ACME', > diff --git a/www/manager6/dc/UserView.js b/www/manager6/dc/UserView.js > index bbfc4f7c..fe0c0149 100644 > --- a/www/manager6/dc/UserView.js > +++ b/www/manager6/dc/UserView.js > @@ -29,7 +29,7 @@ Ext.define('PVE.dc.UserView', { > selModel: sm, > baseurl: '/access/users/', > dangerous: true, > - enableFn: rec =3D> caps.access['User.Modify'] && rec.data.userid != =3D=3D 'root@pam', > + enableFn: rec =3D> caps.access['User.Modify'] && !caps.access.Super= User, no rationale given for the different way of accessing - I'll leave it to=20 more JS affine reviewers to decide whether this is sensible or not, but=20 please provide the reason WHY this doesn't use `caps.access['SuperUser']` also, it's wrong - a SuperUser still requires User.Modify to modify=20 users, so this either needs to stay as it is or simply drop the root@pam=20 shortcut. > callback: () =3D> reload(), > }); > let run_editor =3D function() { > diff --git a/www/manager6/lxc/Options.js b/www/manager6/lxc/Options.js > index f2661dfc..f8eb8a5c 100644 > --- a/www/manager6/lxc/Options.js > +++ b/www/manager6/lxc/Options.js > @@ -136,7 +136,7 @@ Ext.define('PVE.lxc.Options', { > features: { > header: gettext('Features'), > defaultValue: Proxmox.Utils.noneText, > - editor: Proxmox.UserName =3D=3D=3D 'root@pam' || caps.vms['VM.Allocate= '] > + editor: caps.vms.SuperUser || caps.vms['VM.Allocate'] > ? 'PVE.lxc.FeaturesEdit' : undefined, > }, > hookscript: { > diff --git a/www/manager6/lxc/Resources.js b/www/manager6/lxc/Resources.j= s > index 15ee3c67..2081b4a2 100644 > --- a/www/manager6/lxc/Resources.js > +++ b/www/manager6/lxc/Resources.js > @@ -257,7 +257,7 @@ Ext.define('PVE.lxc.RessourceView', { > var isUsedDisk =3D isDisk && !isUnusedDisk; > =20 > var noedit =3D rec.data.delete || !rowdef.editor; > - if (!noedit && Proxmox.UserName !=3D=3D 'root@pam' && key.match(/^m= p\d+$/)) { > + if (!noedit && !caps.vms.SuperUser && key.match(/^mp\d+$/)) { > var mp =3D PVE.Parser.parseLxcMountPoint(value); > if (mp.type !=3D=3D 'volume') { > noedit =3D true; > diff --git a/www/manager6/node/Config.js b/www/manager6/node/Config.js > index 68f80391..9f49f0dd 100644 > --- a/www/manager6/node/Config.js > +++ b/www/manager6/node/Config.js > @@ -236,7 +236,7 @@ Ext.define('PVE.node.Config', { > itemId: 'apt', > upgradeBtn: { > xtype: 'pveConsoleButton', > - disabled: Proxmox.UserName !=3D=3D 'root@pam', > + disabled: !caps.nodes.SuperUser, we discussed this in depth and said we'll keep the upgrade console root=20 only for now.. also, the backend isn't change to allow this for=20 SuperUser so it's moot anyway? > text: gettext('Upgrade'), > consoleType: 'upgrade', > nodename: nodename, > diff --git a/www/manager6/window/Migrate.js b/www/manager6/window/Migrate= .js > index 1c23abb3..20fcf81d 100644 > --- a/www/manager6/window/Migrate.js > +++ b/www/manager6/window/Migrate.js > @@ -52,8 +52,8 @@ Ext.define('PVE.window.Migrate', { > } > }, > setLocalResourceCheckboxHidden: function(get) { > - if (get('running') || !get('migration.hasLocalResources') || > - Proxmox.UserName !=3D=3D 'root@pam') { > + let caps =3D Ext.state.Manager.get('GuiCap'); > + if (get('running') || !get('migration.hasLocalResources') || caps.vms.= SuperUser) { > return true; > } else { > return false; > --=20 > 2.30.2 >=20 >=20 >=20 > _______________________________________________ > pve-devel mailing list > pve-devel@lists.proxmox.com > https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel >=20 >=20 >=20