Σελίδα 1 από 1

Δικαιώματα

ΔημοσίευσηΔημοσιεύτηκε: 26 Αύγ 2008, 19:49
από Dimitris
Τα δικαιώματα (permissions) είναι ένα από τα βασικά χαρακτηριστικά των συστημάτων unix γενικότερα, που επιτρέπει τους χρήστες να ανταλλάσουν αρχεία ή να περιορίζουν την πρόσβαση τρίτων. Ας ανοίξουμε όμως ένα τερματικό από Αpplications > Accessories > Terminal για να δούμε ακριβώς τι συμβαίνει. Είμαστε λογικά στο αρχικό κατάλογο (/home/user όπου user το ονομα χρήστη σας) Πληκτρολογούμε:
Κώδικας: Επιλογή όλων
ls -l

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

Η πρώτη στηλη μπορεί να είναι d ή -, d για φάκελος (directory), - για απλό αρχείο.
Κάθε αρχείο, κι όταν λέω αρχείο εννοώ και φακέλους, έχει ορισμένα χαρακτηριστικά, όπως σε ποιον ανήκει το αρχείο, σε ποια ομάδα ανήκει, ποιος έχει δικαίωμα να το διαβάσει, να το τροποποιήσει ή να το εκτελέσει. Η επόμενες 9 στήλες είναι συνδυασμοί των r,w,x,- έπειτα ακολουθεί ένας αριθμός, κι εκεί βλέπεται το όνομα του χρήστη σας δύο φορές. Η πρώτη εμφάνιση του user συμβολίζει τον ιδιοκτήτη του αρχείου (owner). H δεύτερη εμφάνιση την ομάδα (group). Oι 9 στήλες που περάσαμε είναι 3 συνδυασμοί των 3. Οι πρώτοι 3 συνδυασμοί αναφέρονται στα δικαιώματα του χρήστη. Η δεύτερη τριάδα αναφέρεται στα δικαιώματα της ομάδας και η τελευταία τριάδα στα δικαιώματα των άλλων (οthers, βλ. ανέκδοτο: εσύ με ποιούς είσαι με μας ή με τους άλλους; )

r σημαίνει δικαιώματα ανάγνωσης (read). w σημαίνει δικαιώματα τροποποίησης (write). x σημαίνει δικαιώματα εκτέλεσης (execute). Οποτε αν δούμε το συνδυασμό -rw-r--r-- σημαίνει ότι το αρχείο είναι απλό αρχείο και όχι φάκελος, ο χρήστης στον οποίο ανήκει το αρχείο έχει δικαιώματα να το διαβάσει και να το τροποποιήσει, αλλά όχι να το εκτελέσει. Οι χρήστες που ανήκουν στην ομάδα έχουν δικαίωμα μόνο ανάγνωσης και οι άλλοι έχουν επισης δικαίωμα μόνο ανάγνωσης.

Ο αριθμός που μας διέφυγε σημαίνει πόσα αρχεία περιλαμβάνει το αρχείο μας (Τι αριθμό θα έχει ένα αρχείο με - μπροστα κι όχι d; )

Φυσικά όλα αυτά τα δικαιώματα μπορούν να αλλάξουν. Μερικές χρήσιμες εντολές είναι η chgrp, chown, chmod. H chgrp αλλάζει την ομάδα του αρχείου. Η chown αλλάζει τον ιδιοκτήτη του αρχείου. Και η chmod αλλάζει τα δικαιώματα. Φυσικά για να αλλάξουν αυτά πρέπει να είμαστε ιδιοκτήτες του αρχείου. (Η σύνταξη των εντολών θα ακολουθήσει στο μέλλον, πρέπει να φύγω τώρα;)

Re: Δικαιώματα

ΔημοσίευσηΔημοσιεύτηκε: 26 Αύγ 2008, 20:07
από linuxman
Και με την παρακάτω εντολή αλλάζουμε δικαιώματα σε όλα τα αρχεία , φακέλους και υποφακέλους και τα αρχεία μέσα σε αυτά

Κώδικας: Επιλογή όλων
sudo chown username:username -R *

Re: Δικαιώματα

ΔημοσίευσηΔημοσιεύτηκε: 26 Αύγ 2008, 20:11
από ftso
Ωραία το άρχισες... :D
Περιμένουμε την συνέχεια!
Αν μπορείς να αναφέρεις και την umask.

Re: Δικαιώματα

ΔημοσίευσηΔημοσιεύτηκε: 27 Αύγ 2008, 11:20
από Dimitris
Και τώρα η συνέχεια!

Η σύνταξη της εντολής chgrp είναι:
Κώδικας: Επιλογή όλων
chgrp mygroup myfile

όπου mygroup είναι η ομάδα στην οποιά θα αλλάξει το αρχείο myfile. Mερικές επιλογές είναι -R η οποία αλλάζει και τις ομάδες στους υποφακέλους του myfile, αν υπάρχουν.

