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:
parent
6ca76f3bb7
commit
1a25c50334
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/head/; revision=33001
1 changed files with 146 additions and 2 deletions
|
@ -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>
|
||||
|
|
Loading…
Reference in a new issue