Δημοσιεύτηκε: 13 Φεβ 2014, 17:52
από eliasps
jennie έγραψε:Τη ρωτάω λοιπόν: Ξέρεις τι κάνει το sudo στο λίνουξ;
Απάντηση: Eh??!!???
Οπότε επανέρχομαι: Ξέρετε έστω κι έναν απλό χρήστη που να ξέρει τι κάνει το sudo; Απλό χρήστη εννοούμε κάποιον που δεν ξέρει πόση RAM έχει ο υπολογιστής του και δεν ξημεροβραδιάζεται στα τορεντάδικα. Για να συζητήσουμε μετά για τον αν πρέπει ο απλός χρήστης να ξέρει τι διαφορά ανάμεσα στον υπερχρήστη και τον διαχειριστή. Χωρίς πλάκα τώρα, εννοούμε τη διαφορά sudo και su; Αν όχι, ούτε κι εγώ ξέρω τη διαφορά.

Προσωπικά δεν ξέρω κάποιον χρήστη που δεν ασχολείται γενικά με αυτά, να έχει βρει μόνος του τι σημαίνει το sudo, είτε με ψάξιμο είτε από εμπειρία.
Και εννοείται πως δεν είναι κατακριτέο.
Spoiler: show
Η διαφορά του υπερχρήστη και του διαχειριστή είναι σημαντική, αν και ένας χρήστης δεν χρειάζεται να την γνωρίζει, όταν πας να του εξηγήσεις κάποια πράγματα θα πρέπει να τα διαχωρίσεις.

Το sudo και το su είναι προγράμματα που επιτρέπουν την αλλαγή δικαιωμάτων και χρηστών.
Ο υπερχρήστης και ο διαχειριστής είναι τύποι λογαριασμών με διαφορετικά δικαιώματα.

Ο υπερχρήστης υπάρχει σε όλα τα συστήματα Linux με το username root. Ο root έχει δικαιώματα ανάγνωσης και εγγραφής (read and write) σε όλα τα αρχεία του συστήματος, δεν περιορίζεται πουθενά. Τα δικαιώματά του τού επιτρέπουν να κάνει τα πάντα.
Ο διαχειριστής από την άλλη δεν έχει τέτοια δικαιώματα σε όλα τα αρχεία του συστήματος. Εκτός του /home/$USER δεν μπορεί να κάνει πολλά πράγματα. Δεν μπορεί να κάνει αλλαγές στο σύστημα γιατί δεν επιτρέπεται από τα δικαιώματα που έχει. Έχει όμως την ιδιότητα να αναβαθμίζει προσωρινά τα δικαιώματά του σε αυτά του υπερχρήστη και αυτό το κάνει με την εντολή sudo, όπου του δίνει την δυνατότητα να εκτελέσει μία ενέργεια με τα δικαιώματα υπερχρήστη. Ο λογαριασμός που δημιουργούμε στο Ubuntu κατά την εγκατάσταση είναι στο επίπεδο του διαχειριστή και έχει το username που του έχουμε ορίσει. Ο διαχειριστής λοιπόν, με τη χρήση του sudo αποκτά προσωρινά τα δικαιώματα που έχει ο υπερχρήστης.

Aν εκτελέσεις:
Κώδικας: Επιλογή όλων
cat /etc/sudoers

Θα πάρεις μήνυμα ότι δεν έχεις το δικαίωμα να δεις αυτό το αρχείο. Με:
Κώδικας: Επιλογή όλων
sudo cat /etc/sudoers

Πραγματοποιείς την ίδια ενέργεια, με άλλα δικαιώματα (του υπερχρήστη).

