MFen: 1.153 -> 1.154 en_US.ISO8859-1/books/handbook/basics/chapter.sgml

Obtained from:	FreeBSD Greek Documentation Project
This commit is contained in:
Manolis Kiagias 2008-10-04 14:23:30 +00:00
parent 6ca76f3bb7
commit 1a25c50334
Notes: svn2git 2020-12-08 03:00:23 +00:00
svn path=/head/; revision=33001

View file

@ -7,7 +7,7 @@
$FreeBSD$
%SOURCE% en_US.ISO8859-1/books/handbook/basics/chapter.sgml
%SRCID% 1.153
%SRCID% 1.154
-->
@ -713,8 +713,152 @@ total 530
&man.chflags.1; êáé &man.chflags.2; ãéá ðåñéóóüôåñåò ðëçñïöïñßåò.
</para>
</sect2>
<sect2>
<sect2info>
<authorgroup>
<author>
<firstname>Tom</firstname>
<surname>Rhodes</surname>
<contrib>Συνεισφορά από τον </contrib>
</author>
</authorgroup>
</sect2info>
<title>Οι Άδειες setuid, setgid και sticky</title>
<para>Εκτός από τις άδειες που έχουμε συζητήσει ήδη, υπάρχουν τρεις
ακόμα τις οποίες κάθε διαχειριστής πρέπει να γνωρίζει. Πρόκειται για
τις άδειες <literal>setuid</literal>, <literal>setgid</literal> και
<literal>sticky</literal>.</para>
<para>Οι παραπάνω είναι σημαντικές για κάποιες λειτουργίες στο &unix;,
καθώς παρέχουν λειτουργίες που δεν είναι φυσιολογικά διαθέσιμες στους
κοινούς χρήστες. Για να τις κατανοήσετε, θα πρέπει πρώτα να
καταλάβετε την διαφορά μεταξύ του πραγματικού αναγνωριστικού χρήστη
(real user ID) και του ενεργού αναγνωριστικού χρήστη (effective user
ID).</para>
<para>Το πραγματικό ID του χρήστη, είναι το <acronym>UID</acronym>
στο οποίο ανήκει, ή με το οποίο ξεκινά, μια διεργασία. Το ενεργό
<acronym>UID</acronym>, είναι το αναγνωριστικό χρήστη το οποίο
εκτελεί την διεργασία. Για παράδειγμα, το βοηθητικό πρόγραμμα
&man.passwd.1; εκτελείται με το πραγματικό ID του χρήστη που αλλάζει
τον κωδικό του. Ωστόσο, για να μπορεί να διαχειριστεί την βάση
δεδομένων με τους κωδικούς του συστήματος, το πρόγραμμα αυτό
χρησιμοποιεί ως ενεργό ID αυτό του χρήστη <username>root</username>.
Με αυτό τον τρόπο, επιτρέπεται στους απλούς χρήστες να αλλάζουν τους
κωδικούς τους χωρίς να παίρνουν το μήνυμα λάθους
<errorname>Permission Denied</errorname> (απαγόρευση
πρόσβασης).</para>
<note>
<para>Η επιλογή <literal>nosuid</literal> στην εντολή &man.mount.8;
θα προκαλέσει αποτυχία εκτέλεσης αυτών των εντολών, και μάλιστα
χωρίς κάποιο μήνυμα λάθους. Με λίγα λόγια, η εκτέλεση τους θα
αποτύχει, και ο χρήστης δεν θα ενημερωθεί για αυτό. Η επιλογή
αυτή δεν είναι επίσης απόλυτα ασφαλής, καθώς (σύμφωνα με τη σελίδα
manual &man.mount.8;) υπάρχει τρόπος να παρακαμφθεί μέσω κάποιου
ενδιάμεσου <literal>nosuid</literal> προγράμματος (wrapper).</para>
</note>
<para>Μπορείτε να καθορίσετε την άδεια setuid, τοποθετώντας τον αριθμό
τέσσερα (4) μπροστά από το γενικό σετ των αδειών, όπως φαίνεται
στο ακόλουθο παράδειγμα:</para>
<screen>&prompt.root; <userinput>chmod 4755 suidexample.sh</userinput></screen>
<para>Οι άδειες στο αρχείο
<filename><replaceable>suidexample.sh</replaceable></filename> θα
φαίνονται τώρα όπως παρακάτω:</para>
<programlisting>-rwsr-xr-x 1 trhodes trhodes 63 Aug 29 06:36 suidexample.sh</programlisting>
<para>Παρατηρήστε στο παράδειγμα, ότι το <literal>s</literal> είναι
πλέον μέλος του συνόλου αδειών που έχουν καθοριστεί για τον ιδιοκτήτη
του αρχείου, και έχει αντικαταστήσει την αντίστοιχη άδεια εκτέλεσης.
Με τον τρόπο αυτό λειτουργούν προγράμματα που χρειάζονται αυξημένα
δικαιώματα, όπως για παράδειγμα η εντολή
<command>passwd</command>.</para>
<para>Για να παρατηρήσετε αυτή τη λειτουργία την ώρα που συμβαίνει,
ανοίξτε δύο τερματικά. Στο πρώτο, ξεκινήστε την εντολή
<command>passwd</command> ως κανονικός χρήστης. Καθώς η εντολή
εκτελείται και περιμένει για την εισαγωγή του νέου κωδικού, ελέγξτε
τον πίνακα διεργασιών και αναζητήστε τις πληροφορίες του χρήστη που
εκτελεί την εντολή <command>passwd</command>.</para>
<para>Στο τερματικό Α:</para>
<screen>Changing local password for trhodes
Old Password:</screen>
<para>Στο τερματικό Β:<para>
<screen>&prompt.root; <userinput>ps aux | grep passwd</userinput></screen>
<screen>trhodes 5232 0.0 0.2 3420 1608 0 R+ 2:10AM 0:00.00 grep passwd
root 5211 0.0 0.2 3620 1724 2 I+ 2:09AM 0:00.01 passwd</screen>
<para>Όπως είπαμε παραπάνω, η εντολή <command>passwd</command>
εκτελείται από ένα κανονικό χρήστη, αλλά χρησιμοποιεί το ενεργό
<acronym>UID</acronym> του χρήστη <username>root</username>.</para>
<para>Η άδεια <literal>setgid</literal> εκτελεί την ίδια λειτουργία όπως
και η <literal>setuid</literal>, αλλά επιδρά στις άδειες της ομάδας
(group). Όταν εκτελέσετε μια τέτοια εφαρμογή ή βοηθητικό πρόγραμμα,
θα χρησιμοποιεί τις άδειες της ομάδας στην οποία ανήκει το αρχείο,
και όχι του χρήστη που την ξεκίνησε.</para>
<para>Για να θέσετε την άδεια <literal>setgid</literal> σε ένα αρχείο,
θα πρέπει να τοποθετήσετε τον αριθμό δύο (2) μπροστά από το σύνολο
αδειών, στην εντολή <command>chmod</command>. Δείτε το παρακάτω
παράδειγμα:</para>
<screen>&prompt.root; <userinput>chmod 2755 suidexample.sh</userinput></screen>
<para>Όπως και πριν, θα παρατηρήσετε τη νέα άδεια <literal>s</literal>,
αλλά αυτή τη φορά στο σετ των αδειών της ομάδας:</para>
<screen>-rwxr-sr-x 1 trhodes trhodes 44 Aug 31 01:49 suidexample.sh</screen>
<note>
<para>Στα παραδείγματα μας, αν και το αρχείο είναι ένα εκτελέσιμο
script για κέλυφος, δεν θα εκτελεστεί με διαφορετικό ενεργό ID
(<acronym>EUID</acronym>). Αυτό συμβαίνει γιατί σε αυτά τα scripts
δεν επιτρέπεται η πρόσβαση στις κλήσεις &man.setuid.2; του
συστήματος.</para>
</note>
<para>Οι δύο πρώτες ειδικές άδειες που αναφέραμε,
οι <literal>setuid</literal> και <literal>setgid</literal>,
ενδεχομένως να μειώσουν την ασφάλεια του συστήματος, αφού επιτρέπουν
σε προγράμματα να εκτελούνται με αυξημένα δικαιώματα. Υπάρχει ωστόσο
μια τρίτη ειδική άδεια, η οποία μπορεί να αυξήσει την ασφάλεια του
συστήματος: το <literal>sticky bit</literal>.</para>
<para>Όταν θέσετε το <literal>sticky bit</literal> σε ένα κατάλογο,
επιτρέπεται η διαγραφή ενός αρχείου μόνο από τον ιδιοκτήτη του.
Η άδεια αυτή είναι χρήσιμη για να αποφεύγεται η διαγραφή ενός αρχείου
από κοινόχρηστους καταλόγους, όπως για παράδειγμα ο
<filename class="directory">/tmp</filename>, από κάποιο χρήστη που
δεν είναι ο ιδιοκτήτης του. Για να θέσετε αυτή την άδεια, τοποθετήστε
τον αριθμό ένα (1) στην αρχή του σετ αδειών:</para>
<screen>&prompt.root; <userinput>chmod 1777 /tmp</userinput></screen>
<para>Μπορείτε τώρα να δείτε το αποτέλεσμα, χρησιμοποιώντας την εντολή
<command>ls</command>:</para>
<screen>&prompt.root; <userinput>ls -al / | grep tmp</userinput></screen>
<screen>drwxrwxrwt 10 root wheel 512 Aug 31 01:49 tmp</screen>
<para>Η άδεια <literal>sticky bit</literal> φαίνεται ως
<literal>t</literal> στο τέλος του συνόλου των αδειών.</para>
</sect2>
</sect1>
<sect1 id="dirstructure">
<title>ÄïìÞ Êáôáëüãïõ</title>
<indexterm><primary>éåñáñ÷ßá äïìÞò</primary></indexterm>