Διαχείριση χρηστών και ομάδων συστήματος σε μια μοντέρνα διανομή

Στον μικρό αυτό οδηγό θα δούμε πως μια μοντέρνα διανομή φτιάχνει τους χρήστες και τις ομάδες που θέλουν οι υπηρεσίες για να λειτουργήσουν. Σε μια πρώτη ματιά αυτό δεν είναι κάτι το δύσκολο. Απλά κατά την εγκατάσταση κάποιας υπηρεσίας θα τρέξει κάποιο script που θα φτιάξει ότι χρειάζεται. Πού είναι το πρόβλημα;

Ναι, η μέθοδος αυτή λειτουργεί, αλλά έχει κάποια θέματα. Κατ αρχήν δεν υπάρχει κάπου στο σύστημα αυτή η πληροφορία σε κάποιο αρχείο που να μπορεί να αλλάξει. Κάτι που δυσκολεύει να πάρεις το /usr μιας εγκατάστασης και να το κάνεις image. Επίσης, δεν είναι τόσο κομψό.

Ο καινούργιος γυαλιστερός τρόπος είναι να χρησιμοποιήσουμε το systemd-sysusers. Από το man page systemd-sysusers(8)

systemd-sysusers creates system users and groups, based on the
file format and location specified in sysusers.d(5).

Δηλαδή κάνει μια πολύ απλή δουλεία. Διαβάζει κάποια αρχεία και φτιάχνει χρήστες και ομάδες. Αν πάμε στο sysusers.d(5) θα βρούμε τις θέσεις που υπάρχουν τα αρχεία αυτά. Θα τα βρούμε στη θέση /usr/lib/sysusers.d. Αν θέλουμε να τα πειράξουμε θα κάνουμε ότι κάνουμε με μια υπηρεσία του systemd. Θα βάλουμε τις αλλαγές μας στη θέση /etc/sysusers.d/

Στόχος μια μοντέρνας διανομής είναι το σύστημα να λειτουργεί χωρίς να κάνουμε καθόλου αλλαγές στο /usr. Εκεί θα πρέπει να είναι και όλλες οι ρυθμίσεις. Στο /etc θα υπάρχουν μόνο όσες ρυθμίσεις σαν χρήστες αλλάξαμε.

Ένα παράδειγμα

Στο παρακάτω αποθετήριο υπάρχουν κάποιοι κανόνες για το udev χρήσιμοι για κινητά τηλέφωνα και το adb

Ο κανόνας του udev επιτρέπει τη χρήση του adb σε όσους είναι στην ομάδα adbusers. Αλλά η ομάδα αυτή δεν υπάρχει. Από τις οδηγίες εγκατάστασης:

# Add the adbusers group if it's doesn't already exist
sudo cp android-udev.conf /usr/lib/sysusers.d/
sudo systemd-sysusers

# Add your user to the adbusers group
sudo gpasswd -a $(whoami) adbusers

Βάζουμε ένα αρχείο που περιγράφει την ομάδα στη γνωστή θέση και τρέχουμε την εντολή systemd-sysusers. Την άλλη φορά που θα δούμε αντίστοιχες εντολές θα ξέρουμε λοιπόν τι κάνουν :innocent:.

Το systemd-sysusers στο σύστημα μου

Ας δούμε τα αρχεία που υπάρχουν στο σύστημα μου

  cd /usr/lib/sysusers.d/
/usr/lib/sysusers.d🔒  ls
 android-udev.conf   dbus.conf      systemd-journal.conf   systemd-resolve.conf    xpra.conf
 basic.conf          flatpak.conf   systemd-network.conf   systemd-timesync.conf  

Μπορώ να δω τι έχουν τα αρχεία ή με κάποιο γνωστό τρόπο ή με την εντολή

systemd-sysusers --cat-config

Δοκιμάστε το στον υπολογιστή σας. Θα δούμε μια περιγραφή των χρηστών και των ομάδων που διαχειρίζεται το systemd-sysusers. Υπάρχει και μια υπηρεσία συστήματος που θα το τρέξει κατά την εκκίνησή

systemctl status systemd-sysusers.service

Ερωτήσεις και απαντήσεις

Είναι ασφαλές;
Το systemd-sysusers δε θα κάνει τίποτα αν οι χρήστες ή οι ομάδες υπάρχουν στο σύστημα, ή αν οι χρήστες είναι ήδη μέλη των ομάδων. Στην πράξη δεν υπάρχει λόγος να πειράξουμε τις ρυθμίσεις έκτος αν θέλουμε να αποτρέψουμε τη δημιουργία αυτών των χρηστών ή των ομάδων.

Δείτε ακόμα

4 «Μου αρέσει»