Comment puis-je chmod 777 tous les sous-dossiers de / var / www?

54

J'exécute un serveur Web et un serveur FTP, où /var/wwwest lié à /home/user/www.

Je mets les deux répertoires à chmod 777(ce qui est bien car c'est pour les tests seulement).

Je peux télécharger des fichiers /home/user/www, mais chaque fois que je crée un nouveau répertoire, je dois toujours exécuter chmod 777ce dossier.

Sinon, quand j'essaye de le parcourir, j'obtiens le message d'erreur

Vous n'êtes pas autorisé à accéder à / tester / sur ce serveur.

Est-il possible de rendre tous les sous-dossiers /var/wwwaccessibles à l' intérieur ? Ou leurs autorisations pourraient-elles être automatiquement définies 777? C'est agaçant que je doive taper à chmod 777chaque fois.

utilisateur1645034
la source
12
Je vais simplement laisser ça ici. VEUILLEZ NE PAS UTILISER LE 777 SUR UN SERVEUR WEB . Une meilleure question à poser est "Comment puis-je faire fonctionner mon serveur Web sans utiliser les autorisations 777?"
Marco Ceppi
12
désolé c'est une mauvaise pratique et je refuse de répondre à cette question :) J'espère que tout le monde est d'accord :)
Rinzwind

Réponses:

90

C'est une mauvaise pratique, mais j'espère que vous l'utilisez uniquement pour le développement ou que vous avez une autre bonne raison. Vous pouvez spécifier les autorisations lorsque vous créez un répertoire à l'aide de l' -moption:

mkdir -m 777 dirname

Ou vous pouvez définir les autorisations de manière récursive.

sudo chmod -R 777 /var/www

Avant d’utiliser l’une ou l’autre de ces méthodes, déterminez si vous souhaitez que votre système de fichiers soit aussi accessible.


Edit: Comme mentionné par Rinzwind, voici un meilleur moyen d’accomplir ce que vous voulez.

Vérifiez quel groupe est propriétaire de votre /var/wwwrépertoire et ajoutez votre utilisateur à ce groupe.

sudo adduser yourusername group

Le groupe est probablement www-data.

Ensuite, vous pourrez régler vos autorisations sur 775.

Dan
la source
4
Ceci correspond à ce que vous avez demandé, mais veuillez lire ceci au préalable. Pourquoi / var / www ne devrait-il pas avoir chmod 777 . Ce n'est vraiment pas une pratique recommandée.
Warren Hill
8
S'il vous plaît ne pas aider les gens avec une méthode qui est une mauvaise pratique. Je préférerais que vous expliquiez comment faire: en ajoutant son utilisateur à un groupe www-data ou apache;)
Rinzwind le
4
L'éducation vient en premier. Aider les gens à bousiller leur machine n’est pas la solution de Linux. Donc, je suis fortement en désaccord avec vous.
Rinzwind
2
Le demandeur a indiqué que ce n'était que pour les tests. Je peux vraiment comprendre que vous souhaitiez que votre équipe de développement soit facilement accessible afin que vous puissiez travailler plus rapidement. Je vais lui donner le bénéfice du doute, qu'il n'est pas assez idiot pour le faire avec un serveur de production.
Dan
1
@ dan08 Il existe de meilleurs moyens de tester, notamment d'utiliser votre répertoire personnel. Voir askubuntu.com/questions/46331/… et kimbriggs.com/computers/computer-notes/linux-notes/… . Il existe des moyens sûrs d'atteindre ces objectifs;)
Panther
7

Les fichiers et les répertoires sous Unix peuvent avoir trois types d'autorisations: read ( r), write ( w) et execute ( x). Chaque autorisation peut être onou offpour chacune des trois catégories d’utilisateurs: le propriétaire du fichier ou du répertoire; d'autres personnes du même groupe que le propriétaire; et tous les autres. Pour changer le mode d'un fichier, utilisez la commande chmod. La forme générale est chmod X @ Y fichier1 fichier2 ...

