Comment puis-je donner l'accès en écriture d'un dossier à tous les utilisateurs de Linux?

191

J'ai installé apache2 sur Ubuntu tout à l'heure et j'ai remarqué que le dossier / var / www est protégé. Je peux juste sudotout mais je préférerais simplement lui donner un accès en écriture.

Comment puis-je faire ceci?

J'ai essayé sudo chmod 7777 /var/wwwmais ça n'a pas marché.

Carson Myers
la source
S'agit-il d'un serveur accessible au public ou ne dispose-t-il pas d'une connexion directe à Internet? Si c'est le cas, il est important que vous preniez en compte les décisions de sécurité - les serveurs sur Internet sont constamment attaqués (consultez votre / var / log / messages ou son équivalent).
Kwutchak
ceci est juste mon ordinateur portable, il n'est pas accessible depuis Internet.
Carson Myers

Réponses:

322

Pour partager au mieux avec plusieurs utilisateurs qui devraient être en mesure d'écrire /var/www, un groupe commun doit être attribué. Par exemple, le groupe de contenu Web par défaut sur Ubuntu et Debian est www-data. Assurez-vous que tous les utilisateurs ayant besoin d'un accès en écriture se /var/wwwtrouvent dans ce groupe.

sudo usermod -a -G www-data <some_user>

Définissez ensuite les autorisations appropriées sur / var / www.

sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www

En outre, vous devez définir le répertoire et tous les répertoires situés en-dessous "set GID" afin que tous les nouveaux fichiers et répertoires créés sous /var/wwwsoient la propriété du www-datagroupe.

sudo find /var/www -type d -exec chmod 2775 {} \;    

Recherchez tous les fichiers /var/wwwet ajoutez les autorisations de lecture et d'écriture pour le propriétaire et le groupe:

sudo find /var/www -type f -exec chmod ug+rw {} \;

Vous devrez peut-être vous déconnecter et vous reconnecter pour pouvoir apporter des modifications si vous modifiez l'autorisation de votre propre compte.

jtimberman
la source
2
c'est assez fastidieux ... Je ne peux pas simplement donner aux utilisateurs l'accès, comme s'il s'agissait d'un autre dossier?
Carson Myers
9
C'est la façon dont vous donnez accès. Il est plus rapide de copier et coller les commandes que d'essayer de naviguer dans les boîtes de dialogue d'un gestionnaire de fichiers GUI pour faire la même chose. À long terme, cela vous aidera si vous lisez les pages de manuel relatives à chmod et à chgrp, au moins ("man chmod").
jtimberman
peut-être que je n'ai pas compris les commandes la première fois que je l'ai lue et votre modification la rend beaucoup plus claire.
Carson Myers
1
+1 pour guid pour forcer les permissions apache. fonctionne bien avec umask de 027. Si quelque chose nécessite un accès en écriture, c'est aussi simple que chmod g + w dir /
LiraNuna
1
Pourquoi votre commande d'autorisation de groupe est-elle sudo chmod -R g+wet non g+rwou g+rwX?
Détly
31

Il existe un moyen plus simple de faire cela, essayez de faire cette commande.

sudo chmod -R 757 /var/www

Essentiellement, la chmodcommande modifie les autorisations et le -Rcommutateur affecte tous les utilisateurs. Ensuite, il donne simplement les autorisations correctes à utiliser.

Krishna Modi
la source
3
Pourriez-vous donner un aperçu de ce que la commande fait pour le PO?
n0pe
11
-1 pour manque d'explication. En plus, ce chmod $permissions -R $filen'est pas valable…
Blacklight Shining
1
ce sont des options, puis des permissions et non pas l'inverse
Moataz Elmasry
2
sudo chmod -R 757 /var/www
Bwyss
s'il vous plaît quelqu'un expérimenté suggère une édition avec une brève explication à ce sujet.
Adi Prasetyo
29

Lire + écrire:

sudo chmod -R a+rw /var/www

Lire + écrire + exécuter:

sudo chmod -R a+rwx /var/www
paivaric
la source
7

Vous pouvez également reproduire ce que jtimberman a suggéré d'utiliser des listes de contrôle d'accès . La commande setfacl accepte -s pour remplacer une liste de contrôle d'accès existante ou -m pour la modifier. -R pour rendre les ACL d'annuaire récursives; et -d pour définir les paramètres spécifiés comme paramètres par défaut, ce qui est utile si vous prévoyez des comptes d'utilisateurs à venir.

Celles-ci définissent simplement les autorisations comme vous le feriez pour l'utilisateur, le groupe, les autres et le masque à l'aide de chmod:

setfacl -m u::rwx, g::r-x, o::---, m:rwx DIRECTORY

Et cela pourrait être comme vous le feriez pour un utilisateur spécifié ou son groupe:

setfacl -m u:USERNAME:rwx, g:USERNAME:r-x DIRECTORY

Et bien sûr, l’atout majeur est que vous pouvez désigner un utilisateur spécifique, plusieurs utilisateurs, etc., sans avoir à modifier les paramètres de votre groupe. Et contrairement à chmod, si vous voulez que certains groupés aient accès à un répertoire et que d'autres groupés n'aient accès qu'à un autre, c'est possible avec setfacl. Enfin, pour afficher les listes de contrôle d'accès d'un répertoire, exécutez getfacl :

getfacl DIRECTORY

Et vous pouvez spécifier -R pour voir les ACL des sous-répertoires ou -d pour voir les valeurs par défaut.

Nikhil Chelliah
la source
2

La réponse rapide et facile -

une. Ajoutez ( -a ) votre utilisateur ( nom_utilisateur ) au groupe ( -G ) www-data .

sudo usermod -a -G www-data user_name

b. Donnez au groupe ( g ) les mêmes autorisations ( = ) que l'utilisateur propriétaire ( u ) de / var / www récursivement ( -R ).

sudo chmod -R g=u /var/www

Explication: Apache 2 sous Debian / Ubuntu définit les données utilisateur et groupe www-data en tant que propriétaire de / var / www . Les autorisations par défaut pour l'utilisateur sont "Afficher et modifier le contenu", mais le groupe ne peut afficher que "Afficher le contenu". Par conséquent, vous ajouter au groupe www-data et lui attribuer les mêmes autorisations que l'utilisateur wwww-data est un moyen simple et rapide de développement. Je le fais pour tous mes environnements de développement Web localhost (PC / Laptop).

utilisateur1138
la source
1

Je l'utilise typiquement

chmod g+w /folder/ -R

C'est presque explicite.

Il ajoute que tous les membres gdu groupe /folder/ayant un waccès rite ( +w) -Rsont utilisés pour la récursivité des sous-dossiers.

Arda
la source
-3

Pouvez-vous juste essayer chmod 0777 /var/www?

Un mot d'avertissement: si vous laissez tout le monde accéder à ce dossier, cela signifie que les pirates informatiques pourront accéder à ce dossier s'ils ont accès à votre système. C'est pourquoi il est préférable de créer un groupe d'utilisateurs autorisés et de donner à ce groupe un accès en écriture.

stalepretzel
la source
alors pourquoi proposer cela comme solution, puis le discréditer immédiatement? -1 vote
jeudi
-3

Vous entrez d’abord le chemin du dossier particulier, puis vous utilisez cette commande…

chmod -R 777 foldername
chown username:username foldername 
Marimuthu
la source
7
Wow, c'est mauvais! Vous ne donnez pas un 777 avec un -R - surtout si la personne qui pose la question est un débutant et ne comprend pas les risques.
Recluze
C'est assez vrai @recluze.
vgoff