Comment puis-je modifier les autorisations d'un dossier et tous ses sous-dossiers et fichiers en une seule étape sous Linux?
Je voudrais modifier les autorisations d'un dossier et tous ses sous-dossiers et fichiers en une seule étape (commande sous Linux).
J'ai déjà essayé la commande ci-dessous, mais il ne fonctionne que pour les cités de dossier:
chmod 775 /opt/lampp/htdocs
Est-il un moyen de mettre chmod 755
pour /opt/lampp/htdocs
et l'ensemble de son contenu, y compris les sous-dossiers et fichiers?
Également, dans l'avenir, si je créer un nouveau dossier ou un fichier à l'intérieur de htdocs
, comment les autorisations de qui automatiquement à 755
?
J'ai eu un coup d'oeil à ce lien:
http://stackoverflow.com/questions/3740187/how-to-set-default-chmod-in-linux-terminal
- Êtes-vous essayer de faire un script de commande? Peut-être bash, csh ou zsh?
- Avez-vous l'intention d'écrire
chmod 75 /opt/lampp/htdocs
ou devrait vraiment êtrechmod 755 /opt/lampp/htdocs
? - sudo chown -R nom d'utilisateur:répertoire du groupe .............Il va changer de propriétaire (à la fois de l'utilisateur et de groupe) de tous les fichiers et répertoires à l'intérieur de répertoire et le répertoire lui-même.
- Le fait que le 4e plus haut-voté question à propos de Linux est "fermé comme hors-sujet" est hilarante. Qui mais un programmeur aurait soucient de chmod? Comment est-ce hors sujet? Pourquoi les "autorisations", "dossier", et "cmod" même les balises s'ils sont hors-sujet?
- parce que cette question (bien que parfaitement valable et utile) est plus adapté à un système axé SE site, par exemple en tant que Superutilisateur ou ServerFault. Il n'est pas expressément liées à la programmation.
- Bien sûr, mais je demande encore une fois, pourquoi les "autorisations", "dossier", et "cmod" tags? Quand cmod jamais être utilisés "expressément" pour la programmation?
- Ne pouvait pas cette question sur la programmation en bash?
- Si vous voulez être vraiment pointilleux, Bash est en fait un langage de script, mais alors il en est de php, qui ne semblent pas à l'esprit.
- Où est donc le lien vers cette (évidemment très utile) question sur un plus approprié SE site?
- De son à la fois. script question de la configuration et de sujet. C'est pourquoi son fermé et pas migré.
InformationsquelleAutor Adam | 2010-09-18
Vous devez vous connecter pour publier un commentaire.
Les autres réponses sont correctes, en ce que
chmod -R 755
va définir ces autorisations à tous les fichiers et sous-dossiers dans l'arborescence. Mais pourquoi sur terre serait vous voulez? Il peut faire sens pour les répertoires, mais pourquoi mettre le bit d'exécution sur tous les fichiers?Je soupçonne ce que vous voulez vraiment faire est de définir les répertoires à 755 et de laisser les fichiers seul ou à 644. Pour cela, vous pouvez utiliser le
find
de commande. Par exemple:De changer tous les répertoires à 755 (
drwxr-xr-x
):De modifier tous les fichiers à 644 (
-rw-r--r--
):{} \;
sur la fin de la ligne?find
pour chaque fichier.{}
est remplacé par le chemin d'accès au fichier, et le point-virgule indique la fin de la commande (échappé, sinon cela risque d'être interprété par le shell à la place defind
).chmod YOUR_PERMISSIONS /opt/lampp/htdocs
./path/to/directory/*
pour le faire fonctionner. Espérons que cela aide quelqu'un.find /opt/lampp/htdocs -type d -exec chmod 755 {} +
etfind /opt/lampp/htdocs -type f -exec chmod 644 {} +
pour réduirefork
(2) etexec
(2) appel d'invoquerchmod
. (Remplacer\;
par+
.)-exec chmod 755 '{}' \;
— ...et lors de l'utilisation de guillemets simples pour l'espace réservé, il est plus facile de se rappeler la possibilité de s'évader le point-virgule de guillemets ainsi; c'est à dire:-exec chmod 755 '{}' ';'
linux make directories public and files public chmod
example_file
, qui se trouve dans un certain nombre de répertoires?chmod
et paschod
..Cochez l'option-R
chmod -R <permissionsettings> <dirname>
Dans l'avenir, vous pouvez économiser beaucoup de temps par la vérification de l'homme page:
Donc dans ce cas:
man
?man
. Surtout pour quelque chose commegrep
où si vous êtes nouveau àman
il peut être très coûteux en temps de localiser des exemples dans le document, mais Google ou AFIN de fournir des exemples à l'intérieur de secondes.man
de commande.x
/ autorisation d'exécution, quand vous faites-x
; vous ne voulez pas accidentellement faire un pascd
mesure.man chmod
sont destinés à la honte. Ils ne le sont pas. Souvent la réponse est là. Vous avez juste à lire. Il est ennuyeux d'être invité à lire pour quelqu'un d'autre. Vous obtiendrez beaucoup de bien de l'aide si vous nous expliquer pourquoi vous avez encore des questions après la lecture de la page de man.Si vous souhaitez définir des autorisations sur tous les fichiers à
a+r
, et de tous les répertoiresa+x
, et de le faire de manière récursive par le biais de la complète arborescence de sous-répertoires, utilisez:La
X
(qui est capitalX
, pas un petitx
!) est ignoré pour les fichiers (sauf si elles sont exécutables pour quelqu'un déjà), mais il est utilisé pour les répertoires.chmod
docs, où j'ai compris que je pouvais utiliserchmod -R g+wX .
. Bravo!x
sur les fichiers si elles l'ont déjà.chmod -R a+rX
etchmod -R g+wX
,a
est tout etg
est groupe. Il est égalementu
l'utilisateur/propriétaire eto
autres. Dans ces commandes, vous êtes en train d'ajouter une lecture/écriture de bits et un bit d'exécution (capitalX
représente "seulement si le fichier est un répertoire")sudo chmod -R u+rwX,g+rwX,o+rX .
réglage 664 sur les fichiers, et 775 sur les dossiers.Vous pouvez utiliser
-R
avecchmod
récursive de la traversée de tous les fichiers et sous-dossiers.Vous pourriez avoir besoin de sudo car elle dépend de la LAMPE être installé par l'utilisateur actuel ou un autre:
sudo chmod 755 -R /directory
n'ai pas de travail maissudo chmod -R 755 /directory
fait. Bizarre. Je suis sous Mac os x, par la manière.sudo chmod 755 -R
travailléÀ l'ensemble de tous les sous-dossiers (de manière récursive) utilisez-R
Et utiliser umask pour définir la valeur par défaut pour les nouveaux fichiers/dossiers
cd /dossier
umask 755
umask
à 755! Vous ne serez pas en mesure de faire la liste, de lire ou d'utiliser des 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
Le bon récursive de commande est:
-R
: changer tous les sous dossier, y compris le dossier en courschmod 755 -R /opt/lampp/htdocs
sera récursivement les autorisations. Il n'y a aucun moyen de définir les autorisations pour les fichiers automatiquement que dans ce répertoire que sont créés après vous définissez les autorisations, mais vous pouvez changer votre système par défaut des autorisations de fichier avec par la mise enumask 022
.inherit
être une solution à de nombreux cas ou il travaillera avec NTFS-3G exclusivement?myforlder
à partir d'autres endroits(comme un PC) pour ce répertoire cible(sur un serveur) cause il va essayer de créer un nouveau dossier dans le répertoire cible avec le nommyfolder
qui vous n'avez pas la permission de le faire. Comme je l'airoot
, je viens d'utiliserchown -R username:usergroup /directory
.Vous pourriez envisager de cette réponse donnée par nik sur super-utilisateur et utiliser "un chmod" pour tous les fichiers/dossiers comme celui-ci:
-exec
option defind
afin de surmonter lesArgument list too long
erreur.Utilisation:
Cependant, soyez prudent avec ça. Il peut vraiment vous faire du mal si vous modifiez les autorisations de mauvais fichiers/dossiers.
Voici une autre façon de définir les répertoires à 775 et fichiers à 664.
Il peut paraître long, mais c'est assez cool pour trois raisons:
man
pages (voir ci-dessous).Noter que je n'ai pas confirmé la différence de performance (le cas échéant) entre cette solution et que de simplement à l'aide de deux commandes rechercher (comme dans Peter Mortensen est la solution). Cependant, voir un exemple similaire dans le manuel est encourageant.
Exemple de
man find
page:Acclamations
chmod -R 755 directory_name
fonctionne, mais comment voulez-vous garder les nouveaux fichiers à 755 aussi? Les permissions du fichier devient l'autorisation par défaut.Vous voulez faire assurez-vous que les fichiers et répertoires en chmod-ed/autorisations pour ceux qui sont appropriées. Pour tous les répertoires que vous voulez
Et pour toutes les images, JavaScript, CSS, HTML...eh bien, vous ne devriez pas exécuter. Donc, utiliser
Mais pour tous le code de la logique (par exemple le code PHP), vous devez définir des autorisations telles que l'utilisateur ne peut pas voir le code:
Pour Mac OS X 10.7 (Lion), c'est:
Et oui, comme tous les autres dire, être prudent lorsque vous faites cela.
Je pense que Adam a été demandé comment changer umask de la valeur de tous les processus qui l'attachent à fonctionner sur
/opt/lampp/htdocs
répertoire.Le fichier de l'utilisateur-mode de création de masque (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 avez besoin pour configurer votre serveur ftp à utiliser umask vous le souhaitez.Si les fichiers /répertoires être créé, par exemple en php, vous avez besoin de modifier le code php
si vous allez créer de nouveaux fichiers /dossiers à partir de votre bash session, vous pouvez définir la valeur umask dans votre shell de profil ~/.bashrc
Ou vous pouvez configurer umask dans
/etc/bashrc
ou/etc/profile
fichier pour tous les utilisateurs.ajouter le texte suivant dans le fichier:
umask 022
Et de modifier les autorisations pour déjà créé des fichiers vous pouvez utiliser le trouver.
Espérons que cette aide.
Il y a deux réponses de la recherche de fichiers et de l'application de
chmod
à eux. Premier estfind
le fichier et de les appliquerchmod
qu'il trouve (comme suggéré par @WombleGoneBad).Deuxième solution est de générer la liste de tous les fichiers avec
find
de commande et d'approvisionnement de cette liste à lachmod
de commande (comme suggéré par @lamgesh).Ces deux versions de travail agréable, aussi longtemps que le nombre de dossiers renvoyés par la
find
commande est petit. La deuxième solution semble grande pour les yeux et plus lisible que la première. Si il ya un grand nombre de fichiers, la deuxième solution renvoie l'erreur :Argument list too long.
Donc, ma suggestion est
chmod -R 755 /opt/lampp/htdocs
si vous souhaitez modifier les autorisations de tous les fichiers et répertoires à la fois.find /opt/lampp/htdocs -type d -exec chmod 755 {} \;
si le nombre de fichiers que vous utilisez est très grand. Le-type x
option de recherche pour le type spécifique de fichier uniquement, où d est utilisée pour la détermination de répertoire, f pour fichier et l pour le lien.chmod 755 $(find /path/to/base/dir -type d)
sinonC'est très simple.
Dans le Terminal, allez à gestionnaire de fichiers. exemple:
sudo nemo
. Aller/opt/
puis cliquez sur Propriétés → Autorisation. et puis Autres. Enfin, le changement de créer et de supprimer le fichier et de l'accès à lire et à écrire et cliquez sur le bouton appliquer... Et le travail.