Landscape Client Permission denied: '/etc/shadow'

Hi all,

I’m running a Ubuntu Server 24.04 and using the snap landscape-client 24.08 (tracking: 22/stable) but getting the following error in the logs:

ERROR    [MainThread] Error reading shadow file. [Errno 13] Permission denied: '/etc/shadow'

Therefore, the client (Ubuntu Server) never shows up on https://landscape.canonical.com dashboard.

Does anyone have any idea on how to fix this?

FULL logs

landscape-client[7793]: 2024-08-23 08:17:15,142 DEBUG    [MainThread] Started firing message.
landscape-client[7793]: 2024-08-23 08:17:15,142 DEBUG    [MainThread] Calling landscape.client.broker.ping.Pinger._handle_set_intervals() for message with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,142 DEBUG    [MainThread] Calling landscape.client.broker.server.BrokerServer.broadcast_message() for message with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,143 DEBUG    [MainThread] Finished firing message.
landscape-client[7793]: 2024-08-23 08:17:15,143 INFO     [MainThread] Using new secure-id ending with XXXXXX for account XXXXX.
landscape-client[7793]: 2024-08-23 08:17:15,143 DEBUG    [MainThread] Using new secure-id: XXXXXXXX
landscape-client[7793]: 2024-08-23 08:17:15,143 DEBUG    [MainThread] Started firing registration-done.
landscape-client[7793]: 2024-08-23 08:17:15,143 DEBUG    [MainThread] Finished firing registration-done.
landscape-client[7793]: 2024-08-23 08:17:15,143 DEBUG    [MainThread] Started firing resynchronize-clients.
landscape-client[7793]: 2024-08-23 08:17:15,143 DEBUG    [MainThread] Calling landscape.client.broker.exchange.MessageExchange._resynchronize() for resynchronize-clients with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,143 DEBUG    [MainThread] Calling landscape.client.broker.server.event.<locals>.broadcast_event() for resynchronize-clients with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,143 DEBUG    [MainThread] Finished firing resynchronize-clients.
landscape-client[7793]: 2024-08-23 08:17:15,152 DEBUG    [MainThread] Started firing exchange-done.
landscape-client[7793]: 2024-08-23 08:17:15,152 DEBUG    [MainThread] Calling landscape.client.broker.registration.RegistrationHandler._handle_exchange_done() for exchange-done with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,152 DEBUG    [MainThread] Finished firing exchange-done.
landscape-client[7793]: 2024-08-23 08:17:15,152 INFO     [MainThread] Message exchange completed in 1.00s.
landscape-client[7793]: 2024-08-23 08:17:15,152 DEBUG    [MainThread] Started firing resynchronize.
landscape-client[7793]: 2024-08-23 08:17:15,152 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Started firing resynchronize.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,153 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,154 DEBUG    [MainThread] Calling landscape.client.monitor.usermonitor.UserMonitor._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,154 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,154 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,154 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,154 DEBUG    [MainThread] Finished firing resynchronize.
landscape-client[7793]: 2024-08-23 08:17:15,154 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,154 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,154 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,154 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,154 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,154 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClientPlugin._resynchronize() for resynchronize with priority 0.
landscape-client[7793]: 2024-08-23 08:17:15,154 DEBUG    [MainThread] Finished firing resynchronize.
landscape-client[7793]: 2024-08-23 08:17:15,156 DEBUG    [MainThread] delaying start of landscape.client.manager.hardwareinfo.HardwareInfo for 7642 seconds
landscape-client[7793]: 2024-08-23 08:17:15,156 DEBUG    [MainThread] delaying start of landscape.client.manager.snapmanager.SnapManager for 14 seconds
landscape-client[7793]: 2024-08-23 08:17:15,156 DEBUG    [MainThread] delaying start of landscape.client.manager.customgraph.CustomGraphPlugin for 8 seconds
landscape-client[7793]: 2024-08-23 08:17:15,157 DEBUG    [MainThread] delaying start of landscape.client.monitor.mountinfo.MountInfo for 14 seconds
landscape-client[7793]: 2024-08-23 08:17:15,157 DEBUG    [MainThread] delaying start of landscape.client.monitor.usermonitor.UserMonitor for 265 seconds
landscape-client[7793]: 2024-08-23 08:17:15,158 DEBUG    [MainThread] delaying start of landscape.client.monitor.rebootrequired.RebootRequired for 84 seconds
landscape-client[7793]: 2024-08-23 08:17:15,158 DEBUG    [MainThread] delaying start of landscape.client.monitor.networkactivity.NetworkActivity for 2 seconds
landscape-client[7793]: 2024-08-23 08:17:15,158 DEBUG    [MainThread] delaying start of landscape.client.monitor.swiftusage.SwiftUsage for 0 seconds
landscape-client[7793]: 2024-08-23 08:17:15,158 ERROR    [MainThread] Error reading shadow file. [Errno 13] Permission denied: '/etc/shadow'
landscape-client[7793]: 2024-08-23 08:18:05,154 DEBUG    [MainThread] Started firing impending-exchange.
landscape-client[7793]: 2024-08-23 08:18:05,154 DEBUG    [MainThread] Calling landscape.client.broker.server.event.<locals>.broadcast_event() for impending-exchange with priority 0.
landscape-client[7793]: 2024-08-23 08:18:05,155 DEBUG    [MainThread] Finished firing impending-exchange.
landscape-client[7793]: 2024-08-23 08:18:05,155 DEBUG    [MainThread] Started firing impending-exchange.
landscape-client[7793]: 2024-08-23 08:18:05,155 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClient.notify_exchange() for impending-exchange with priority 0.
landscape-client[7793]: 2024-08-23 08:18:05,155 INFO     [MainThread] Got notification of impending exchange. Notifying all plugins.
landscape-client[7793]: 2024-08-23 08:18:05,155 DEBUG    [MainThread] Started firing impending-exchange.
landscape-client[7793]: 2024-08-23 08:18:05,155 DEBUG    [MainThread] Calling landscape.client.broker.client.BrokerClient.notify_exchange() for impending-exchange with priority 0.
landscape-client[7793]: 2024-08-23 08:18:05,155 INFO     [MainThread] Got notification of impending exchange. Notifying all plugins.
landscape-client[7793]: 2024-08-23 08:18:05,156 DEBUG    [MainThread] Finished firing impending-exchange.
landscape-client[7793]: 2024-08-23 08:18:05,157 DEBUG    [MainThread] Finished firing impending-exchange.
landscape-client[7793]: 2024-08-23 08:18:15,155 DEBUG    [MainThread] Started firing pre-exchange.
landscape-client[7793]: 2024-08-23 08:18:15,155 DEBUG    [MainThread] Calling landscape.client.broker.registration.RegistrationHandler._handle_pre_exchange() for pre-exchange with priority 0.
landscape-client[7793]: 2024-08-23 08:18:15,155 DEBUG    [MainThread] Finished firing pre-exchange.
landscape-client[7793]: 2024-08-23 08:18:15,155 INFO     [MainThread] Starting urgent message exchange with https://landscape.canonical.com/message-system.
landscape-client[7793]: 2024-08-23 08:18:15,156 DEBUG    [PoolThread-twisted.internet.reactor-1] Sending payload:
------> PAYLOAD HERE <-------
landscape-client[7793]: 2024-08-23 08:18:16,684 INFO     [PoolThread-twisted.internet.reactor-1] Sent 768 bytes and received 113 bytes in 1.53s.
landscape-client[7793]: 2024-08-23 08:18:16,684 DEBUG    [PoolThread-twisted.internet.reactor-1] Received payload:
landscape-client[7793]: {'messages': [{'type': 'unknown-id'}],
landscape-client[7793]:  'server-api': '3.3',
landscape-client[7793]:  'server-uuid': XXXXX'}
landscape-client[7793]: 2024-08-23 08:18:16,685 INFO     [MainThread] Switching to normal exchange mode.
landscape-client[7793]: 2024-08-23 08:18:16,686 DEBUG    [MainThread] Started firing message.
landscape-client[7793]: 2024-08-23 08:18:16,686 DEBUG    [MainThread] Calling landscape.client.broker.ping.Pinger._handle_set_intervals() for message with priority 0.
landscape-client[7793]: 2024-08-23 08:18:16,686 DEBUG    [MainThread] Calling landscape.client.broker.server.BrokerServer.broadcast_message() for message with priority 0.
landscape-client[7793]: 2024-08-23 08:18:16,686 DEBUG    [MainThread] Finished firing message.
landscape-client[7793]: 2024-08-23 08:18:16,686 INFO     [MainThread] Client has unknown secure-id for account XXXXXX.
landscape-client[7793]: 2024-08-23 08:18:16,695 DEBUG    [MainThread] Started firing exchange-done.
landscape-client[7793]: 2024-08-23 08:18:16,695 DEBUG    [MainThread] Calling landscape.client.broker.registration.RegistrationHandler._handle_exchange_done() for exchange-done with priority 0.
landscape-client[7793]: 2024-08-23 08:18:16,695 DEBUG    [MainThread] Started firing pre-exchange.
landscape-client[7793]: 2024-08-23 08:18:16,695 DEBUG    [MainThread] Calling landscape.client.broker.registration.RegistrationHandler._handle_pre_exchange() for pre-exchange with priority 0.
landscape-client[7793]: 2024-08-23 08:18:16,696 INFO     [MainThread] Queueing message to register with account XXXXX with a password.
landscape-client[7793]: 2024-08-23 08:18:16,696 DEBUG    [MainThread] Finished firing pre-exchange.
landscape-client[7793]: 2024-08-23 08:18:16,697 INFO     [MainThread] Starting message exchange with https://landscape.canonical.com/message-system.
landscape-client[7793]: 2024-08-23 08:18:16,697 DEBUG    [MainThread] Finished firing exchange-done.
landscape-client[7793]: 2024-08-23 08:18:16,697 INFO     [MainThread] Message exchange completed in 1.54s.
landscape-client[7793]: 2024-08-23 08:18:16,697 DEBUG    [PoolThread-twisted.internet.reactor-0] Sending payload:
------> PAYLOAD HERE <-------
landscape-client[7793]: 2024-08-23 08:18:18,109 INFO     [PoolThread-twisted.internet.reactor-0] Sent 3904 bytes and received 206 bytes in 1.41s.
landscape-client[7793]: 2024-08-23 08:18:18,109 DEBUG    [PoolThread-twisted.internet.reactor-0] Received payload:
landscape-client[7793]: {'messages': [{'id': b'XXXXXXX'
landscape-client[7793]:                      b'XXXXXXX',
landscape-client[7793]:                'insecure-id': XXXXXXX,
landscape-client[7793]:                'type': 'set-id'}],
landscape-client[7793]:  'server-api': '3.3',
landscape-client[7793]:  'server-uuid': b'XXXXXXXX'}

Thanks in advance.

Posting this just in case someone else encounters a similar issue in the future.

The problem with devices not appearing in the landscape UI was due to all available licenses being used. The SaaS Landscape dashboard did not display any errors or messages when new devices were blocked.

I discovered this by disabling the auto device enrollment feature in the dashboard UI. When I manually tried to approve a new device, the UI displayed an error message indicating the issue.