
1. sudo => παιρνεις προνόμια διαχειριστή (admin privileges), εκτελείς όποια εντολή θέλεις (ή αλλιώς αν στο αρχείο /etc/sudoers λέει πως έχεις περιορισμένη εκτέλεση μερικών εντολών μόνο).
Είσαι ακόμη ο χρήστης "starlight" (το $HOME για παράδειγμα ακόμη είναι του χρήστη σου κι όχι του root).
Ζητάει τον κωδικό του χρήστη "starlight" για επιβεβαίωση (ότι είσαι ο χρήστης starlight και ξέρεις τον κωδικό και θέλεις να διαχειριστείς το σύστημα).
2. sudo apt-get install mysql-client mysql-server => Εγκαθιστάς το πακέτο mysql (daemon και client). Με το sudo γίνεται αυτό που είπα στο (1), οπόταν και το apt-get λειτουργεί με προνόμια διαχειριστή (κοβει, ράβει, σβήνει, προσθέτει, κτλ).
3. Το mysql πακέτο:
3α) Φτιάχνει ένα χρήστη mysql - αυτός ο "χρήστης" είναι system user:
- Κώδικας: Επιλογή όλων
$ id mysql
uid=117(mysql) gid=131(mysql) groups=131(mysql)
Το πακέτο είναι ρυθμισμένο με δικαιώματα στον χρήστη "mysql" για να τρέχει το mysql daemon (το πρόγραμμα βάσης δεδομένων sql που λειτουργεί στο background).
⇒ Αυτόν τον χρήστη "mysql" είδες στο top να τρέχει
3β) Εγκαθιστά τα υπόλοιπα αρχεία. Κάποια από τα αρχεία είναι εντολές (στους φακέλους /usr/bin/, /usr/sbin/ κτλ) Τα αρχεία έχουν τα απαραίτητα permissions ούτως ώστε ο χρήστης "mysql" να μπορεί να εκτελεί το πρόγραμμα.
Ερωτηση: Γιατί ο root λοιπόν εμφανίζεται ως ο ιδιοκτήτης των αρχείων εντολών, όπως π.χ. του /etc/init.d/mysql ή του mysqld;
Απάντηση: Επειδή τα αρχεία βρίσκονται σε φακελους του συστήματος. Είναι λογικό να ανήκουν στον root, για να μην μπορεί κανείς άλλος να τα διαγράψει, παρά μόνο ο/οι διαχειριστές ("root" και ο "starlight" μέσω sudo).
Όμως ο χρήστης "mysql" διατηρεί το δικαίωμα να εκτελεί αρχεία που ανήκουν στον root, επειδή τα αρχεία έχουν τα κατάλληλα permissions:
Star_Light έγραψε:
kostas@kostas-SSL:/usr/sbin$ ls -l mysqld
-rwxr-xr-x 1 root root 9975224 2010-11-10 08:52 mysqld
Επίσης, μην ξεχνάς πως ο διαχειριστής μπορεί να εκτελέσει εντολές ως άλλοι χρήστες:
- Κώδικας: Επιλογή όλων
$ sudo -u test -i
[sudo] password for savvas:
test@home-desktop:~$
Άρα ο διαχειριστής "root" μπορεί να πει στο λειτουργικό "τρέξε το mysqld ως χρήστης mysql". Και έτσι το πρόγραμμα mysql αυτόματα παίρνει τα ανάλογα permissions που έχει ο χρήστης mysql.
Τι πετύχαμε;
Ασφάλεια και λειτουργικότητα!
Πες ένας "hacker/cracker" βρήκε ευκαιρία και τρόπο να μπει στο σύστημα σου.
- Αφ' ενός προστατεύουμε τα αρχεία εντολών όπως το mysqld να μην διαγραφούν. Πώς; Βλέπε (3β)
- Αφ' ετέρου αν τυχόν επιχειρήσει να εισβάλει στο σύστημα μέσω της βάσης δεδομένων mysql, δε θα μπορέσει. Θα έχει access μόνο σε ό,τι ανήκει ή σε ό,τι μπορεί να δει ο χρήστης "mysql". Πώς; Βλέπε (3α)
Αν κάνω κάπου λάθος, διορθώστε με.
