Je souhaite modifier les autorisations d'un dossier et de tous ses sous-dossiers et fichiers en une seule étape (commande) sous Linux.
J'ai déjà essayé la commande ci-dessous mais elle ne fonctionne que pour le dossier mentionné:
chmod 775 /opt/lampp/htdocs
Existe-t-il un moyen de définir chmod 755
pour l' /opt/lampp/htdocs
ensemble de son contenu, y compris les sous-dossiers et les fichiers?
De plus, à l'avenir, si je crée un nouveau dossier ou fichier à l'intérieur htdocs
, comment définir automatiquement les autorisations de celui-ci 755
?
J'ai aussi regardé ce lien:
http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal
chmod 75 /opt/lampp/htdocs
ou est-ce vraiment le caschmod 755 /opt/lampp/htdocs
?Réponses:
Les autres réponses sont correctes, en ce sens
chmod -R 755
qu'elles définiront ces autorisations pour tous les fichiers et sous-dossiers de l'arborescence. Mais pourquoi diable voudriez-vous ? Cela peut avoir un sens pour les répertoires, mais pourquoi définir le bit d'exécution sur tous les fichiers?Je soupçonne que ce que vous voulez vraiment faire est de définir les répertoires sur 755 et de laisser les fichiers seuls ou de les définir sur 644. Pour cela, vous pouvez utiliser la
find
commande. Par exemple:Pour changer tous les répertoires en 755 (
drwxr-xr-x
):Pour changer tous les fichiers en 644 (
-rw-r--r--
):la source
{} \;
veut-il expliquer ce que signifie la fin de la ligne?chmod 644 {} \;
spécifie la commande qui sera exécutée parfind
pour chaque fichier.{}
est remplacé par le chemin du fichier et le point-virgule indique la fin de la commande (échappé, sinon il serait interprété par le shell au lieu defind
).Cochez l'option -R
chmod -R <permissionsettings> <dirname>
À l'avenir, vous pouvez gagner beaucoup de temps en consultant d'abord la page de manuel:
Donc dans ce cas:
la source
man
?man
. En particulier pour quelque chose commegrep
où, si vous êtes nouveau,man
il peut être très long de localiser des exemples dans le document, mais Google ou SO fournissent des exemples en quelques secondes.Si vous souhaitez définir des autorisations sur tous les fichiers
a+r
et sur tous les répertoiresa+x
, et le faire de manière récursive dans l'arborescence complète du sous-répertoire, utilisez:Le
X
(c'est-à-dire capitalX
, pas petitx
!) Est ignoré pour les fichiers (sauf s'ils sont déjà exécutables pour quelqu'un déjà) mais est utilisé pour les répertoires.la source
chmod
documentation, où j'ai compris que je pouvais l'utiliserchmod -R g+wX .
. Bravo!x
fichiers s'ils l'ont déjà.Vous pouvez utiliser
-R
avecchmod
pour une 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 un autre:
la source
sudo chmod 755 -R /directory
n'a pas fonctionné maissudo chmod -R 755 /directory
a fonctionné. Bizarre. J'utilise Mac OS X d'ailleurs.sudo chmod 755 -R
fonctionnéLa commande récursive correcte est:
-R
: changer chaque sous-dossier, y compris le dossier actuella source
Pour définir tous les sous-dossiers (récursivement), utilisez -R
Et utilisez umask pour définir la valeur par défaut sur les nouveaux dossiers / fichiers cd / dossier umask 755la source
umask
755! Vous ne pourrez pas lister, lire ou utiliser les fichiers ou répertoires que vous créez!λ ~ → umask 022 λ ~ → umask -S u=rwx,g=rx,o=rx λ ~ → umask 755 λ ~ → umask -S u=,g=w,o=w
chmod 755 -R /opt/lampp/htdocs
définira récursivement les autorisations. Il n'y a aucun moyen de définir automatiquement les autorisations pour les fichiers uniquement dans ce répertoire qui sont créés après avoir défini les autorisations, mais vous pouvez modifier vos autorisations de fichiers par défaut à l'échelle du système avec en définissantumask 022
.la source
inherit
être une solution à de nombreux cas ou fonctionnera-t-il exclusivement avec NTFS-3G?myforlder
depuis d'autres endroits (comme un PC) vers ce répertoire cible (sur un serveur) car il essaiera de créer un nouveau dossier dans le répertoire cible dont le nommyfolder
n'est pas autorisé à le faire. Comme je l'airoot
, j'utilise justechown -R username:usergroup /directory
.Vous voudrez peut-être considérer cette réponse donnée par nik sur superutilisateur et utiliser "un chmod" pour tous les fichiers / dossiers comme celui-ci:
la source
-exec
optionfind
afin de surmonter l'Argument list too long
erreur.Utilisation:
Cependant, soyez prudent avec cela. Cela peut vraiment vous blesser si vous modifiez les autorisations des mauvais fichiers / dossiers.
la source
Voici une autre façon de définir les répertoires sur 775 et les fichiers sur 664.
Cela peut sembler long, mais c'est plutôt cool pour trois raisons:
man
pages (voir ci-dessous).Notez que je n'ai pas confirmé la différence de performance (le cas échéant) entre cette solution et celle d'utiliser simplement 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:À votre santé
la source
chmod -R 755 directory_name
fonctionne, mais comment garderiez-vous également les nouveaux fichiers au 755? Les autorisations du fichier deviennent l'autorisation par défaut.la source
Pour Mac OS X 10.7 (Lion), c'est:
Et oui, comme tous les autres disent, soyez prudent lorsque vous faites cela.
la source
Vous voulez vous assurer que les fichiers et répertoires appropriés sont chmod-ed / les autorisations pour ceux-ci sont appropriées. Pour tous les répertoires que vous souhaitez
Et pour toutes les images, JavaScript, CSS, HTML ... eh bien, vous ne devriez pas les exécuter. Alors utilisez
Mais pour tout le code logique (par exemple le code PHP), vous devez définir des autorisations telles que l'utilisateur ne puisse pas voir ce code:
la source
Je pense qu'Adam demandait comment changer la valeur umask pour tous les processus qui tentent de fonctionner sur le
/opt/lampp/htdocs
répertoire.Le masque du 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 allez utiliser une sorte de programme ftp pour télécharger des fichiers,
/opt/lampp/htdocs
vous devez configurer votre serveur ftp pour utiliser umask que vous voulez.Si des fichiers / répertoires sont créés par exemple par php, vous devez modifier le code php
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
/etc/bashrc
ou/etc/profile
fichier pour tous les utilisateurs. ajoutez ce qui suit au fichier: umask 022Et pour modifier les autorisations pour les fichiers déjà créés, vous pouvez utiliser find. J'espère que cela t'aides.
la source
Il existe deux réponses pour rechercher des fichiers et les appliquer
chmod
. Le premier estfind
le fichier et l'appliquerchmod
tel qu'il le trouve (comme suggéré par @WombleGoneBad).La deuxième solution consiste à générer la liste de tous les fichiers avec la
find
commande et à fournir cette liste à lachmod
commande (comme suggéré par @lamgesh).Ces deux versions fonctionnent bien tant que le nombre de fichiers renvoyés par la
find
commande est petit. La deuxième solution est superbe et plus lisible que la première. S'il y a un grand nombre de fichiers, la deuxième solution renvoie une erreur:Argument list too long.
Donc, ma suggestion est
chmod -R 755 /opt/lampp/htdocs
si vous souhaitez modifier simultanément les autorisations de tous les fichiers et répertoires.find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
si le nombre de fichiers que vous utilisez est très important. L'-type x
option recherche uniquement le type de fichier spécifique, où d est utilisé pour trouver le répertoire, f pour le fichier et l pour le lien.chmod 755 $(find /path/to/base/dir -type d)
autrementla source
C'est très simple.
Dans Terminal, accédez au 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 déposez un accès pour lire et écrire et cliquez sur le bouton Appliquer ... Et travaillez.la source