Πώς να κάνετε εναλλαγή (su) σε άλλον λογαριασμό χρήστη χωρίς κωδικό πρόσβασης


Σε αυτόν τον οδηγό, θα δείξουμε πώς να μεταβείτε σε άλλον ή συγκεκριμένο λογαριασμό χρήστη χωρίς να απαιτείται κωδικός πρόσβασης. Για παράδειγμα, έχουμε έναν λογαριασμό χρήστη που ονομάζεται postgres (ο προεπιλεγμένος λογαριασμός συστήματος υπερχρήστη PostgreSQL), θέλουμε κάθε χρήστη (συνήθως η βάση δεδομένων μας PostgreSQL και διαχειριστές συστήματος) στην ομάδα που ονομάζεται postgres για να μεταβείτε στον λογαριασμό postgres χρησιμοποιώντας την εντολή su χωρίς να εισάγετε κωδικό πρόσβασης.

Από προεπιλογή, μόνο ο χρήστης root μπορεί να μεταβεί σε άλλο λογαριασμό χρήστη χωρίς να εισάγει κωδικό πρόσβασης. Θα ζητηθεί από οποιονδήποτε άλλο χρήστη να εισαγάγει τον κωδικό πρόσβασης του λογαριασμού χρήστη στον οποίο μεταβαίνει (ή εάν χρησιμοποιεί την εντολή sudo, θα του ζητηθεί να εισαγάγει τον κωδικό πρόσβασής του), εάν δεν δώσει τον σωστό κωδικό πρόσβασης, θα λάβει ένα σφάλμα "αποτυχία ελέγχου ταυτότητας " όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

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

1. Χρήση της μονάδας ελέγχου ταυτότητας PAM

Το PAM (Μονάδες ελέγχου ταυτότητας με δυνατότητα προσθήκης) αποτελούν τον πυρήνα του ελέγχου ταυτότητας χρήστη στα σύγχρονα λειτουργικά συστήματα Linux. Για να επιτρέψουμε στους χρήστες μιας συγκεκριμένης ομάδας να μεταβούν σε άλλον λογαριασμό χρήστη χωρίς κωδικό πρόσβασης, μπορούμε να τροποποιήσουμε τις προεπιλεγμένες ρυθμίσεις PAM για την εντολή su στο /etc/pam.d/su αρχείο.

vim /etc/pam.d/su
OR
sudo vim /etc/pam.d/su

Προσθέστε τις ακόλουθες διαμορφώσεις μετά το "auth επαρκής pam_rootok.so " όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

auth       [success=ignore default=1] pam_succeed_if.so user = postgres
auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Στην παραπάνω διαμόρφωση, η πρώτη γραμμή ελέγχει εάν ο χρήστης-στόχος είναι postgres, εάν είναι, η υπηρεσία ελέγχει τον τρέχοντα χρήστη, διαφορετικά, η γραμμή default=1 παραλείπεται και εκτελούνται τα κανονικά βήματα ελέγχου ταυτότητας.

auth       [success=ignore default=1] pam_succeed_if.so user = postgres

Η γραμμή που ακολουθεί ελέγχει εάν ο τρέχων χρήστης βρίσκεται στην ομάδα postgres, εάν ναι, η διαδικασία ελέγχου ταυτότητας θεωρείται επιτυχής και ως αποτέλεσμα επιστρέφει επαρκής. Διαφορετικά, εκτελούνται τα κανονικά βήματα ελέγχου ταυτότητας.

auth       sufficient   pam_succeed_if.so use_uid user ingroup postgres

Αποθηκεύστε το αρχείο και κλείστε το.

Στη συνέχεια, προσθέστε τον χρήστη (για παράδειγμα aaronk) που θέλετε να su στον λογαριασμό postgres χωρίς κωδικό πρόσβασης στην ομάδα postgres χρησιμοποιώντας την εντολή usermod.

$sudo usermod -aG postgres aaronk

Προσπαθήστε τώρα να su στον λογαριασμό postgres ως χρήστης aaronk, δεν θα πρέπει να σας ζητηθεί κωδικός πρόσβασης όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης:

su - postgres

2. Χρήση του αρχείου Sudoers

Μπορείτε επίσης να su σε άλλο χρήστη χωρίς να απαιτείται κωδικός πρόσβασης κάνοντας κάποιες αλλαγές στο αρχείο sudoers. Σε αυτήν την περίπτωση, ο χρήστης (για παράδειγμα aaronk) που θα μεταβεί σε άλλο λογαριασμό χρήστη (για παράδειγμα postgres) θα πρέπει να βρίσκεται στο αρχείο sudoers ή στην ομάδα sudo μπορεί να επικαλεστεί την εντολή sudo.

sudo visudo

Στη συνέχεια, προσθέστε την ακόλουθη διαμόρφωση κάτω από τη γραμμή “%sudo ALL=(ALL:ALL) ALL ” όπως φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

aaronk ALL=NOPASSWD: /bin/su – postgres

Αποθηκεύστε και κλείστε το αρχείο.

Τώρα δοκιμάστε να su στον λογαριασμό postgres ως χρήστης aaronk, το κέλυφος δεν θα πρέπει να σας ζητήσει να εισαγάγετε κωδικό πρόσβασης:

sudo su - postgres

Αυτα για τωρα! Για περισσότερες πληροφορίες, ανατρέξτε στη σελίδα μη αυτόματης εισαγωγής PAM (man pam.conf) καθώς και στη σελίδα sudo command (man sudo).

man pam.conf
man sudo