TTY monitor
Inleiding
Dus, je hebt je desktop veranderd in een server, maar je hebt een monitor er aan vast hangen waar je niet zo veel mee kan. Toch wil je eigenlijk wel iets nuttigs doen met de monitor, hiervoor komt deze pagina van pas!
Hier word namelijk uitgelegd hoe je veilig op tty1 btop kan draaien, om een system monitor scherm te hebben die altijd aan gaat tegelijk met je server!
Beperkingen
Ik wil wel vantevoren delen, dit is maar 1x getest en werkend uitgevoerd op de GIBSON, die draait op Rocky 9.5.
Instructies
Deze instructies gaan er van uit dat je btop al geinstalleerd hebt, en ook weet waar de ELF binary van btop zit, als je dat niet weet kan je dat uitvinden met de commando "which btop"
Gebruiker aanmaken
Er is een gebruiker met verminderde rechten nodig om dit veilig op te zetten, dit kan je doen als volgt:
- sudo useradd -m -s /bin/bash tty1monitor # TODO: RESTRICTED SHELL OF NOLOGIN, KIJKEN OF DIT WERKT
- sudo usermod -L tty1monitor
- sudo mkdir -p /opt/monitor/{.config/btop,.fonts,bin}
- sudo chown tty1monitor /opt/monitor/
Je zou nu als het goed is een locked gebruiker moeten hebben die een .config directory heeft, een .fonts directory, en een directory voor binaries waar we btop in gaan zetten.
Enviorment variabelen klaarmaken
De volgende stappen moeten ondernomen worden om de gebruikers home directory klaar te maken, namelijk:
- Er moet een .profile script gemaakt worden die gerunt word zodra tty1monitor inlogt
- Er moeten nieuwe character fonts in .fonts gezet worden, omdat de tty1 console namelijk bepaalde unicode karakters niet ondersteunt
- De enviorment variabelen voor btop moeten ook klaar gezet worden, zodat er geen processen vertoont worden op de scherm, dit is namelijk een security risico
- Als laatste moeten er symbolic links gemaakt worden naar de vastgesteld $PATH variabel voor de locked gebruiker
profile script aanmaken
Zet het volgende in de "/opt/monitor/.profile" bestandje van tty1monitor:
HOME=/opt/monitor/
PATH=/opt/monitor/bin
setfont /opt/monitor/.fonts/Lat15-VGA16-braille.psf
btop --tty_off ; exit
De "; exit" aan het einde zorgt ervoor dat mensen niet de terminal uit kunnen naar een shell, ze zullen meteen uitgelogd worden. Ook met ctrl-Z kunnen ze niet bij een shell dan, omdat de shell dan hangt.
Fonts klaarmaken
Je kan van de volgende url een braille font ophalen die gebruikt kan worden in de console:
https://raw.githubusercontent.com/xxxserxxx/gotop/master/fonts/Lat15-VGA16-braille.psf
Deze Lat15-VGA16-braille.psf file kan je in de "/opt/monitor/.fonts" directory zetten
met curl of wget kan je het bestandje ophalen naar de machine, en daarna plaatsen waar het hoort
btop env variabelen
btop heeft nu wat enviorment variables nodig, die je kan plaatsen in "/opt/monitor/.config/btop/btop.conf"
color_theme = "TTY"
rounded_corners = False
shown_boxes = "cpu mem net"
temp_scale = "fahrenheit"
Je kan hier de tempratuur schaal veranderen naar "celsius", "fahrenheit", "kelvin" of "rankine"
symbolic links
Als laatste moet de gebruiker links hebben naar de binaries die ze nodig hebben (Specifiek "setfont" en "btop") omdat de PATH variabel handmatig gezet word naar "~/bin" van de gebruiker, kan het geen gebruiken van enige andere shell functies zoals "cd" of "ls"
sudo ln -s $(which setfont) /opt/monitor/bin
sudo ln -s $(which btop) /opt/monitor/bin
De gebruiker "tty1monitor" zou als het goed is nu helemaal klaar moeten staan voor gebruik!
En nu als een service!
Natuurlijk zou je dit als een service willen draaien, zodat die tegelijk met systemd opstart wanneer het systeem boot, dit kan gedaan worden door het normale gedrag van tty1 te "override", dat betekend dat in plaats van de reguliere tty1 script die draait, jouw eigen script draait, en dit kan je ook nog eens lekker als een systemd .service file aanmaken!
service file
Met de commando "sudo systemctl edit [email protected]" kan je een override maken voor tty1, in deze file kan je het volgende doen:
[Service]
ExecStart=
ExecStart=-/sbin/agetty --noissue --autologin tty1monitor %I $TERM
Type=idle
Als het goed is, kan je nu met "sudo systemctl start getty@tty1" de console starten met btop!
Opruimen
Als je alles weer terug wilt draaien, kan je de override file verwijderen in "/etc/systemd/system/[email protected]/override.conf", waarna tty1 weer een login prompt word.
tot slot kan je dan ook de user en zijn home directory verwijderen, waarna alles weer moet zijn zoals het was!