2011-11-17 20 views
46
[email protected]$ whoami 
    max 
    [email protected]$ ls -la ./defines.php 
    -rwxrwxrwx 1 max max 1985 2011-11-16 02:01 ./defines.php 
    [email protected]$ chmod 0777 ./defines.php 
    [email protected]$ rm ./defines.php 
    rm: cannot remove `./defines.php': Permission denied 
    [email protected]$ 

Come posso cancellare questo file?rm: impossibile rimuovere: Autorizzazione negata

+0

Il file si trova nella stessa directory in cui viene eseguito il comando? allora dovrebbe essere solo 'rm define.php'. perché stai pre-pendendo il '. /'? –

+0

Altra cosa: dovrebbe essere 'chmod 777' –

+1

Non fa differenza. 'file' e'./file' sono equivalenti. – Femaref

risposta

123

Il codice dice tutto:

[email protected]$ chmod 777 . 

Va bene, non dice tutto.

In UNIX e Linux, la possibilità di rimuovere un file è non determinata dai bit di accesso di tale file. È determinato dai bit di accesso della directory che contiene il file.

Pensateci in questo modo: l'eliminazione di un file non modifica quel file. Non stai scrivendo sul file, quindi perché "w" sul file importa? L'eliminazione di un file richiede la modifica della directory che punta al file, quindi è necessario "w" sulla directory.

+2

OMG! Questa risposta mi ha dato la soluzione ad un altro problema, questa stessa logica si applica alla lettura dei file, non solo alla cancellazione. –

Problemi correlati