Η διαφορά του sudo με το su μπορεί να εντοπιστεί και στο όνομα, όπου s-u-do = κάνε κάτι με δικαιώματα άλλου χρήστη / υπερχρήστη.
Το su από την άλλη δεν είναι για να κάνει έναν χρήστη να εκτελεί ενέργειες με δικαιώματα άλλου χρήστη όπως το sudo, αλλά ουσιαστικά αλλάζει τον ίδιο τον χρήστη (switch user, superuser). Aν στον υπολογιστή υπάρχουν περισσότεροι από ένας (χωρίς να υπολογίζουμε τον υπερχρήστη) χρήστες, o alpha και ο beta τότε με την εντολή:
Κώδικας: Επιλογή όλων
alpha@hostname:~$ su beta
Enter password for beta: ******
beta@hostname:/home/alpha$ _

Aλλάζουμε χρήστη από αυτόν που ήμασταν προηγουμένως δηλαδή τον alpha, στον beta. Αν εκτελεστεί σκέτο ως su τότε από τον alpha αλλάζει στον root (υπερχρήστη).

Συνοψίζοντας:
  • Με το sudo ένας χρήστης δεν αλλάζει, αλλά εκτελεί ενέργεια έχοντας τα δικαιώματα άλλου χρήστη.
  • Με το su αλλάζει ο χρήστης.

Τεχνικά, αυτό μεταφράζεται στο ότι ο διαχειριστής βρίσκεται στο group sudo (sudoers) και όσοι βρίσκονται σε αυτό το group έχουν το δικαίωμα να αναβαθμίσουν τα δικαιώματά τους σε αυτά του υπερχρήστη.

Αυτά είναι πράγματα που δεν χρειάζεται να γνωρίζει κάποιος όταν δεν τον ενδιαφέρουν.
Αλλά στην περίπτωση που ζητήσει βοήθεια για κάποιο λόγο και πάρει απάντηση:
    έγραψε:-Κάν'το με δικαιώματα διαχειριστή.
Ενώ αντί για διαχειριστής, πρέπει να πεις "υπερχρήστης" ή root.
Μπορεί να δει στους λογαριασμούς χρηστών από τις ρυθμίσεις πως ο λογαριασμός του είναι ήδη διαχειριστής και να σου πει:
    έγραψε:-Μα είμαι διαχειριστής.
Η διαφορά είναι ουσιαστική, σε αντίθεση με αυτή του καταλόγου/φακέλου που μόνο να σε μπερδέψει μπορεί.

Δεν χρειάζεται να είναι κάποιος power user για να συναντήσει αυτούς τους όρους.
Μία από τις πιο απλές ερωτήσεις που μπορεί να κάνει κάποιος είναι:
    έγραψε:-Γιατί το Linux δεν κολλάει ιούς;
Ε, αυτή η ιεραρχία των χρηστών και των δικαιωμάτων τους στο UNIX είναι ένας από τους βασικούς λόγους.

Και για να φέρω ξανά την αντίθεση μεταξύ των φιλοσοφιών Windows - Linux, όταν ένας χρήστης βάλει κάποιο από τα δύο, θα πρέπει να μάθει πως εγκαθιστά και πως αφαιρεί προγράμματα. Άμα ψάξει ή ρωτήσει, θα του απαντήσουν το εξής:
  • Windows: Άνοιξε τον πίνακα ελέγχου, πάτα προσθαφαίρεση προγραμμάτων, βρες το πρόγραμμα και πάτα Κατάργηση.
  • Ubuntu: Άνοιξε το Κέντρο Λογισμικού, βρες το πρόγραμμα και πάτα Αφαίρεση.
    Άνοιξε το τερματικό και εκτέλεσε:
    Κώδικας: Επιλογή όλων
    sudo apt-get remove package

    Πάτα Enter, δώσε τον κωδικό σου (δεν θα φαίνεται τίποτα όσο τον πληκτρολογείς) και πάτα Enter.
Spoiler: show
Εικόνα

Ακόμα δεν ξεκινήσαμε και βλέπουμε τερματικά και εντολές.

lucinos έγραψε:πιστεύω ότι το σημαντικό είναι να έχει κάποιος την διάθεση εξερεύνησης. Πράγμα που δυστυχώς αποθαρρύνεται και παρεμποδίζεται στα σχολεία (τουλάχιστον αυτή ήταν η προσωπική μου εμπειρία)

:thumbup: