Lykos22 Δημοσ. 15 Οκτωβρίου 2015 Δημοσ. 15 Οκτωβρίου 2015 (επεξεργασμένο) Θέλω λίγο τη βοήθεια ενός έμπειρου Λινουξά, να μου εξηγήσει τι ακριβώς συμβαίνει γιατί έχω μπερδευτεί. Έχω εγκαταστήσει σε Ubuntu 14.04 το xampp και έχω ένα απλό index.php αρχείο που κάνω τις παρακάτω δοκιμές. Στην index.php έχω την εξής ενολή: <?php mkdir('dir' , 755, true); Όταν κάνω refresh στον browser βλέπω το εξής μήνυμα: Warning: mkdir(): Permission denied in /opt/lampp/htdocs/projects/test/index.php on line 3 Από command line κάνω τα εξής βήματα: 1. ls -lah drwxr-xr-x 2 lykos lykos 4,0K Οκτ 15 19:55 test 2. chmod 777 test 3. ls -lah drwxrwxrwx 2 lykos lykos 4,0K Οκτ 15 19:55 test Αν τώρα κάνω πάλι refresh στον browser, ο φάκελος "dir" δημιουργήται.. Τώρα, κάνω τα εξής βήματα: 1. cd test 2. ls -lah Έχω το εξής: d-wxr----t 2 daemon daemon 4,0K Οκτ 15 20:11 dir -rw-r--r-- 1 lykos lykos 144 Οκτ 15 20:07 index.php Επομένως αν θ'ελω να διαγρ'αψω τον φάκελο θα πρέπει πρώτα να κάνω τα εξής βήματα: sudo chown lykos:lykos dir chmod 777 dir και μετά να διαγράψω τον φάκελο. Επίσης, αν εκτελέσω την εντολή whoami από command line το αποτέλεσμα είναι lykos, ενω αν την εκτελέσω από το index.php echo exec('whoami'); παίρνω αποτέλεσμα daemon. Οι ερωτήσεις μου είναι οι εξής λοιπόν: 1. γιατί ο φάκελος δημιουργήται μόνο όταν τα δικαιώματα είναι 777 και όχι 755 που ήταν αρχικά (ή 775 που επίσης δοκίμασα) ? 2. γιατί ο φάκελος έχει χρήστη - γκρουπ daemon και όχι lykos ? Επεξ/σία 16 Οκτωβρίου 2015 από Lykos22
loic Δημοσ. 16 Οκτωβρίου 2015 Δημοσ. 16 Οκτωβρίου 2015 Οσον αφορα την δευτερη απορια σου, στο config αρχειο του Apache το οποιο παραδοσιακα ονομαζεται httpd.conf και παντα βρισκεται σε φακελο κατω απο το /etc , υπαρχουν δυο γραμμες οι οποιες οριζουν τον χρηστη/γκρουπ που τρεχει ο apache, π.χ User daemon Group daemon Οποτε ο apache σου, τρεχει με δικαιωματα daemon. Καλο ειναι να μην την πειραξεις αυτη τη ρυθμιση. Την πρωτη φορα λοιπον που παει να τρεξει το script, βλεπει να απαγορευεται το write για τους "group" και τους "others", οποτε και δεν μπορει να εκτελεσει την εντολη για 755. Αλλαζοντας μετα τα δικαιωματα του φακελου σε 777, μπορει και τρεχει κανονικα. Για τα δικαιωματα, περιμενε μηπως απαντησει καποιος πιο εμπειρος, εγω θα προτεινα προς το παρον να παιξεις με χρηστη τον daemon (chown και chgrp). Το θεμα ειναι οτι αν ετρεχε σωστα η εντολη (755), θα επρεπε ο φακελος που δημιουργειται, να ειναι ετσι: drwxr-xr-x Ομως ειναι ετσι: d-wxr----t , αλλα 'ντ' αλλων δηλαδη και με sticky bit στο τελος. Εκανα καποιες δοκιμες, ο κωδικας αυτος φαινεται να ειναι προβληματικος. Θα σου ελεγα να χρησιμοποιησεις εναλλακτικα την exec(), σε μενα παιζει ΟΚ. <?php echo exec('mkdir dir'); ?> Απλα ψαξε αν μπορεις να περασεις σαν παραμετρο τα δικαιωματα, αυτο δεν το κοιταξα. Οποτε κανε δοκιμη και βλεπουμε... EDIT: Φαινεται οτι και ο αρχκος κωδικας δουλευει αν δεν εχει τις παραμετρους, δηλαδη αν ειναι ετσι: <?php mkdir ('dir'); ?> Οποτε, ειναι θεμα των ορισματων/παραμετρων...
Lykos22 Δημοσ. 16 Οκτωβρίου 2015 Μέλος Δημοσ. 16 Οκτωβρίου 2015 Οποτε, ειναι θεμα των ορισματων/παραμετρων... Έχεις δίκιο σε αυτό το τελευταίο, το σωστό είναι <?php mkdir('dir', 0755, true); // echo exec('whoami'); // ιδού και το αποτέλεσμα drwxr-xr-x 2 daemon daemon 4,0K Οκτ 15 23:09 dir -rw-r--r-- 1 lykos lykos 168 Οκτ 15 23:09 index.php Το θέμα μου έχει να κάνει γενικότερα επειδή δουλεύω πάνω σε ένα membership τύπου site, όπου κάθε χρήστης μπορεί να δημιουργεί αλμπουμ και να κάνει upload εικόνες. Επομένως αυτές οι εικόνες θα αποθηκεύονται σε φακέλους οι οποίοι δημιουργούνται δυναμικά με ένα τέτοιο σκριπτάκι. Επομένως σε αυτή την περίπτωση είναι καλό να ακολουθήσω τη συμβουλή που μου είπες Οποτε ο apache σου, τρεχει με δικαιωματα daemon. Καλο ειναι να μην την πειραξεις αυτη τη ρυθμιση. και να έχω τις default επιλογές ή (θα πρέπει) να κάνω κάποια διαφορετική ρύθμιση ?
loic Δημοσ. 16 Οκτωβρίου 2015 Δημοσ. 16 Οκτωβρίου 2015 Επειδη ειναι πολυπλοκο το θεμα, δεν ειναι δηλαδη ενα "αιντε, αφηνουμε τα παντα στον apache και τελος", και επειδη φανταζομαι ο καθε χρηστης θα πρεπει να εχει δικα του permissions ωστε να μπορει να ανεβαζει/διαγραφει κλπ... θα σου προτεινα να ανοιξεις θεμα στο Web Design - Development. Υπαρχει μεγαλυτερη πιθανοτητα να παρεις απαντηση που να σε βοηθαει πραγματικα... Παντως το αποκλειω να σου πει καποιος να αλλαξεις τα permissions με τα οποια τρεχει ο apache. Ειναι απο default ρυθμιση ασφαλειας το να τρεχει ετσι...
Προτεινόμενες αναρτήσεις
Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε
Πρέπει να είστε μέλος για να αφήσετε σχόλιο
Δημιουργία λογαριασμού
Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!
Δημιουργία νέου λογαριασμούΣύνδεση
Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.
Συνδεθείτε τώρα