CHMOD => inode/x-corrupted Le sujet est résolu

Demande d'aide : c'est ici.
Répondre
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Bonjour,

J'effectue des tests de CMS sur un serveur virtuel VBox (Debian-stable/Apache2)

Je procède pour ces essais de la même façon que je le ferais pour une installation réellement mise en ligne.
Cela passe par une réduction des permissions sur les fichiers des sites afin de limiter au maximum les risques de malveillance.

Il se trouve que lors de mes derniers tests,
la commande CHMOD produit un effet inattendu qui corrompt les fichiers.

Les fichiers peuvent encore être ouverts, mais ils sont vides dans un éditeur de texte,
et
le gestionnaire (PCManFM) affiche un type : inode/x-corrupted

Sur le même serveur,
j'ai reproduit le phénomène sur 1 répertoire contenant 2 fichiers,
comme suit :

Code : Tout sélectionner

toto@debwebserv1:~$ mkdir test-inod

toto@debwebserv1:~$ vi ./test-inod/file1
toto@debwebserv1:~$ vi ./test-inod/file2

toto@debwebserv1:~$ vdir test-inod
total 8
-rw-r--r-- 1 toto toto 7 juil. 27 17:56 file1
-rw-r--r-- 1 toto toto 7 juil. 27 17:56 file2

toto@debwebserv1:~$ chmod -R 660 test-inod
chmod: impossible d'accéder à 'test-inod/file1': Permission non accordée
chmod: impossible d'accéder à 'test-inod/file2': Permission non accordée

Ici 1ère anomalie (je crois) :
l'utilisateur (toto) qui vient de créer des fichiers dans son répertoire utilisateur,
ne peut en modifier les permissions !

Ensuite :

Code : Tout sélectionner

toto@debwebserv1:~$ sudo chmod -R 660 test-inod
produit :

Code : Tout sélectionner

toto@debwebserv1:~$ vdir test-inod
vdir: impossible d'accéder à 'test-inod/file1': Permission non accordée
vdir: impossible d'accéder à 'test-inod/file2': Permission non accordée
total 0
-????????? ? ? ? ?              ? file1
-????????? ? ? ? ?              ? file2
mais :

Code : Tout sélectionner

toto@debwebserv1:~$ sudo vdir test-inod
total 8
-rw-rw---- 1 toto toto 7 juil. 27 17:56 file1
-rw-rw---- 1 toto toto 7 juil. 27 17:56 file2

Voici le partitionnement :

Code : Tout sélectionner

toto@debwebserv1:~$ sudo parted /dev/sda print
[sudo] Mot de passe de toto : 
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sda: 8590MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags: 

Number  Start   End     Size    Type      File system     Flags
 1      1049kB  7516MB  7515MB  primary   ext4            boot
 2      7517MB  8589MB  1072MB  extended
 5      7517MB  8589MB  1072MB  logical   linux-swap(v1)

et le résultat du contrôle de la partition système,
faite dans une session Live de RescueCD

Code : Tout sélectionner

[root@sysresccd ~]# e2fsck  -C 0 -fv -cc /dev/sda1
e2fsck 1.45.0 (6-Mar-2019)
Checking for bad blocks (non-destructive read-write test)
Testing with random pattern: done                                                 
/dev/sda1: Updating bad block inode.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure                                           
Pass 3: Checking directory connectivity                                        
Pass 4: Checking reference counts
Pass 5: Checking group summary information
                                                                               
/dev/sda1: ***** FILE SYSTEM WAS MODIFIED *****

      247870 inodes used (54.03%, out of 458752)
         244 non-contiguous files (0.1%)
         384 non-contiguous directories (0.2%)
             # of inodes with ind/dind/tind blocks: 0/0/0
             Extent depth histogram: 192609/71
     1352810 blocks used (73.73%, out of 1834752)
           0 bad blocks
           1 large file

      172802 regular files
       19679 directories
           7 character device files
           0 block device files
           0 fifos
          27 links
       55373 symbolic links (55175 fast symbolic links)
           0 sockets
------------
      247888 files
Apparemment, le système de fichier n'a rien,
il porte pourtant des inodes corrompus selon PCManFM


Dernier point,

l'accès à ces fichiers/répertoire est interdit au propriétaire (toto) en ligne de commande :

