Czyszczenie konsoli TTY w systemd
Spis treści
Podczas uruchamiania się systemu, na ekranie zwykle widzimy szereg komunikatów. Informują nas one o tym jakie usługi są aktywowane oraz czy wystąpiły jakieś błędy. Po tym jak faza boot dobiegnie końca, wszystkie te informacje dalej są wyświetlane na konsoli TTY i możemy je podejrzeć po przyciśnięciu klawiszy Ctrl-Alt-F1 . W pewnych sytuacjach może to stwarzać zagrożenie bezpieczeństwa, bo są tam zawarte informacje o tym jakie usługi zostały uruchomione. Przydałoby się zatem wyczyścić tę konsolę TTY po załadowaniu się systemu i o tym będzie poniższy wpis.
Konfiguracja TTY w pliku /etc/inittab
Konsole w debianie, do których możemy przejść za pomocą skrótu Ctrl-Alt-Fx , gdzie x
to numer od
1-6, są uruchamiane za sprawą getty. W przypadku sysvinit, wszelkie
opcje dotyczące TTY, jak i ich rodzaj, były określane w pliku /etc/inittab
. W ten sposób mogliśmy
kontrolować zachowanie tych konsol przez dopisywanie odpowiednich parametrów w linijkach podobnych
do tej poniżej:
1:2345:respawn:/sbin/getty 38400 --noclear tty1
Zatem jeśli chcielibyśmy czyścić pierwszą konsolę TTY po załadowaniu się systemu, to wystarczyło
usunąć opcję --noclear
sprzed nazwy konsoli, przykładowo:
1:2345:respawn:/sbin/getty 38400 tty1
Czyszczenie TTY w systemd
Niestety to powyższe rozwiązanie nie zadziała w przypadku systemd, bo ten zwyczajnie nie korzysta z
pliku inittab
. Jeśli chcemy zaprogramować ten init, by czyścił pierwszą konsolę, to będziemy
musieli nieco przerobić usługę, która konfiguruje TTY.
W debianie pliki .service
znajdują się w /lib/systemd/system/
, a nas będzie interesował plik
getty@.service
. Po znaku @
wpisujemy nazwę konsoli, np. tty1
. Nie będziemy oczywiście w
żaden sposób zmieniać nazwy tego pliku, czy też jego zawartości, bo tak wprowadzone zmiany by
zwyczajnie zostały nadpisane przy aktualizacji pakietu. Zamiast tego, przy pomocy poniższego
polecenia:
# systemctl edit getty@.service
Edytujmy usługę getty@.service
i dodajmy ten poniższy kod:
[Service]
ExecStart=
ExecStart=-/sbin/agetty %I $TERM
W ten sposób zostanie utworzony plik /etc/systemd/system/getty@.service.d/override.conf
, który
wyczyści poprzednie polecenie zawierające parametr --noclear
i zastąpi go tym powyższym, które nie
zawiera już tej opcji. Nic więcej nie musimy robić.