2012-04-04 13 views
5

Linux SSHPHP File creato | SSH Impossibile eliminare (permesso negato)

creo un file in PHP utilizzando

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 

Il file ottiene i seguenti autorizzazioni.

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

tuttavia quando si tenta di eliminare il file, con l'account utente regolare (usr111). Ottengo il seguente errore

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

NOTA: Posso eliminare il file sotto la radice.

FIX TROVATO! anche se stavo usando l'impostazione della modalità su mkdir per php. Per qualche ragione questo non funzionava. Ho aggiunto il seguente.

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

     chmod($dir, 0777); 
    } 
+2

quali sono le autorizzazioni sulla directory questo file è in? –

+1

Se accedete con un normale account utente, PHP o piuttosto Apache è il proprietario del file e non sarete in grado di cancellarlo a meno che non abbia le autorizzazioni per farlo. Altrimenti, se hai effettuato l'accesso con root, non dovresti avere problemi. – Francisc

+0

+ MarcB drwxr-xr-x 2 apache apache 4096 apr 4 12:48 session – RichardW11

risposta

2

mkdir sta lavorando bene, ma il secondo argomento non è il permesso è una modalità che verrà utilizzata dal sistema insieme con il vostro attuale umask per calcolare le autorizzazioni per impostare. Da manuale:

La modalità viene anche modificato dalla umask corrente, che è possibile modificare usando umask().

È necessario modificare lo script per impostare le autorizzazioni senza chiamare il filesystem due volte:

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

Grazie per la spiegazione. – RichardW11

Problemi correlati