2012-04-04 10 views
5

लिनक्स SSHPHP बनाया गया फ़ाइल | SSH (से इनकार अनुमति)

हटाया नहीं जा सकता मैं फ़ाइल निम्न अनुमतियों हो जाता है

if (!is_dir(DIR_FILE)) 
    mkdir(DIR_FILE, 0777); 

$filename = DIR_FILE . $id . '.txt'; 

$handle_cf = fopen($filename, 'a'); 
fwrite($handle_cf, $data . "\n"); 
fclose($handle_cf); 

chmod($filename, 0777); 

chown($filename, "usr111"); // usr111 = username 
chgrp($filename, "usr111"); // usr111 = group that is also attached to apache 

का उपयोग कर php में एक फ़ाइल बनाएँ।

-rwxrwxrwx 1 apache  apache  1447 Apr 4 12:48 D.txt 
-rwxrwxrwx 1 apache  apache  1447 Apr 4 12:48 E.txt 

हालांकि जब मैं नियमित उपयोगकर्ता खाते (usr111) के तहत फ़ाइल को हटाने का प्रयास करता हूं। मुझे निम्न त्रुटि

[[email protected] session]$ rm D.txt 
rm: cannot remove `D.txt': Permission denied 

नोट: मैं रूट के तहत फ़ाइल को हटा सकता हूं।

फ़िक्स फाउंड! भले ही मैं php के लिए mkdir पर मोड सेटिंग का उपयोग कर रहा था। किसी कारण से यह काम नहीं कर रहा था। मैंने निम्नलिखित जोड़ा।

if (!is_dir($dir)) { 
     mkdir($dir, 0777); 

     chmod($dir, 0777); 
    } 
+2

निर्देशिका इस फ़ाइल में है पर अनुमतियों को क्या कर रहे हैं? –

+1

यदि आप नियमित उपयोगकर्ता खाते से लॉग इन कर रहे हैं, तो PHP या इसके बजाय अपाचे फ़ाइल स्वामी है और आप इसे तब तक हटाने में सक्षम नहीं होंगे जब तक कि इसे सभी को ऐसा करने की अनुमति न हो। अन्यथा, यदि आप रूट के साथ लॉग इन हैं, तो आपको कोई समस्या नहीं होनी चाहिए। – Francisc

+0

+ मार्कसी drwxr-xr-x 2 apache apache 4096 अप्रैल 4 12:48 सत्र – RichardW11

उत्तर

2

mkdir अच्छी तरह से काम कर रहा है लेकिन दूसरा तर्क अनुमति यह एक विधा है कि अपने वर्तमान umask साथ मिलकर प्रणाली द्वारा उपयोग किया जाएगा अनुमतियों की गणना करने के लिए सेट करने के लिए नहीं है। मैनुअल से:

मोड भी वर्तमान umask, जो आप umask का उपयोग कर बदल सकते हैं द्वारा संशोधित किया गया है()।

आप फाइल सिस्टम दो बार फोन कर के बिना अनुमति सेट करने के लिए अपनी स्क्रिप्ट को बदलने की जरूरत:

$oldUmask = umask(0); // disable umask 
mkdir($path, 0777); 
umask($oldUmask); // reset the umask 
+0

धन्यवाद। – RichardW11

संबंधित मुद्दे