User Management (1)

Iedereen die al eens met Linux gewerkt heeft, en zeker als je een Linux training gedaan hebt, is al eens met het commando useradd in aanraking geweest. Wellicht niet op dagelijkse basis, immers: zeker in bedrijfsomgevingen wordt er vaak gewerkt met Identity Management Systemen (IMS) zoals bijvoorbeeld Active Directory. Andere commando’s die bij user management horen zijn usermod, passwd en het relatief onbekende commando loginctl waar deze posting over gaat.

Je kunt met dit commando allerlei interessante dingen doen, bijvoorbeeld het toekennen en beheren van randapparatuur aan een specifieke gebruiker via het werken met seats. Voor nu beperk ik me tot de functies die puur met de gebruikers te maken hebben.

Laten we eens kijken naar de gebruikers die momenteel actief zijn op een systeem:

loginctl list-users

Dat zou er als volgt uit kunnen zien:

Wat is deze gebruiker student aan het doen? Dat kun je uitvinden met:

loginctl user-status student

Je kunt zien dat er 2 scopes actief zijn binnen een slice. Systemd wrapped altijd alles wat een gebruiker doet in een slice. De desbetreffende slice krijgt dan als naam user-<userid>.slice. Alles wat niet gestart is door systemd zelf, wordt vervolgens ondergebracht in een scope. Dit maakt het mogelijk om de sessie te beheren, denk bijvoorbeeld aan het toekennen van resources. Daarnaast zie je in de uitvoer ook de laatste logging entries over deze gebruiker. Het aantal regels wat je daarvan wil zien kun je eventueel beperken of uitbreiden met behulp van de –lines parameter

Het commando:

loginctl list-sessions

Laat zien hoeveel sessies er zijn.

Waarbij de sessie 3 en 4, al bekend zullen voorkomen uit de vorige uitvoer. Je kunt ook nu weer informatie opvragen:

loginctl session-status <sessie nummer>

We zouden nu deze sessie kunnen stoppen met:

loginctl terminate-session <sessie nummer>

Nu is dit een vrij heftige actie, in plaats daarvan kun je ook gaan voor

loginctl kill-session <sessie nummer> --signal <signal>

Waarbij je net zoals met het kill commando op kan geven welk signaal het proces moet krijgen.

Behalve de sessie te termineren, kun je ook een gebruiker hardhandig verwijderen:

loginctl terminate-user <user id>

of opnieuw gebruik te maken van de kill methode.

Alle commando’s van loginctl kun je ook op een remote host uitvoeren, door gebruik te maken van de –host parameter. Hierbij wordt gebruik gemaakt van het SSH protocol. De volledige syntax is:

loginctl --host <gebruiker@hostname> <commando>

Er zijn nog veel meer leuke dingen mogelijk, meer in een volgende blog, of lees alvast:

man loginctl