Κάποιες φορές είναι βολικό, αν και όχι καλύτερο από πλευράς ασφάλειας, να κάνεις αυτόματη σύνδεση στον υπολογιστή χωρίς να δίνεις όνομα χρήστη ή κωδικό. Αυτό είναι πολύ εύκολο σε γραφικό περιβάλλον και κάθε διανομή παρέχει εργαλεία για τον σκοπό αυτό. Αλλά δεν ξεκινάνε όλοι οι υπολογιστές σε γραφικό περιβάλλον. Επίσης μπορείς να βγεις σε καθαρό περιβάλλον τερματικού με τον συνδυασμό πλήκτρων 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 .
Βλέποντας τα 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
γιατί το έχουμε που το έχουμε
Άσκηση για το σπίτι
Βάλτε να τρέχει η εντολή htop
στο tty3
. Τι θα συμβεί αν την τερματίσουμε; Δείτε τα logs
. Δείτε τα αρχεία που δημιουργήθηκαν στον φάκελλο /etc/systemd/system/
. Επαναφέρετε το σύστημα στην προηγούμενη κατάσταση.