Αυτόματη σύνδεση στην κονσόλα και άλλα κόλπα με το tty

Κάποιες φορές είναι βολικό, αν και όχι καλύτερο από πλευράς ασφάλειας, να κάνεις αυτόματη σύνδεση στον υπολογιστή χωρίς να δίνεις όνομα χρήστη ή κωδικό. Αυτό είναι πολύ εύκολο σε γραφικό περιβάλλον και κάθε διανομή παρέχει εργαλεία για τον σκοπό αυτό. Αλλά δεν ξεκινάνε όλοι οι υπολογιστές σε γραφικό περιβάλλον. Επίσης μπορείς να βγεις σε καθαρό περιβάλλον τερματικού με τον συνδυασμό πλήκτρων CtrlAltF1. Από εκεί με AltF7 θα επιστρέψεις σε γραφικό περιβάλλον. Στον οδηγό αυτό θα δείξω πως μπορείς να έχεις αυτόματη σύνδεση σε αυτό το περιβάλλον χωρίς να πρέπει να δίνεις κωδικό η όνομα χρήστη. Και με την ευκαιρία θα δείξω και κάποια άλλα κόλπα.

Το μεγαλύτερο πρόβλημα με την αυτόματη σύνδεση δεν είναι η ασφάλεια. Είναι που οι χρήστες ξεχνάνε τόσο το όνομα χρήστη όσο και τον κωδικό πρόσβασης. Αν ο ξεχασιάρης φίλος σου επιμένει να του το ενεργοποιήσεις αντιστάσου!

Κάτω από το καπάκι

Το πρόγραμμα που είναι υπεύθυνο για την σύνδεση στην διανομή μου είναι το agetty. Τυπικά το init θα ξεκινήσει τις κονσόλες. Αυτή ήταν και σχεδόν η μόνη δουλεία που έκανε πριν πολλές δεκαετίες, όταν είχαμε εξωτερικά τερματικά συνδεμένα σε σειριακές πόρτες. Το systemd, σε αντίθεση με τα παλιά συστήματα, δεν θα ξεκινήσει τις κονσόλες αυτόματα για να εξοικονομήσει χρόνο και πόρους. Αλλά αυτόματα θα ξεκινήσει μόλις μια ζητηθεί και κανείς δεν θα το καταλάβει.

Για να κάνουμε μια κονσόλα να ξεκινήσει αυτόματα, θα δώσουμε την εντολή (για την πρώτη):

sudo systemctl enable getty@tty1

και το σύστημα θα ανταποκριθεί λέγοντας

Created symlink
/etc/systemd/system/getty.target.wants/getty@tty4.service → /lib/systemd/system/getty@.service.

Τι ακριβώς συνέβη εδώ;

Περίληψη

Το getty.target είναι ένα σημείο στόχος. Για να ενεργοποιηθεί το σύστημα getty θα πρέπει να ξεκινήσει η υπηρεσία getty@tty1.

Αλλάζοντας την συμπεριφορά

Θα δώσουμε την εντολή

sudo systemctl edit getty@tty1

και στο αρχείο που θα ανοίξει θα γράψουμε (αλλάζοντας την λέξη talos με το δικό σας login)

[Service]
ExecStart=
ExecStart=-/sbin/agetty --autologin talos --noclear %I $TERM

αν θέλουμε να ζητάει μόνο τον κωδικό, θα δώσουμε

ExecStart=-/sbin/agetty -skip-login --login-options %I $TERM

και θα ενεργοποιήσουμε τις αλλαγές με τις εντολές

sudo systemctl restart getty@tty1
sudo systemctl status getty@tty1

Τι ακριβώς συνέβη εδώ;

Περίληψη

Φτιάχτηκε ένα αρχείο με όνομα /etc/systemd/system/getty@tty1.service.d/override.conf που κάνει αλλαγές πάνω στο προηγούμενο αρχείο. Έτσι δεν πειράζουμε καθόλου το αρχικό αρχείο και αν θέλουμε να επαναφέρουμε το σύστημα, απλά σβήνουμε το αρχείο.

Όταν κάνουμε αλλαγές με το χέρι θα πρέπει να ενημερώσουμε το σύστημα με την εντολή :
sudo systemctrl daemon-reaload

Η πρώτη γραμμή σβήνει ότι πριν υπήρχε και η δεύτερη βάζει την εντολή που θέλουμε να τρέξει. Για να δούμε όλες τις ρυθμίσεις θα δώσουμε την εντολή:

systemctl cat getty@tty1.service

και βλέπουμε πως αρχικά είχε

ExecStart=-/sbin/agetty -o '-p -- \\u' --noclear %I $TERM

Τρέχοντας το tmux

Θα αντικαταστήσουμε τα παραπάνω με τα εξής

# /etc/systemd/system/getty@tty1.service.d/override.conf
[Service]
ExecStart=
ExecStart=su talos -c "/usr/bin/tmux new-session -s start"
StandardInput=tty
StandardOutput=tty

Μόλις επαννεκινήσουμε την υπηρεσία και χωρίς καν να πάμε στην κονσόλα θα δούμε το tmux session με την εντολή tmux list-sessions. Μπορείς έτσι να μοιράζεσαι το τερματικό με το γραφικό περιβάλλον και να πας σε αυτό να κάνεις δουλεία χωρίς να σε ενοχλούν με chats και facebook :crazy_face:.

Βλέποντας τα logs στο tty2

Θα δώσουμε τις εξής γνωστές εντολές

sudo systemctl enable getty@tty2
sudo systemctl edit getty@tty2
sudo systemctl restart getty@tty2
sudo systemctl status getty@tty2

όπου στο αρχείο θα δώσουμε

# /etc/systemd/system/getty@tty2.service.d/override.conf
[Service]
ExecStart=
ExecStart=sh -c 'tail -f /var/log/syslog | ccze -A'
StandardInput=tty
StandardOutput=tty

Το ccze θα χρωματίσει την έξοδο και πρέπει να είναι εγκατεστημένο. Ακόμα καλύτερα μπορούμε να δώσουμε

ExecStart=journalctl --follow

γιατί το έχουμε που το έχουμε :crazy_face:

Άσκηση για το σπίτι

Βάλτε να τρέχει η εντολή htop στο tty3. Τι θα συμβεί αν την τερματίσουμε; Δείτε τα logs. Δείτε τα αρχεία που δημιουργήθηκαν στον φάκελλο /etc/systemd/system/. Επαναφέρετε το σύστημα στην προηγούμενη κατάσταση.

2 Likes