Comment définir chmod pour un dossier et tous ses sous-dossiers et fichiers? [fermé]
y a-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, à l'avenir, si je crée un nouveau dossier ou un nouveau fichier dans htdocs
, comment les permissions de celui-ci peuvent-elles être automatiquement définies à 755
?
Cela fonctionne, mais seulement pour ce dossier:
chmod 775 /opt/lampp/htdocs
16 réponses
les autres réponses sont correctes, en ce que chmod -R 755
définira ces permissions à tous les fichiers et sous-dossiers dans l'arbre. mais pourquoi diable voudriez-vous ? Il peut faire sens pour les répertoires, mais pourquoi mettre le bit d'exécution sur tous les fichiers?
je soupçonne que ce que vous voulez vraiment faire est de mettre les répertoires à 755 et soit laisser les fichiers seuls ou les mettre à 644. Pour cela, vous pouvez utiliser la commande find
. Exemple:
pour changer tous les répertoires à 755 ( drwxr-xr-x
):
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
pour changer tous les fichiers en 644 ( -rw-r--r--
):
find /opt/lampp/htdocs -type f -exec chmod 644 {} \;
cochez l'option-R
chmod -R <permissionsettings> <dirname>
dans le futur, vous pouvez gagner beaucoup de temps en vérifiant d'abord la page de manuel:
man <command name>
donc dans ce cas:
man chmod
si vous voulez définir les permissions sur tous les fichiers à a+r
, et tous les répertoires à a+x
, et faire cela récursivement à travers l'arborescence complète du sous-répertoire, utilisez:
chmod -R a+rX *
le X
(c'est-à-dire capital X
, pas petit x
!) est ignoré pour les fichiers (sauf s'ils sont déjà exécutables pour quelqu'un) mais est utilisé pour les répertoires.
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 il dépend de lampe étant installé par l'utilisateur courant ou un autre:
sudo chmod 755 -R /opt/lampp/htdocs
À l'ensemble de tous les sous-dossiers (de manière récursive) utilisez-R
chmod 755 /folder -R
et utilisez umask pour définir la valeur par défaut aux nouveaux dossiers / fichiers
cd /dossier
umask 755
chmod 755 -R /opt/lampp/htdocs
définira récursivement les permissions. Il n'y a aucun moyen de définir automatiquement les permissions pour les fichiers uniquement dans ce répertoire qui sont créés après que vous ayez défini les permissions, mais vous pouvez modifier vos permissions par défaut pour l'ensemble du système en définissant umask 022
.
la commande récursive correcte est:
sudo chmod 755 -R /opt/lampp/htdocs
-R
: changez chaque sous-dossier incluant le dossier courant
vous pourriez vouloir considérer cette réponse donnée par nik sur superuser et utiliser "un 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)
utiliser:
sudo chmod 755 -R /whatever/your/directory/is
cependant, faites attention avec ça. Il peut vraiment vous blesser si vous changez les permissions des mauvais dossiers/dossiers.
Voici une autre façon de définir les répertoires à 775 et les fichiers à 664.
find /opt/lampp/htdocs \
\( -type f -exec chmod ug+rw,o+r {} \; \) , \
\( -type d -exec chmod ug+rwxs,o+rx {} \; \)
il peut sembler long, mais il est assez cool pour trois raisons:
- scanne le système de fichiers une seule fois plutôt que deux.
- fournit un meilleur contrôle sur la façon dont fichiers sont traités par rapport à la façon dont répertoires sont traités. C'est utile quand on travaille avec spécial les modes tels que le sticky bit , que vous voulez probablement appliquer aux répertoires mais pas aux fichiers.
- utilise une technique qui sort directement des pages
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.
Cheers
chmod -R 755 directory_name
fonctionne, mais comment garder les nouveaux fichiers à 755 aussi? Les permissions du fichier deviennent la permission par défaut.
vous voulez vous assurer que les fichiers et répertoires appropriés sont chmod-ed/permissions pour ceux 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 exécuter. Utilisez
chmod 644 img/* js/* html/*
mais pour tout le code logique (par exemple le code PHP), vous devriez définir des permissions telles que l'utilisateur ne peut pas voir ce code:
chmod 600 file
pour Mac OS X 10.7 (Lion), il est:
chmod -R 755 /directory
et oui, comme tous les autres disent, faites attention en faisant cela.
je pense Qu'Adam se demandait comment changer la valeur umask pour tous les processus qui lient pour fonctionner sur /opt/lampp/htdocs
répertoire.
le masque de mode Création de fichier Utilisateur (umask) est utilisé pour déterminer la permission de fichier pour les fichiers nouvellement créés. Il peut être utilisé pour contrôler le fichier par défaut d'autorisation pour les nouveaux fichiers.
donc, si vous utilisez une sorte de programme de ftp pour télécharger des fichiers dans /opt/lampp/htdocs
vous devez configurer votre serveur ftp à utiliser umask vous vouloir.
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 voulez créer 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 permissions pour les fichiers déjà créés, vous pouvez utiliser trouver. Espérons que cette aide.
il y a deux réponses pour trouver des dossiers et leur appliquer chmod
. Le premier est find
le fichier et appliquer chmod
comme il trouve (comme suggéré par @WombleGoneBad).
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
la deuxième solution est de générer la liste de tous les fichiers avec la commande find
et de fournir cette liste à la commande chmod
(comme suggéré par @lamgesh).
chmod 755 $(find /path/to/base/dir -type d)
ces deux versions fonctionnent bien tant que le nombre de les fichiers retournés par la commande find
sont petits. La deuxième solution semble grande à l'oeil et plus lisible que la première. S'il y a un grand nombre de fichiers, la deuxième solution retourne l'erreur: Argument list too long.
donc ma suggestion est
- utilisez
chmod -R 755 /opt/lampp/htdocs
si vous voulez changer les permissions de tous les fichiers et répertoires à la fois. - Utiliser
find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
si le nombre de fichiers que vous utilisez est très grand. L'option-type x
recherche uniquement un type de fichier spécifique, où d est utilisé pour trouver le répertoire, f pour le fichier et l pour le lien. - utiliser
chmod 755 $(find /path/to/base/dir -type d)
autrement - mieux utiliser le premier dans n'importe quelle situation
c'est très simple.
dans Terminal aller au gestionnaire de fichiers. exemple: sudo nemo
. Aller /opt/
puis cliquez sur propriétés → Permission . puis autre . Enfin, Modifier pour créer et supprimer et fichier acess pour lire et écrire et cliquez sur le bouton Appliquer... Et le travail.