Pourquoi chmod 644 rend les répertoires inaccessibles?

8

J'ai un tas de fichiers multimédias (qui ne doivent être que 644) qui étaient un mélange de diverses autorisations. Certains étaient accessibles en écriture groupée ou globale, alors j'ai pensé que, pour être sûr, je les remodifierais tous en 644.

Le problème est qu'il existe une hiérarchie de répertoires et pour tous les répertoires qui ont été interceptés, ls -lils les affichent comme suit:

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

Si je modifie cela en 744, c'est corrigé.

Ma question est: que se passe-t-il ici? Les répertoires doivent-ils être exécutables?

Oli
la source

Réponses:

7

Comme indiqué dans la page de manuel chmodrelative aux autorisations:

Les lettres rwxXst sélectionnent les bits du mode fichier pour les utilisateurs concernés: lecture (r), écriture (w), exécution (ou recherche de répertoires) (x), exécution / recherche uniquement si le fichier est un répertoire ou a déjà l'autorisation d'exécution pour certains utilisateur (X)

Le bit exécutable sur un dossier est expliqué ci-dessus comme une autorisation de «recherche»; c'est-à-dire que le bit d'exécution vous permet simplement d'accéder au dossier dans un navigateur de fichiers ou de vous déplacer vers le dossier depuis le terminal en exécutant la cdcommande ou en exécutant ls ~/folderpour répertorier les fichiers dans le dossier.

Le dossier doit être exécutable pour le propriétaire , bien que le superutilisateur puisse toujours accéder au dossier comme lors de l'utilisation de sudon'importe quel fichier ou répertoire accessible ou supprimé. En outre, les autorisations de répertoire et de fichier sont expliquées plus en détail dans 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 du code ou des commandes comme lorsqu'un fichier 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 à l'intérieur $HOMEont le jeu d'autorisations d'exécution pour l'utilisateur, le groupe et autres s'ils sont affichés avec stat ~/myfolder(extrait ci-dessous):

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

Les autorisations standard pour les dossiers à l' intérieur $HOME sont 755 ou 775 et pour les fichiers, elles sont 644. Cependant, le reste du système de fichiers sera différent. Encore une fois, les dossiers doivent avoir le bit d'exécution pour le propriétaire ou ils ne pourront pas être ouverts par lui. Il est important de faire attention chmodlors de la modification des autorisations et en particulier lorsque vous le faites de manière récursive car la situation peut rapidement être gâchée.

Pour plus d'informations, consultez man chmodou les pages de manuel Ubuntu en ligne et cet article sur Superuser .

dessert
la source
0

Les répertoires ont besoin d' xun ensemble de bits (pour le répertoire, ce bit est considéré comme un bit de recherche) pour s'ouvrir. Beaucoup de gens découvrent que lorsqu'ils suppriment le bit exécutable avec chmod -Rsur tout le dossier, ils ne peuvent plus y accéder. Pour résoudre ce problème, j'utilise treeuniquement le jeu de dossiers et évite le cauchemar d'avoir tous les fichiers définis comme exécutables (l'option pour l'arborescence 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 devriez avoir ceci en considération:

  • utiliser chmod ou chown récursif sur le /répertoire racine ou les répertoires système détruira votre système d'exploitation (en fait, tout ce qui est récursif sur le /répertoire ou les répertoires système est dangereux)

  • ce n'est pas une bonne pratique de sécurité pour définir le volume des autorisations comme ça

Eduard Florinescu
la source
@Melebius Ok merci, je suis content que nous soyons parvenus à une entente
Eduard Florinescu