Comment puis-je définir chmod pour un dossier et tous ses sous-dossiers et fichiers dans Linux Ubuntu Terminal?



7 Answers

Vérifiez l'option -R

chmod -R <permissionsettings> <dirname>

À l'avenir, vous pouvez gagner beaucoup de temps en vérifiant d'abord la page de manuel:

man <command name>

Donc dans ce cas:

man chmod
Question

Existe-t-il un moyen de définir chmod 755 pour /opt/lampp/htdocs et tout son contenu, y compris les sous-dossiers et les fichiers?

Aussi, dans le futur, si je crée un nouveau dossier ou un nouveau fichier dans htdocs , comment les permissions de celui-ci peuvent-elles être automatiquement fixées à 755 ?

Cela fonctionne, mais seulement pour ce dossier:

chmod 775 /opt/lampp/htdocs



Vous pouvez utiliser -R avec chmod pour la traversée récursive de tous les fichiers et sous-dossiers.

Vous pourriez avoir besoin de sudo car cela dépend de l'installation de LAMP par l'utilisateur actuel ou par un autre:

sudo chmod 755 -R /opt/lampp/htdocs



Vous voulez vous assurer que les fichiers et les répertoires appropriés sont des chmod-ed / permissions pour ceux qui sont appropriés. Pour tous les répertoires que vous voulez

find /opt/lampp/htdocs -type d -exec chmod 711 {} \;

Et pour toutes les images, JavaScript, CSS, HTML ... eh bien, vous ne devriez pas les exécuter. Alors utilisez

chmod 644 img/* js/* html/*

Mais pour tout le code logique (par exemple le code PHP), vous devez définir des autorisations telles que l'utilisateur ne peut pas voir ce code:

chmod 600 file



C'est très simple.

Dans Terminal, allez dans le gestionnaire de fichiers. exemple: sudo nemo . Allez /opt/ puis cliquez sur Propriétés → Autorisation . puis Autre . Enfin, changez pour créer et supprimer et classer accès pour lire et écrire et cliquez sur le bouton appliquer ... Et travailler.




Voici une autre façon de définir les répertoires sur 775 et les fichiers sur 664.

find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)

Cela peut sembler long, mais c'est plutôt cool pour trois raisons:

  1. Scanne le système de fichiers une seule fois plutôt que deux fois.
  2. Fournit un meilleur contrôle sur la façon dont les fichiers sont traités par rapport à la façon dont les répertoires sont gérés. Ceci est utile lorsque vous travaillez avec des modes spéciaux tels que le bit sticky , que vous voulez probablement appliquer aux répertoires mais pas aux fichiers.
  3. Utilise une technique directement dans les pages de man (voir ci-dessous).

Notez que je n'ai pas confirmé la différence de performance (le cas échéant) entre cette solution et celle de simplement utiliser deux commandes find (comme dans la solution de Peter Mortensen). Cependant, voir un exemple similaire dans le manuel est encourageant.

Exemple de man find page:

find / \
\( -perm -4000 -fprintf /root/suid.txt %#m %u %p\n \) , \
\( -size +100M -fprintf /root/big.txt %-10s %p\n \)

Traverse the filesystem just once, listing setuid files and  direc‐
tories into /root/suid.txt and large files into /root/big.txt.

À votre santé




chmod 755 -R /opt/lampp/htdocs va récursivement définir les permissions. Il n'existe aucun moyen de définir automatiquement les autorisations pour les fichiers dans ce répertoire uniquement après avoir défini les autorisations, mais vous pouvez modifier les autorisations de fichier par défaut à l'échelle du système en définissant umask 022 .




Je pense qu'Adam demandait comment changer la valeur de umask pour tous les processus qui doivent fonctionner dans le /opt/lampp/htdocs .

Le masque de mode de création de fichier utilisateur (umask) est utilisé pour déterminer l'autorisation de fichier pour les fichiers nouvellement créés. Il peut être utilisé pour contrôler l'autorisation de fichier par défaut pour les nouveaux fichiers.

Donc, si vous utilisez un programme ftp pour télécharger des fichiers dans /opt/lampp/htdocs vous devez configurer votre serveur ftp pour qu'il utilise umask.

Si les fichiers / répertoires sont créés par exemple par php, vous devez modifier le code php

<?php
umask(0022);
// other code
?>

Si vous créez de nouveaux fichiers / dossiers à partir de votre session bash, vous pouvez définir la valeur umask dans votre profil shell ~ / .bashrc Ou vous pouvez configurer umask dans le fichier /etc/bashrc ou /etc/profile pour tous les utilisateurs. ajoutez ce qui suit au fichier: umask 022

Sample umask Values and File Creation Permissions
If umask value set to   User permission     Group permission     Others permission
000                         all              all                   all
007                         all              all                   none
027                         all          read / execute            none

Et pour modifier les autorisations pour les fichiers déjà créés, vous pouvez utiliser find. J'espère que cela t'aides.




Vous pourriez considérer cette réponse donnée par nik sur superutilisateur et utiliser "one chmod" pour tous les fichiers / dossiers comme ceci:

chmod 755 $(find /path/to/base/dir -type d)
chmod 644 $(find /path/to/base/dir -type f)





Related