// Copyright (C) 2016-2017 Luke Shumaker // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. //go:generate make // Package sd_login introspects session and login information from // systemd, logind, and machined. // // There are 5 basic object types that these three system services manage. // // The machine manager maintains a list of "machines": // // 1. machine: A local container or virtual machine // // The host system, and machines hosted on it, may each run their own // login manager, which keeps track of seats, sessions, and users: // // 2. seat: A set of hardware devices for a workspace; i.e. a screen // and keyboard // // 3. session: A login session; tied to 0 or 1 seats (0 for things // like SSH login) // // 4. user: Keeps track of logged in users; that is, users with 1 or // more sessions // // Finally, sessions and users can be used to group together // processes, which are kept track of by cgroup manager: // // 5. pid: A process may belong to a session, or directly to a user // if it is not part of a session. This "belonging" is separate // accounting by the login manager; it is NOT the same as the // EUID/RUID. package sd_login