Code : Tout sélectionner

toto@debwebserv1:~$ cd test-inod
bash: cd: test-inod: Permission non accordée

toto@debwebserv1:~$ ls test-inod
ls: impossible d'accéder à 'test-inod/file1': Permission non accordée
ls: impossible d'accéder à 'test-inod/file2': Permission non accordée
file1  file2
mais ls renvoie tout de même sa sortie

alors que dans la même session de toto,
il est possible d'accéder au contenu du répertoire avec PCManFM
et
qu'il est même possible, toujours via PCManFM,
de modifier récursivement les droits sur le répertoire de test
et de récupérer les fichiers avec leur contenu, par la même occasion.


----------------------------------------------------------------

Voilà,
j'aimerais bien comprendre ce qui se passe,
sachant qu'avant de connaître ce problème,
j'avais effectué d'autres modifications de permissions sur d'autres fichiers/répertoires du même système de fichiers et sans histoires.

Merci pour votre aide.

Question annexe : Peut-on réparer CHMOD ou ... BASH ?
**Simple Utilisateur** -- Debian stable - XFCE
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

Bonjour

dezix a écrit :

Code : Tout sélectionner

chmod -R 660 test-inod
Regarde maintenant les attributs du répertoire test-inod
en lançant la commande suivante :

Code : Tout sélectionner

ls -ld test-inod
ses attributs sont :

Code : Tout sélectionner

drw-rw----

Or, sans l'attribut x (<=> exécutable) du répertoire test-inod
l'accès à ce répertoire est interdit.

Pour que le propriétaire de ce répertoire puisse y accéder,
il faudra d'abord lui mettre l'attribut x
en lançant la ligne de commande suivante :

Code : Tout sélectionner

chmod u+x test-inod
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

@MicP
Salut !

Je comprends que "x" sur les répertoires donne accès au contenu,
mais je devrais alors avoir un refus d'accès,
alors que j'ai des ????? ou inode/x-corrupted

Si Je rajoute "x" effectivement tout rentre dans l'ordre.

Je vais tout mettre en rwx pour u


~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Une question annexe :

Je n'ai pas trouvé dans le man de chmod une option pour n'affecter que les (sous)répertoires

pour par exemple ne mettre le x que sur les sous-répertoires avec -R
et conserver les fichiers sans x

C'est possible ?
**Simple Utilisateur** -- Debian stable - XFCE
MicP
Modérateur
Modérateur
Messages : 896
Inscription : 16 avr. 2016, 22:14
Status : Hors-ligne

…n'affecter que les (sous)répertoires…

En faisant parcourir par la commande find
toute l'arborescence contenue dans le répertoire /home/toto/test-inod/
et en spécifiant (avec -type d) de ne traiter que les noms de répertoire trouvés.

ce qui donnerait :

Code : Tout sélectionner

find /home/toto/test-inod/ -type d -execdir chmod u+x {} \;
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

Merci,

je n'y avais pas pensé...

C'est SUPER ! :023:
**Simple Utilisateur** -- Debian stable - XFCE
PascalHambourg
Contributeur
Contributeur
Messages : 930
Inscription : 05 août 2016, 20:25
Status : Hors-ligne

dezix a écrit : 28 juil. 2019, 11:11 Je comprends que "x" sur les répertoires donne accès au contenu,
mais je devrais alors avoir un refus d'accès,
alors que j'ai des ?????
Petite explication :
La permission en lecture (r) d'un répertoire ne contrôle que le listage de ses entrées (les noms des objets). C'est la permission en exécution (x) qui contrôle l'accès à ces objets (inodes) et à leurs méta-données (propriétaires, permissions, dates, taille...).

Avec "r" seul, on peut lister le contenu du répertoire mais pas accéder aux objets, d'où les ???. Avec "x" seul, on ne peut pas lister le contenu du répertoire mais on peut accéder aux objets si on connaît leur nom.
Avatar de l’utilisateur
dezix
Membre hyper actif
Membre hyper actif
Messages : 3548
Inscription : 04 juin 2016, 14:50
Status : Hors-ligne

@PascalHambourg

merci pour cet éclaircissement,
.... ça devient effectivement plus clair !

:006:
**Simple Utilisateur** -- Debian stable - XFCE
Répondre