Linux: impossibile rimuovere il file di proprietà con autorizzazioni 777


29

Ho un paio di file che non posso rimuovere usando il rf -Rfcomando. Sono il proprietario di quei file e il gruppo assegnato a quei file è anche un gruppo nel mio utente. Ciò che è ancora più strano è che posso modificare il loro contenuto e posso cambiare le autorizzazioni per loro, ma non posso spostare o cancellali.

ls -al
total 12
dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .
drwxr-xr-x 3 rayell pg1083760 4096 2011-09-02 04:33 ..
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 default.settings.php
drwxrwxrwx 2 rayell pg1083760 4096 2011-09-02 04:33 files
-rwxrwxrwx 1 rayell pg1083760    0 2011-09-02 06:38 settings.php


rm -Rf *
rm: cannot remove `default.settings.php': Permission denied
rm: cannot remove directory `files': Permission denied
rm: cannot remove `settings.php': Permission denied

Qualcuno può dirmi cosa sta succedendo?


5
In generale, considera l'utilizzo di rm -rf DIRECTORY_NAME e non "*". Ti salverà da quella volta in cui ti penserai nella directory / some / where / safe ma invece in / home
Sardathrion - Reinstate Monica

In realtà l'ho provato, erano solo quei 3 file che non potevo rimuovere, quindi ho semplificato un po 'la procedura per lo scopo di questo post.
RaYell,

Non dimenticare il comando lsattr e chattr ...

Risposte:


61

Per rimuovere un file è necessario il permesso di scrittura sulla directory che contiene ¹ questo file.

Qui le autorizzazioni sono dr-xr-xr-x 3 rayell pg1083760 4096 2010-10-10 10:00 .Quindi nessuno (tranne root) può rimuovere i file all'interno di questa directory. Il proprietario deve utilizzare chmodprima.

-
1. Ci sono buone ragioni per questo. "Rimuovendo" un file con rm, si sta effettivamente cercando di scollegarlo dalla directory (le copie hardlink non verranno eliminate).


1

Ho avuto lo stesso problema e chmodda solo non ho fatto il trucco. Per prima cosa ho dovuto cambiare il proprietario (utente e gruppo) dei file che volevo rimuovere.

sudo chown -hR root:admin dir_to_delete

Spiegazione:

  • sudo: assicurati di avere i diritti adeguati
  • chown: Comando Linux per modificare il proprietario di un file
  • -hR: cambia proprietario della directory e di tutte le sottodirectory. L'ho trovato qui .
  • root: nome del nuovo utente
  • admin: nome del nuovo gruppo

Avevo già cambiato i modificatori a 777; Non so se fosse necessario o no.


Le autorizzazioni per i file all'interno della directory sono irrilevanti, conta solo l'autorizzazione in scrittura sulla directory stessa. Probabilmente prima non chowneri né proprietario della directory né membro del gruppo proprietario della directory.
sgnsajgon,

1

Un'altra possibile domanda è l'attributo

lsattr file

Questo comando ti mostrerà l'attributo del file e un file con l'attributo 'i' non può essere modificato (ed essere eliminato)

quindi controlla l'attributo del tuo file e rimuovi l'attributo 'i' se l'attributo è stato impostato

chattr -i file

2
La domanda mostra che sono le autorizzazioni di directory che non consentono la scrittura. Non c'è bisogno di guardare oltre.
Toby Speight,

0

Il motivo è che la directory principale ha chmod 705o qualcosa del genere. È possibile chmodla directory padre con il comando seguente:

chmod -R 777 directory_name

Successivamente, è possibile rimuovere quella directory e i file in essa contenuti.


4
Per favore, non perdonare di rendere le directory scrivibili da tutti . Non è un buon consiglio.
Toby Speight,

+1 - Accetto, non seguire questo consiglio, è incredibile, come questo è intonacato su Internet ... La quantità di insicurezza, causata da persone che la sostengono è incredibile ...
André Figueira,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.