Pourquoi ne puis-je pas supprimer ce fichier en tant que root?

20

J'ai un examen de répertoire avec 2 fichiers. J'ai besoin de supprimer des fichiers mais l'autorisation est refusée. Même la rm -rfcommande ne peut pas supprimer ces fichiers. Je me suis connecté en tant qu'utilisateur root.

entrez la description de l'image ici

Bâtard
la source
13
(1) Veuillez publier le texte du terminal sous forme de texte si possible. Idéalement, copiez-collez-le. Si vous n'avez pas d'autre moyen de capturer le texte que de le transcrire manuellement, faites-le, mais indiquez que vous le faites, et incluez l'image de capture d'écran afin que nous puissions revérifier votre saisie. (2) Lorsque vous avez une question sur les autorisations, veuillez toujours le faire ls -la, afin que nous puissions voir les autorisations sur .(le répertoire).
G-Man dit «Réinstalle Monica»

Réponses:

39

De l'utilisateur root vérifier les attributs des fichiers

# lsattr 

si vous remarquez i(immuable) ou a(ajout uniquement), supprimez ces attributs:

# man chattr
# chattr -i [filename]
# chattr -a [filename]
Invocateur
la source
1
Wow, c'était difficile. Merci d'avoir posté cette solution; J'étais à bout de souffle. J'étais à peu près sûr que c'était en quelque sorte lié à ma synchronisation à l'unisson; il a été laissé dans un état `` inconnu '' (pour de nombreuses raisons), ce qui signifie que les répertoires que je n'ai pas pu supprimer ont été définis (à l'unisson) pour être ajoutés uniquement (cela est typique de l'unisson). Mais je ne savais pas comment afficher / réinitialiser ce mode d'ajout uniquement! Tu as été une bouée de sauvetage; J'espère que l'affiche originale a également résolu son problème.
Gwyneth Llewelyn
Ceci est une bouée de sauvetage.
Luka
16

La raison la plus courante pour se rmplaindre que vous n'êtes pas autorisé à supprimer un fichier est que les autorisations sur le répertoire vous interdisent de supprimer le fichier. Pour supprimer un fichier, vous devez disposer d'une autorisation d'écriture sur le répertoire. Les autorisations sur le fichier ne sont pas pertinentes ( rmsans -finvite de confirmation avant de supprimer un fichier en lecture seule, mais ce n'est qu'une confirmation, pas une limitation). Sur certaines variantes Unix comme OSX (mais pas Linux), l' ACL sur un fichier peut empêcher sa suppression; ls -ls'afficherait @à la fin du champ d'autorisation s'il y avait une entrée ACL dans le fichier.

L'accès en tant que root contourne les autorisations, afin que root puisse supprimer des fichiers même dans un répertoire en lecture seule.

La sortie de ls -laffiche un .à la fin de la colonne d'autorisation. Cela indique que le fichier a un contexte de sécurité SELinux. Contrairement aux autorisations de base et aux ACL, le contexte de sécurité SELinux sur un fichier peut contrôler qui est autorisé à le supprimer. De plus, SELinux ne peut pas toujours être contourné par root (il est possible qu'un processus s'exécute sous l'ID utilisateur 0 mais avec aussi peu de droits que le concepteur de politiques SELinux a choisi). Pour voir ce que le contexte SELinux vous permet de faire, exécutez ls -lZ . exam_a.

Une autre chose qui peut empêcher la suppression d'un fichier est si lui ou le répertoire qui le contient possède l' attribut Linux à ajout uniquement ou immuable . Exécutez lsattr -d . exam_apour afficher les attributs Linux. Si l' attribut aor iest activé, vous devrez le supprimer ( chattr -a -i . exam_a) afin de supprimer le fichier; seule la racine peut le faire. Root ne peut pas contourner ces attributs pour supprimer un fichier, les attributs doivent d'abord être désactivés.

Encore une autre chose qui empêche la suppression d'un fichier est si le système de fichiers est monté en lecture seule, mais vous obtiendrez un message d'erreur différent dans ce cas.

Gilles 'SO- arrête d'être méchant'
la source