Αντίστοιχα, η σύνταξη της εντολής chown είναι:
Κώδικας: Επιλογή όλων
chown owner myfile

όπου owner είναι o καινούριος ιδιοκτήτης στον οποιά θα ανηκει το αρχείο myfile. Mερικές επιλογές είναι -R η οποία αλλάζει και τους ιδιοκτήτες στους υποφακέλους του myfile, αν υπάρχουν.

Η εντολή chmod αλλάζει τα δικαιώματα ως εξής:
Κώδικας: Επιλογή όλων
chmod mode myfile

όπου mode είναι τα νέα δικαιώματα του αρχείου myfile. Oι επιλογές του mode δίνονται με ένα γράμμα που δείχνει ποιον αφορά η αλλάγη (u, g, o), επειτα + για να προσθέσουμε δικαιώματα ή με - για να τα αφαιρέσουμε και έπειτα ακολουθουν τι δικαιώματα θέλουμε να δώσουμε ή να αφαιρέσουμε (r,w,x).

Με μερικά παραδείγματα θα γίνει πιο κατανοητό.
Κώδικας: Επιλογή όλων
ls -l
-rw-r--r--   1 dp  staff  0 Aug 27 10:01 myfile

έχουμε ένα απλό αρχείο με δικαιώματα αναγνωσης και τροποποίησης από τον ιδιοκτήτη (dp), αναγνωσης από την ομάδα (staff) και αναγνωσης από όλους τους άλλους. Η εντολή:
Κώδικας: Επιλογή όλων
chmod u+x myfile

δίνει στον ιδιοκτητη το δικαίωμα να το εκτελεσει το αρχειο. Φυσικά αν δεν είναι bash script, ή εκτελέσιμο πρόγραμμα ή python script, κτλ. θα βγάλει σφάλμα αν πάμε να το εκτελέσουμε με
Κώδικας: Επιλογή όλων
./myfile

Aλλά υποτίθεται ότι ξέρουμε σε ποια αρχεία δίνουμε το δικαίωμα της εκτέλεσης. Mε ls -l
Κώδικας: Επιλογή όλων
-rwxr--r--   1 dp  staff  0 Aug 27 10:01 myfile*

βλέπουμε στην πρώτη τριαδα το x. Aναλογα με τις ρυθμίσεις του κελύφους bash θα αλλάξει και το χρώμα του myfile (σε μενα βάζει ένα αστεράκι). Η εντολή:
Κώδικας: Επιλογή όλων
chmod u-x myfile

το επαναφέρει στην αρχική του κατάσταση.

Κώδικας: Επιλογή όλων
chmod go+w myfile

θα δώσει δικαιώματα τροποποίησης στην ομάδα staff και σε όλους τους άλλους. Το αποτελεσμα της ls -l θα είναι τότε:
Κώδικας: Επιλογή όλων
-rwxrw-rw-   1 dp  staff  0 Aug 27 10:01 myfile*

στη δεύτερη και την τρίτη στήλη θα υπάρχει και w.

Κώδικας: Επιλογή όλων
chmod o-wr myfile

θα αφαιρέσει το δικαίωμα τροποποιησης και αναγνωσης από όλους όσους δεν ανήκουν στην ομάδα staff.

Υπάρχει και ένας δεύτερος τρόπος περιγραφης των δικαίωματων, κάπως πιο απόκρυφος ο οποίος χρησιμοποιείται και κάπως παραλαγμένος στην umask (Θα φτάσουμε κι εκεί.) Την κάθε τριάδα μπορούμε να την δούμε σαν ένα δυαδικό αριθμό που αποτελείται από bits τα οποία μπορεί να είναι 0 ή 1. Όταν υπάρχει ένα δικαίωμα το αντίστοιχο bit είναι 1, όταν δεν υπάρχει είναι 0. Η τριάδα r-- θα είναι ο αριθμό 100 στο δυαδικό σύστημα, τον οποίο αν το μετατρέψουμε στο δεκαδικό θα είναι ο 1x2**2+0x2**1 +0x2**0 (** σημαίνει ύψωση σε δύναμη) δηλαδή 4. Αντίστοιχα η τριάδα rw- αντιστοιχεί στο δυαδικό αριθμό 110 ή στον δεκαδικό 6. Αν θέλουμε τώρα να δώσουμε τα δικαιώματα rw-r--r-- σε ένα αρχείο θα δίναμε την εντολή:
Κώδικας: Επιλογή όλων
chmod 644 myfile


Άσκηση: Ποιο θα είναι το αποτέλεσμα της εντολής;
Κώδικας: Επιλογή όλων
chmod 755 myfile

Re: Δικαιώματα

