GNU/Linux >> Tutoriels Linux >  >> Cent OS

Centos - Modifier toutes les autorisations de dossier avec 1 commande ?

Dans mon répertoire d'applications Web, comment puis-je modifier toutes mes autorisations de dossier en rwxr-xr-x (755) ? Et comment puis-je changer toutes les autorisations de fichiers en rw-r--r-- (644) ? Je souhaite modifier tous les dossiers et fichiers, y compris les sous-sous-fichiers et dossiers.

Je sais que la commande suivante modifierait tous les fichiers et dossiers, mais je souhaite faire la distinction entre un fichier et un dossier.

chmod -R 755 ./my_web_app_project

Réponse acceptée :

Une façon de faire exactement ce que vous voulez avec une seule find la commande est

find my_web_app_project '(' -type f -exec chmod 644 {} ';' ')' -o '(' -type d -exec chmod 755 {} ';' ')'

-o signifie OU.
Cette commande traite tous les objets de l'arborescence du projet
qui sont de type "fichier" ou tapez "répertoire",
et exécute différentes commandes en fonction du type de chaque objet.

Vous pouvez rendre cela légèrement plus efficace
en remplaçant les points-virgules (';' ) avec des signes plus (+ );
cela indique find pour exécuter chmod 644 une fois, avec tous les noms de fichiers simples comme arguments,
et pour exécuter chmod 755 une fois, avec tous les noms de répertoires en arguments.

Au fait, vous n'avez pas besoin de dire ./ pour autre chose que l'exécution d'un programme dans le répertoire courant
(bien que cela soit parfois utile
pour manipuler des fichiers dont les noms commencent par des caractères spéciaux).

Je me demande à quoi ressemblent vos autorisations maintenant
(avant d'exécuter un chmod récursif à l'échelle de l'arborescence ).
Les bits d'autorisation d'exécution des fichiers ne sont généralement pas activés
sauf s'il s'agit en fait de programmes exécutables,
ou si vous avez accidentellement fait quelque chose comme chmod -R 755 .
Les bits d'autorisation d'exécution des répertoires ne sont généralement pas désactivés
sauf si vous avez fait quelque chose de catastrophique comme chmod -R 644 .
Si vous avez mal foiré les permissions
parce que vous avez fait un chmod -R peu judicieux avec un mode numérique,
ignorez cette section
et respectez la commande au début de cette réponse.

Mais, si vos permissions sont généralement saines,
et que vous voulez juste imposer une norme de
permissions en lecture/écriture pour l'utilisateur,
et des permissions en lecture seule pour tout le monde (groupe et monde ),
vous pouvez faire

chmod -R +rX,u+w,go-w my_web_app_project

dans lequel

  • +rX signifie +r,+X (notez que le X est en majuscule — c'est important).
    • +r signifie définir l'autorisation de lecture pour l'utilisateur, le groupe et autre.
    • +X signifie définir l'autorisation d'exécution pour l'utilisateur, le groupe et les autres s'il est actuellement défini pour l'un d'entre eux ou si l'objet est un répertoire .
  • u+w signifie définir l'autorisation d'écriture pour l'utilisateur.
  • go-w signifie désactiver l'autorisation d'écriture pour le groupe et les autres.
Connexe :Puis-je supprimer le dossier C:ProgramDataPackage Cache ?

Résumé de quelques points clés :

  • Bien sûr, vous pouvez chmod uniquement les éléments qui vous appartiennent
    (sauf si vous êtes privilégié) et qui ne sont pas en lecture seule.
    S'il y a des choses dans votre répertoire que vous ne pouvez pas chmod ,
    chacune de ces commandes provoquera une erreur.
  • Le find les commandes n'auront aucun effet sur les éléments
    qui ne sont pas des répertoires ou des fichiers (par exemple, des canaux nommés).
  • Le find commande avec -exec chmod 755 {} + peut échouer
    si vous ne disposez pas déjà des droits de lecture et d'exécution sur tous les dossiers
    sous votre répertoire de niveau supérieur.
  • Le chmod -R +rX,u+w,go-w la commande va
    • mettre tous les répertoires en mode 755,
    • ignorer les liens symboliques,
    • pour tous les autres types de fichiers (y compris, par exemple, les tubes nommés) :
      • mettez-le à 755 s'il a déjà au moins un x bit; sinon,
      • réglez-le sur 644.

Cent OS
  1. Gestion des packages CentOS 8 avec DNF sur la ligne de commande

  2. Comment auditer les autorisations avec la commande find

  3. Centos - Renommer tous les fichiers avec un certain nom ?

  4. Linux - Modifier les autorisations de dossier ?

  5. CentOS / RHEL 7 :Comment changer les niveaux d'exécution (cibles) avec systemd

Commande Chmod sous Linux (autorisations de fichiers)

Commande Chmod sous Linux

Commande Chmod - Comment modifier les autorisations de fichiers sous Linux

Comment changer le nom d'hôte sur CentOS 8

Apprendre l'utilisation de la commande chmod (changer de mode) sous Linux

Exemples de commandes Linux chmod