chmod a-w file (removes all writing permissions)
chmod o+x file (sets execute permissions for other (public permissions))
chmod u=rx file        (Give the owner rx permissions, not w)
chmod go-rwx file      (Deny rwx permission for group, others)
chmod g+w file         (Give write permission to the group)
chmod a+x file1 file2  (Give execute permission to everybody)
chmod g+rx,o+x file    (OK to combine like this with a comma)

u = user that owns the file
g = group that owns the file
o = other (everyone else)
a = all (everybody)

r = read aces to the file
w = write access
x = execute (run) access 
Lokesh Kumar Bandi
la source
4
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

pour le ftp créant tous les fichiers avec des permissions différentes, vous pouvez chercher l'umask de ftpd, comment ce démon est lancé

Jetez un coup d'œil à ce site https://linuxaria.com/article/linux-shell-understanding-umask-with-examples

Jose Pla
la source
1
+1 pour ceci est la seule réponse qui met à jour UNIQUEMENT les dossiers et non les fichiers
janmyszkier
3

Message d'intéret public:


N'utilisez jamais chmod 777 pour résoudre des problèmes


  • C'est un risque de sécurité majeur si vous exécutez des services accessibles au public, en particulier des applications Web (par exemple, PHP).

    Le modèle de sécurité du système d'exploitation suppose que de nombreux services (tels que votre serveur Web) s'exécutent avec des privilèges réduits pour les empêcher de pouvoir modifier les fichiers. La définition de 777 sur les fichiers casse cette conception.

    Un utilisateur distant peut écrire ou télécharger des fichiers puis inciter le serveur (ou un autre processus de votre système) à les lire ou à les exécuter. Les scripts ou les logiciels peuvent avoir des failles qui le permettent. Il est très difficile de verrouiller toutes les manières possibles si des répertoires peuvent être écrits dans le monde entier.

  • Utilisé dans certains répertoires système (/ usr, / etc, / var, etc.), il peut endommager votre système de manière surprenante.

    Certains fichiers système essentiels nécessitent des autorisations spéciales, telles que les autorisations setuid / setgid, pour pouvoir s'exécuter. Par exemple, sudo. Évitez de modifier les autorisations de fichier sur les répertoires et les fichiers configurés par le système lui-même.

  • Il n'y a aucun moyen de l'annuler et de récupérer toutes les anciennes autorisations.

    Autrement dit, si vous aviez auparavant des fichiers et des dossiers avec différentes autorisations, il n’était pas possible de revenir à ces autorisations spécifiques, mais simplement de les changer toutes de la même manière, ce qui risquerait de faire perdre les paramètres d’autorisation spécifiques nécessaires pour des fichiers spécifiques.

  • Il y a toujours un moyen plus approprié de réaliser ce que vous voulez réaliser.

Dans ce cas, il semblerait que vous souhaitiez uniquement que votre serveur Web puisse lire un répertoire. Donner une autorisation en écriture au monde est bien plus que ce que vous devez faire.

Cherchez à savoir pourquoi le serveur Web ne peut pas lire ce répertoire (astuce: c'est probablement parce que votre répertoire personnel n'est pas lisible par tout le monde. Ce dernier est beaucoup plus sûr que ce qu'il est possible d'écrire dans le monde - définissez votre répertoire personnel sur 755 ou déplacez ce répertoire www à l'extérieur de votre domicile dans un emplacement tel que / var / www ou / srv).

thomasrutter
la source
0

Cela ne fonctionne pas pour moi.

sudo chmod -f 777 /path/to/your/file/or/directory

Je dois utiliser -faussi.

sudo chmod -R -f 777 /path/to/your/file/or/directory
Janaka Pushpakumara
la source
0

Si vous souhaitez copier les autorisations et / ou la propriété d'un autre fichier dont vous êtes satisfait, vous pouvez le faire en utilisant sudo chmod --reference = chemin / vers / fichier / vers / chemin de référence / vers / fichier / vous / voulez / to / change / permissino / to

Et vous pouvez également faire la même chose pour la propriété de fichier.

Amir Khalil
la source