Le système de fichiers Linux semble avoir des couches et des couches de subtilité sur lesquelles je tombe au cas par cas :
Je souhaite modifier ce fichier :
[[email protected] ~]$ ls -l /a/b/c/foo.bar
-rw-rwxr-x 1 user user 144529 Jan 26 2018 /a/b/c/foo.bar
Il semble qu'il devrait être accessible en écriture par l'utilisateur user
- vrai? Mais lorsque j'essaie de modifier le fichier dans vim, j'obtiens un "W10: Warning: Changing a readonly file
” avertissement.
Je sais que l'inscriptibilité du fichier dépend des autorisations de son dossier contenant. Je pense que le dossier contenant doit avoir l'autorisation d'exécution - vrai ? Je suppose que l'autorisation de répertoire requise s'étend également jusqu'à /
– vrai ?
Il me semble que l'arborescence de dossiers contenant le fichier noté a des autorisations d'exécution :
[[email protected] ~]$ ls -ld /a/b/c/
drwxrwxrwx 2 user user 36864 Mar 5 17:50 /a/b/c/
[[email protected] ~]$ ls -ld /a/b/
drwxrwxr-x 4 user user 4096 Sep 22 2017 /a/b/
[[email protected] ~]$ ls -ld /a/
drwxrwxr-x 9 user user 4096 Sep 15 2017 /a/
[[email protected] ~]$ ls -ld /
drwxr-xr-x 24 root root 0 Aug 24 10:48 /
[[email protected] ~]$ whoami
user
Pour autant que je sache d'après ce qui précède, chaque répertoire de l'arborescence concernée dispose d'autorisations d'exécution. Au début, je me demandais si cela avait à voir avec /
appartenant à root
, mais il dispose d'une autorisation d'exécution pour "autres". De plus, s'il y avait des problèmes liés à /
appartenant à root
, j'imagine que j'aurais du mal à écrire des fichiers n'importe où sur le système de fichiers en tant qu'utilisateur autre que root
, mais ce n'est pas le cas.
Quelqu'un peut-il penser à/identifier d'autres raisons pour lesquelles le fichier noté est considéré comme en lecture seule ?
Réponse acceptée :
Premier – vous êtes avec un ensemble d'indicateurs immuables
chattr -i yourfilename
Si l'indicateur immuable est défini, vous ne pouvez pas modifier le fichier. N'oubliez pas que les autorisations n'ont pas remplacé ce comportement !
Deuxièmement, vérifier si le répertoire où se trouve le fichier est monté sur un autre disque ou une autre partition , en lecture seule, pour cela il suffit de taper :
mount
(sans arguments)
Si vous voyez quelque chose comme votre répertoire monté en lecture seule, il y a la raison ! Remontez-le en lecture-écriture pour avoir de la chance !
Troisième - et le plus courant , vous exécutez simplement un système de fichiers avec des erreurs , pour corriger cela, vous devez sauvegarder ce que vous pouvez, redémarrer, puis vous connecter en mode simple et exécuter :
mount #To determine how the partition is mounted
mount -o remount,ro /dev/sd(yourpartition) directory
fsck.ext4 /dev/sd(yourpartition)
(ext4 doit peut-être être changé pour votre type de partition)
Bonne chance !
En relation :Obtenir l'heure de l'utilisateur et du noyau d'un processus en cours d'exécution ?