Skrót Ctrl-Alt-Del w systemd

Spis treści

Po przesiadce z sysvinit na systemd okazało się, że system inaczej się zachowuje po przyciśnięciu kombinacji klawiszy Ctrl-Alt-Del . Niby za wiele nie zmieniałem w konfiguracji systemu ale w żaden sposób przy pomocy plików konfiguracyjnych nie szło zmienić zachowania tego powyższego skrótu. Okazuje się bowiem, że w systemd, akcję pod ten skrót przypisuje się w nieco innym miejscu niż to było robione w sysvinit. W tym wpisie postaramy się zmienić domyślne zachowanie tego skrótu, tak by po jego przyciśnięciu wyłączyć komputer.

Plik /etc/inittab

Za czasów sysvinit konfiguracja skrótu Ctrl-Alt-Del była określana w pliku /etc/inittab . Odpowiadała za niego ta poniższa linijka:

# What to do when CTRL-ALT-DEL is pressed.
ca:12345:ctrlaltdel:/sbin/shutdown -t1 -a -r now

Zatem bez większego problemu byliśmy w stanie zmienić to polecenie na takie, które uważaliśmy za odpowiednie. Jeśli już coś chcieliśmy tutaj przestawić, to zwykle opcję -r podmienialiśmy na -h , co powodowało, że po przyciśnięciu klawiszy Ctrl-Alt-Del , system się wyłączał. Dodatkowo, po skorzystaniu z opcji -a mieliśmy możliwość określenia w pliku /etc/shutdown.allow użytkowników, którzy byli w stanie używać tego skrótu. Systemd nie korzysta z pliku /etc/inittab, dlatego też te powyższe ustawienia nie mają większego sensu.

Target ctrl-alt-del.target

W systemd do obsługi skrótu Ctrl-Alt-Del używa się ctrl-alt-del.target . W zależności od tego gdzie zostanie on podlinkowany, to taka akcja zostanie wykonana. Domyślnie ten target wskazuje na reboot.target :

# ls -al /lib/systemd/system/ctrl-alt-del.target
lrwxrwxrwx 1 root root 13 2015-10-09 13:58:24 /lib/systemd/system/ctrl-alt-del.target -> reboot.target

I to właśnie dlatego po przyciśnięciu Ctrl-Alt-Del , komputer zostaje zresetowany. W przypadku gdybyśmy chcieli zmienić tę akcję i zamiast resetowania wyłączyć maszynę, to ctrl-alt-del.target musimy podlinkować do poweroff.target :

# ln -s /lib/systemd/system/poweroff.target /etc/systemd/system/ctrl-alt-del.target
# systemctl daemon-reload
Mikhail Morfikov avatar
Mikhail Morfikov
Po ponad 10 latach spędzonych z różnej maści linux'ami (Debian/Ubuntu, OpenWRT, Android) mogę śmiało powiedzieć, że nie ma rzeczy niemożliwych i problemów, których nie da się rozwiązać. Jedną umiejętność, którą ludzki umysł musi posiąść, by wybrnąć nawet z tej najbardziej nieprzyjemniej sytuacji, to zdolność logicznego rozumowania.