** Description changed:

  [ Impact ]
  
  * If the LXD is not pre-created and/or the primary user isn't member of
  it, lxd-installer will fail to install LXD with a cryptic permission
  denied error.
  
  [ Test Plan ]
  
  Create a test instance:
  
  $ lxc launch ubuntu-minimal-daily:24.04 u1
  
  Make sure LXD snap is not installed:
  
  $ ! lxc exec u1 -- snap list lxd || false
  error: no matching snaps installed
  
  Remove the LXD group:
  
  $ lxc exec u1 -- delgroup lxd
  warn: The group `lxd' does not exist.
  
  Check lxd-installer version (update to -proposed package if needed):
  
  $ lxc exec u1 -- dpkg -l | grep lxd-installer
  ii  lxd-installer                 4                                 all       
   Wrapper to install lxd snap on demand
  
  Trigger lxd-installer as the regular user not a member of the lxd group:
  
  $ lxc exec --user 1000 --group 1000 --env HOME=/home/ubuntu u1 -- lxc list
  Installing LXD snap, please be patient.
  Traceback (most recent call last):
-   File "<string>", line 1, in <module>
+   File "<string>", line 1, in <module>
  PermissionError: [Errno 13] Permission denied
  /usr/sbin/lxc: 12: exec: /snap/bin/lxc: not found
  Error: Command not found
  
+ 
+ The output above is the cryptic error that should not be displayed if the 
updated package is installed. Instead, a user not in the lxd group triggers the 
lxd-installer, it should receive this nicer error message:
+ 
+ $ lxc exec --user 1000 --group 1000 --env HOME=/home/ubuntu u1 -- lxc list
+ Unable to trigger the installation of the LXD snap.
+ Please make sure you're a member of the 'lxd' system group.
+ 
+ And the return code should be 1 to indicate an error.
+ 
  [ Where problems could occur ]
  
- TODO
+ The proposed fix is to check if the /run/lxd-installer.socket socket is
+ writable and if not, report a nicer error and exist with an error before
+ trying to do the installation and eventually error out.
+ 
+ It is possible for this socket to either be missing or not be writable
+ for a reason different than the invoking user not being in the lxd
+ group.
+ 
+ If that's the case, the hint to very the group membership would be
+ misleading.
+ 
  
  [Original description]
  
  On a fresh install of 24.04 server on Raspberry Pi, I ran 'lxc list'
  without having the lxd snap installed already. There was an attempt to
  install the snap, but it failed, and the snap needed to be manually
  installed:
  
  nr@pi5:~$ lxc list
  Installing LXD snap, please be patient.
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
  PermissionError: [Errno 13] Permission denied
  /usr/sbin/lxc: 12: exec: /snap/bin/lxc: not found
  
  More details:
  
  nr@pi5:~$ cat /etc/os-release
  PRETTY_NAME="Ubuntu Noble Numbat (development branch)"
  NAME="Ubuntu"
  VERSION_ID="24.04"
  VERSION="24.04 LTS (Noble Numbat)"
  VERSION_CODENAME=noble
  ID=ubuntu
  ID_LIKE=debian
  HOME_URL="https://www.ubuntu.com/";
  SUPPORT_URL="https://help.ubuntu.com/";
  BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/";
  
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy";
  UBUNTU_CODENAME=noble
  LOGO=ubuntu-logo
  nr@pi5:~$ apt policy lxd-installer
  lxd-installer:
    Installed: 4
    Candidate: 4
    Version table:
   *** 4 500
          500 http://ports.ubuntu.com/ubuntu-ports noble/main arm64 Packages
          100 /var/lib/dpkg/status

** Description changed:

  [ Impact ]
  
  * If the LXD is not pre-created and/or the primary user isn't member of
  it, lxd-installer will fail to install LXD with a cryptic permission
  denied error.
  
  [ Test Plan ]
  
  Create a test instance:
  
  $ lxc launch ubuntu-minimal-daily:24.04 u1
  
  Make sure LXD snap is not installed:
  
  $ ! lxc exec u1 -- snap list lxd || false
  error: no matching snaps installed
  
  Remove the LXD group:
  
  $ lxc exec u1 -- delgroup lxd
  warn: The group `lxd' does not exist.
  
  Check lxd-installer version (update to -proposed package if needed):
  
  $ lxc exec u1 -- dpkg -l | grep lxd-installer
  ii  lxd-installer                 4                                 all       
   Wrapper to install lxd snap on demand
  
  Trigger lxd-installer as the regular user not a member of the lxd group:
  
  $ lxc exec --user 1000 --group 1000 --env HOME=/home/ubuntu u1 -- lxc list
  Installing LXD snap, please be patient.
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
  PermissionError: [Errno 13] Permission denied
  /usr/sbin/lxc: 12: exec: /snap/bin/lxc: not found
  Error: Command not found
  
- 
- The output above is the cryptic error that should not be displayed if the 
updated package is installed. Instead, a user not in the lxd group triggers the 
lxd-installer, it should receive this nicer error message:
+ The output above is the cryptic error that should not be displayed if
+ the updated package is installed. Instead, a user not in the lxd group
+ that would trigger the lxd-installer, should immediately receive this
+ nicer error message:
  
  $ lxc exec --user 1000 --group 1000 --env HOME=/home/ubuntu u1 -- lxc list
  Unable to trigger the installation of the LXD snap.
  Please make sure you're a member of the 'lxd' system group.
  
  And the return code should be 1 to indicate an error.
  
  [ Where problems could occur ]
  
  The proposed fix is to check if the /run/lxd-installer.socket socket is
  writable and if not, report a nicer error and exist with an error before
  trying to do the installation and eventually error out.
  
  It is possible for this socket to either be missing or not be writable
  for a reason different than the invoking user not being in the lxd
  group.
  
- If that's the case, the hint to very the group membership would be
+ If that's the case, the hint to verify the group membership would be
  misleading.
- 
  
  [Original description]
  
  On a fresh install of 24.04 server on Raspberry Pi, I ran 'lxc list'
  without having the lxd snap installed already. There was an attempt to
  install the snap, but it failed, and the snap needed to be manually
  installed:
  
  nr@pi5:~$ lxc list
  Installing LXD snap, please be patient.
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
  PermissionError: [Errno 13] Permission denied
  /usr/sbin/lxc: 12: exec: /snap/bin/lxc: not found
  
  More details:
  
  nr@pi5:~$ cat /etc/os-release
  PRETTY_NAME="Ubuntu Noble Numbat (development branch)"
  NAME="Ubuntu"
  VERSION_ID="24.04"
  VERSION="24.04 LTS (Noble Numbat)"
  VERSION_CODENAME=noble
  ID=ubuntu
  ID_LIKE=debian
  HOME_URL="https://www.ubuntu.com/";
  SUPPORT_URL="https://help.ubuntu.com/";
  BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/";
  
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy";
  UBUNTU_CODENAME=noble
  LOGO=ubuntu-logo
  nr@pi5:~$ apt policy lxd-installer
  lxd-installer:
    Installed: 4
    Candidate: 4
    Version table:
   *** 4 500
          500 http://ports.ubuntu.com/ubuntu-ports noble/main arm64 Packages
          100 /var/lib/dpkg/status

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2061017

Title:
  lxd-installer: permission error not handled and lxd snap not installed

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/lxd-installer/+bug/2061017/+subscriptions


-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to