ΔημοσίευσηΔημοσιεύτηκε: 27 Αύγ 2008, 11:30
από Dimitris
Ένα σημείο το οποίο χωράει συζήτηση είναι το δικαίωμα ανάγνωσης (r). Όταν κάποιος άλλος χρήστης έχει δικαίωμα ανάγνωσης μόνο, σημαίνει ότι μπορεί να διαβάσει το αρχείο αλλά όχι να το τροποποιήση. Να διαβάσει όμως σημαίνει όχι απλώς να το ανοιξει με έναν editor και να το διαβάσει, αλλά να το αντιγράψει κι όλας, με την εντολή cp για παράδειγμα. Φυσικά το νέο αρχείο θα έχει ως ιδιοκτήτη το νέο χρήστη. Αυτό δημιουργία κάποια ανασφάλεια στους νέους χρήστες, αλλά δυστυχώς ή ευτυχώς έτσι είναι. Δεν είναι ούτε bug ούτε feature. Πολλές μεγάλες δισκογραφικές εταιρίες κάνουν έρευνα ώστε να μπορεί κάποιος να διαβάζει κάτι χωρίς να μπορεί να το αντιγράψει αλλά ανεπιτυχώς θα έλεγα. Οπότε αν θέλετε να μη μπορεί κάποιος να αντιγραψει τα αρχεία σας θα πρέπει να μην τους δώσετε δικαιώματα ανάγνωσης.

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

Αν θέλουμε να αναφερθούμε σε όλους τους χρήστες (u, g και ο) τότε μπορούμε να γράψουμε a (all) δηλαδή
Κώδικας: Επιλογή όλων
chmod a+w myfile

δίνει σε όλους δικαίωμα τροποποίησης.

Ακόμη μία άσκηση: Πώς μπορούμε να δημιουργήσουμε ένα φάκελο που να λειτουργεί σαν γραμματοκιβώτιο όπου όλοι μπορούν να γράψουν ένα αρχειό (να στείλουν ένα γράμμα) αλλά να μόνο ο ιδιοκτήτης να μπορεί να δεί το γραμματοκιβώτιό του. Το γράμμα μπορεί να το καταστρέψει ο αποστολέας; Ο παραλήπτης;

Re: Δικαιώματα

ΔημοσίευσηΔημοσιεύτηκε: 20 Ιαν 2009, 04:33
από alexjm
Μου δημιουργήθηκε ένα πρόβλημα & δεν μπορώ να κάνω write σε κανέναν από τους δίσκους μου (μπορώ μόνο read).
Ας πάρουμε για παράδειγμα τον δίσκο Huge. Βρίσκεται στο /media/Huge. Κάνω τα εξής:

Κώδικας: Επιλογή όλων
alex@alex-desktop:~$ ls -l /media/Huge
total 21
dr-xr-xr-x 1 root root 4096 2009-01-16 16:47 documents
dr-xr-xr-x 1 root root    0 2008-10-25 01:03 e-books
dr-xr-xr-x 1 root root 4096 2008-10-25 01:03 e-magazines
dr-xr-xr-x 1 root root 4096 2009-01-19 04:28 music
dr-xr-xr-x 1 root root 4096 2009-01-19 21:46 photos
dr-xr-xr-x 1 root root    0 2008-12-11 17:54 $RECYCLE.BIN
dr-xr-xr-x 1 root root 4096 2008-12-09 19:34 setup
dr-xr-xr-x 1 root root    0 2008-12-11 17:45 System Volume Information
-r-xr-xr-x 1 root root  238 2008-12-02 03:28 Unsaved Document 1~
alex@alex-desktop:~$ sudo chown -R alex /media/Huge/
alex@alex-desktop:~$ sudo chmod -R 755 /media/Huge
alex@alex-desktop:~$ ls -l /media/Huge
total 21
dr-xr-xr-x 1 root root 4096 2009-01-16 16:47 documents
dr-xr-xr-x 1 root root    0 2008-10-25 01:03 e-books
dr-xr-xr-x 1 root root 4096 2008-10-25 01:03 e-magazines
dr-xr-xr-x 1 root root 4096 2009-01-19 04:28 music
dr-xr-xr-x 1 root root 4096 2009-01-19 21:46 photos
dr-xr-xr-x 1 root root    0 2008-12-11 17:54 $RECYCLE.BIN
dr-xr-xr-x 1 root root 4096 2008-12-09 19:34 setup
dr-xr-xr-x 1 root root    0 2008-12-11 17:45 System Volume Information
-r-xr-xr-x 1 root root  238 2008-12-02 03:28 Unsaved Document 1~
alex@alex-desktop:~$


Που ακριβώς κάνω λάθος? Μετά δηλαδή την εκτέλεση των εντολών, δεν έχω κανένα αποτέλεσμα. Ο δίσκος είναι ntfs.

Re: Δικαιώματα

ΔημοσίευσηΔημοσιεύτηκε: 20 Ιαν 2009, 11:13
από logari81
θα προτεινα να ανοιξεις ενα καινουριο θεμα και να ποσταρεις εκει την ερωτηση σου μαζι με το αποτελεσμα της εντολής
Κώδικας: Επιλογή όλων
cat /etc/fstab