systemd-logind is a system service that manages user logins. It is responsible for:

  • Keeping track of users and sessions, their processes and their idle state. This is implemented by allocating a systemd slice unit for each user below user.slice, and a scope unit below it for each concurrent session of a user. Also, a per-user service manager is started as system service instance of user@.service for each logged in user.

  • Generating and managing session IDs. If auditing is available and an audit session ID is already set for a session, then this ID is reused as the session ID. Otherwise, an independent session counter is used.

  • Providing polkit-based access for users for operations such as system shutdown or sleep

  • Implementing a shutdown/sleep inhibition logic for applications

  • Handling of power/sleep hardware keys

  • Multi-seat management

  • Session switch management

  • Device access management for users

  • Automatic spawning of text logins (gettys) on virtual console activation and user runtime directory management

  • Scheduled shutdown

  • Sending “wall” messages