TTY monitor

From Randomdata wiki
Revision as of 18:51, 6 January 2025 by Tableflip (talk | contribs) (Gebruiker aanmaken: Notice toegevoegd)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

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:

  1. sudo useradd -m -s /bin/bash tty1monitor # TODO: RESTRICTED SHELL OF NOLOGIN, KIJKEN OF DIT WERKT
  2. sudo usermod -L tty1monitor
  3. sudo mkdir -p /opt/monitor/{.config/btop,.fonts,bin}
  4. 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:

  1. Er moet een .profile script gemaakt worden die gerunt word zodra tty1monitor inlogt
  2. Er moeten nieuwe character fonts in .fonts gezet worden, omdat de tty1 console namelijk bepaalde unicode karakters niet ondersteunt
  3. 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
  4. 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!

Bronnen

Medium artikel