Προς το περιεχόμενο

Permission settings σε Ubuntu


Lykos22

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Θέλω λίγο τη βοήθεια ενός έμπειρου Λινουξά, να μου εξηγήσει τι ακριβώς συμβαίνει γιατί έχω μπερδευτεί.

 

Έχω εγκαταστήσει σε 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 ?

Επεξ/σία από Lykos22
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Οσον αφορα την δευτερη απορια σου, στο 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');
?>

Οποτε, ειναι θεμα των ορισματων/παραμετρων...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Οποτε, ειναι θεμα των ορισματων/παραμετρων...

 

Έχεις δίκιο σε αυτό το τελευταίο, το σωστό είναι

<?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 επιλογές ή (θα πρέπει) να κάνω κάποια διαφορετική ρύθμιση ?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Επειδη ειναι πολυπλοκο το θεμα, δεν ειναι δηλαδη ενα "αιντε, αφηνουμε τα παντα στον apache και τελος", και επειδη φανταζομαι ο καθε χρηστης θα πρεπει να εχει δικα του permissions ωστε να μπορει να ανεβαζει/διαγραφει κλπ... θα σου προτεινα να ανοιξεις θεμα στο Web Design - Development.

 

Υπαρχει μεγαλυτερη πιθανοτητα να παρεις απαντηση που να σε βοηθαει πραγματικα...

 

Παντως το αποκλειω να σου πει καποιος να αλλαξεις τα permissions με τα οποια τρεχει ο apache.

Ειναι απο default ρυθμιση ασφαλειας το να τρεχει ετσι...  :-)

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...