Μαζική αλλαγή δικαιωμάτων στο τερματικό
Στο παρόν σημείωμα θα αναφερθώ σε μερικά μικρά κόλπα στο τερματικό για αλλαγή των δικαιωμάτων σε αρχεία και φακέλους.
Πρώτα διαβάστε αν δεν το κάνατε ακόμα τα παρακάτω:
Για την εντολή find
Για το τι είναι το umask
Καθώς και τους άλλους οδηγούς και σημειώματα στο tag permissions (κάντε κλικ). Οι πληροφορίες στα παραπάνω είναι πολλές, μην επιμείνετε στις λεπτομέρειές στην πρώτη ανάγνωση, αλλά τουλάχιστον κρατήστε τις βασικές ιδέες.
Τα περισσότερα, αλλά όχι άλλα μπορούν να γίνουν και με γραφικό περιβάλλον, αλλά κάποιες φορές το τερματικό βολεύει καλύτερα. Για παράδειγμα, σε Gnome
Μαζική αλλαγή αρχείων και καταλόγων
Το κόλπο εδώ είναι να συνδυάσουμε τις εντολές find
και chmod
. Για ένα φάκελο ο αριθμός 755
που αντιστοιχεί στο umask
022
είναι ένας καλός αριθμός. Για να αλλάξουμε τα δικαιώματα ενός φακέλου <folder>
αλλά και όλων των φακέλλων που περιέχει θα δώσουμε την εντολή
find <folder> -type d -exec chmod 0755 {} \;
εναλλακτικά πάμε στον συγκεκριμένο φάκελο με την εντολή cd <folder>
και δίνουμε την εντολή
find . -type d -exec chmod 0755 {} \;
Μερικές σημειώσεις: To .
είναι ο τρέχων φάκελος (ή κατάλογος ή directory δε θα τα χαλάσουμε στο όνομα). Με την παράμετρο -type d
περιορίζουμε την εντολή chmod
μόνο σε directory (εεε φακέλους ήθελα να πω). Με παρόμοιο τρόπο μπορούμε να χρησιμοποιήσουμε άλλα κριτήρια. Για παράδειγμα, μπορεί να θέλουμε να κλειδώσουμε για να μη σβήσουμε κατά λάθος όλους τους φακέλους των προηγούμενων μηνών (πως; μπορείτε να γράψετε την εντολή σαν σχόλιο;).
Μια καλύτερη λύση για το τελευταίο θα ήταν η εντολή
chattr
, δείτε το σχετικό άρθρο.
Οπότε αν θέλουμε μόνο τα αρχεία και όχι τους καταλόγους; Ευκολο -type f
. Και για το ίδιο umask
ο αριθμός θα είναι 0644
(γιατί;). Και η εντολή:
find . -type f -exec chmod 0644 {} \;
Μεταφορά δικαιωμάτων
Μακάρι να το γνώριζα ( chmod(1)) αυτό χρόνια πριν. Το ανακάλυψα σήμερα εδώ. Μπορείς να πάρεις τα δικαιώματα που έχει ένα αρχείο και να βάλεις τα δικαιώματα σε ένα δεύτερο! H εντολή είναι:
chmod --reference=file1 file2
And this is a good place to stop.