8 votes

Pourquoi chmod 644 rend-il les répertoires inaccessibles ?

J'ai un tas de fichiers multimédia (qui n'ont besoin que d'être 644) qui étaient un mélange de diverses permissions. Certains étaient accessibles en écriture par le groupe ou par le global, alors j'ai pensé, juste pour être sûr, que je devais leur redonner le chmod 644.

Le problème est qu'il y a une hiérarchie de répertoires et que pour tous les répertoires qui ont été pris dans cette opération ls -l les affiche comme :

d????????? ? ? ? ?            ? Dirname

Si je mets le chmod à 744, c'est réparé.

Ma question est la suivante : Qu'est-ce qui se passe ici ? Les répertoires doivent-ils être exécutables ?

7voto

Comme indiqué dans la page de manuel de chmod par rapport aux permissions :

Les lettres rwxXst sélectionnent les bits de mode de fichier pour les utilisateurs concernés : read (r), écriture (w), exécution (ou recherche dans les répertoires) (x), exécution/recherche uniquement si le fichier est un répertoire ou si un utilisateur a déjà le droit d'exécuter (X). pour un utilisateur donné (X)

Le bit exécutable d'un dossier est expliqué ci-dessus comme une autorisation de "recherche" ; c'est-à-dire que le bit execute vous permet simplement d'accéder au dossier dans un navigateur de fichiers ou de vous déplacer vers le dossier à partir du terminal en exécutant la commande cd ou en exécutant la commande ls ~/folder pour lister les fichiers du dossier.

Le dossier doit être exécutable pour le propriétaire bien que le super-utilisateur puisse toujours accéder au dossier comme s'il utilisait l'option sudo tout fichier ou répertoire peut être consulté ou supprimé. En outre, les autorisations relatives aux répertoires et aux fichiers sont expliquées plus en détail dans la section cet article utile sur Stackoverflow .

Il est également important de noter que "l'exécution" du dossier ne signifie pas que vous exécutez réellement un code ou des commandes comme lorsqu'un binaire exécutable ou un script est exécuté.

Pour un utilisateur de bureau à domicile (mais peut-être pas pour votre serveur), la plupart des dossiers de l'application $HOME ont l'autorisation d'exécuter pour l'utilisateur, le groupe et autre s'ils sont visualisés avec l'option stat ~/myfolder (extrait ci-dessous) :

Access: (0755/drwxr-xr-x)  Uid: ( 1000/    mike)   Gid: ( 1000/    mike)

Les permissions standard pour les dossiers sur $HOME sont 755 ou 775 et pour les fichiers ils sont 644. Cependant, le reste du système de fichiers sera différent. Encore une fois, les dossiers doivent avoir le bit execute pour le propriétaire ou ils ne pourront pas être ouverts par lui. Il est important de faire attention avec chmod lorsque vous modifiez les autorisations, et en particulier lorsque vous le faites de manière récursive, car la situation peut rapidement se dégrader.

Pour plus d'informations, voir man chmod ou le Manpages Ubuntu en ligne et ceci article à Superuser .

0voto

Eduard Florinescu Points 6547

Les annuaires ont besoin x (pour le répertoire, ce bit est considéré comme un bit de recherche) pour ouvrir. De nombreuses personnes découvrent que lorsqu'elles suppriment le bit exécutable avec la commande chmod -R sur le dossier entier, alors ils ne peuvent plus y accéder. Pour résoudre ce problème, j'utilise tree afin de n'obtenir que le dossier défini et d'éviter le cauchemar d'avoir tous les fichiers définis comme exécutables ( l'option pour l'arbre est -d List directories only. ) :

sudo tree -faid dirname | xargs -L1 -I{} sudo chmod +x "{}"

si vous n'avez pas tree :

find  dirname -type d -exec chmod +x {} 

Attention ! !! vous devez en tenir compte :

  • utilisation de chmod ou chown récursif sur root / ou des répertoires système détruira votre système d'exploitation (en fait, tout ce qui est récursif sur / ou les répertoires du système est dangereux)

  • ce n'est pas une bonne pratique de sécurité que de définir des autorisations en vrac comme ça

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X