Perché non posso eliminare questo file come root?


20

Ho un esame di directory con 2 file al suo interno. Devo eliminare i file ma l'autorizzazione è negata. Anche il rm -rfcomando non può cancellare questi file. Ho effettuato l'accesso come utente root.

inserisci qui la descrizione dell'immagine


13
(1) Si prega di inviare il testo dal Terminale come testo, se possibile. Idealmente, copialo e incollalo. Se non hai modo di catturare il testo se non di trascriverlo manualmente, fallo, ma rivela che lo stai facendo e includi l'immagine di cattura dello schermo in modo da poter ricontrollare la tua digitazione. (2) Quando hai una domanda sulle autorizzazioni, per favore , fallo semprels -la , così possiamo vedere le autorizzazioni su .(la directory).
G-Man dice "Ripristina Monica"

Risposte:


39

Dall'utente root controllare gli attributi dei file

# lsattr 

se noti i(immutabile) o a(solo accodamento), rimuovi questi attributi:

# man chattr
# chattr -i [filename]
# chattr -a [filename]

1
Wow, è stato difficile. Grazie per aver pubblicato questa soluzione; Ero alla fine del mio ingegno. Ero abbastanza sicuro che questo fosse in qualche modo legato alla mia sincronizzazione all'unisono; è stato lasciato in uno stato "sconosciuto" (per molte ragioni), e questo significava che quelle directory che non potevo cancellare erano impostate (all'unisono) come solo append (questo è tipico dell'unisono). Ma non avevo idea di come visualizzare / ripristinare quella modalità di sola aggiunta! Eri un salvavita; Spero che anche il poster originale abbia risolto il problema.
Gwyneth Llewelyn,

Questo è un salvavita.
Luka,

16

Il motivo più comune per rmlamentarsi del fatto che non si dispone dell'autorizzazione per eliminare un file è che le autorizzazioni sulla directory vietano di eliminare il file. Per eliminare un file, è necessario il permesso di scrittura nella directory. Le autorizzazioni sul file sono irrilevanti ( rmsenza -frichieste di conferma prima di eliminare un file di sola lettura, ma questa è solo una conferma, non una limitazione). Su alcune varianti Unix come OSX (ma non Linux), l' ACL su un file può impedirne l'eliminazione; ls -lmostrerebbe @alla fine del campo di autorizzazione se c'era una voce ACL sul file.

L'accesso come root ignora le autorizzazioni, quindi root può eliminare i file anche in una directory di sola lettura.

L'output di ls -lmostra .a alla fine della colonna di autorizzazione. Questo indica che il file ha un contesto di sicurezza SELinux. A differenza dei permessi di base e ACL, il contesto di sicurezza SELinux su un file può controllare chi è autorizzato a cancellarlo. Inoltre SELinux non può sempre essere escluso dal root (è possibile avere un processo in esecuzione come ID utente 0 ma con il minor numero di diritti scelto dal policy designer di SELinux). Per vedere cosa ti permette di fare il contesto SELinux, esegui ls -lZ . exam_a.

Un'altra cosa che può impedire l'eliminazione di un file è se esso o la directory che lo contiene hanno l' attributo Linux solo accodamento o immutabile . Esegui lsattr -d . exam_aper visualizzare gli attributi di Linux. Se l' attributo ao iè attivo, dovrai rimuoverlo ( chattr -a -i . exam_a) per eliminare il file; solo root può farlo. La radice non può ignorare questi attributi per eliminare un file, gli attributi devono prima essere disattivati.

Ancora un'altra cosa che impedisce l'eliminazione di un file è se il filesystem è montato in sola lettura, ma in tal caso si otterrebbe un messaggio di errore diverso.

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.