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

43

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

Je mets les deux répertoires sur chmod 777 (ce qui est correct car il est uniquement à tester).

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

Sinon, lorsque j'essaie de le parcourir, j'obtiens le message d'erreur

  

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

Y a-t-il un moyen de rendre tous les sous-dossiers contenus dans /var/www accessibles à tous? Ou leurs autorisations peuvent-elles être automatiquement définies sur 777 ? C'est embêtant de devoir taper chmod 777 à chaque fois.

    
posée user1645034 03.06.2013 - 16:32
la source

6 réponses

63

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

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’un ou l’autre, réfléchissez vraiment à la question de savoir si vous voulez que votre système de fichiers soit aussi accessible.

Modifier: Comme mentionné par Rinzwind, voici un meilleur moyen de réaliser ce que vous voulez.

Vérifiez quel groupe possède votre répertoire /var/www et ajoutez votre utilisateur à ce groupe.

sudo adduser yourusername group

Le groupe est probablement www-data .

Ensuite, vous serez en mesure de définir vos autorisations sur 775.

    
réponse donnée dan08 03.06.2013 - 16:45
la source
8

Les fichiers et répertoires sous Unix peuvent avoir trois types d’autorisations: read ( r ), write ( w ) et execute ( x ). Chaque autorisation peut être on ou off pour 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 
    
réponse donnée Lokesh Kumar Bandi 09.08.2016 - 08:19
la source
1
cd /var/www
find -type d ! -perm 777 -exec chmod 777 {} \;

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

Regardez ce site lien

    
réponse donnée Jose Pla 03.11.2017 - 00:46
la source
0

Annonce de service public:

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

  • Si vous exécutez des services accessibles au public, en particulier des applications Web (par exemple, PHP), cela représente un risque majeur pour la sécurité.

    Le modèle de sécurité du système d’exploitation suppose que de nombreux services (tels que votre serveur Web) fonctionnent avec des privilèges réduits, afin de ne pas pouvoir modifier les fichiers. La configuration de 777 sur les fichiers rompt cette conception.

    Un utilisateur distant peut écrire ou télécharger des fichiers, puis inciter le serveur (ou tout autre processus de votre système) à les lire ou à les exécuter. Les scripts ou les logiciels peuvent présenter des failles qui le permettent. Il est très difficile de verrouiller toutes les possibilités si des répertoires sont accessibles en écriture.

  • Utilisé dans certains répertoires système (/ usr, / etc, / var, etc.), il peut casser 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 fichiers 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 des autorisations différentes, vous ne pouvez pas revenir à ces autorisations spécifiques - uniquement pour les changer toutes, ce qui peut entraîner la perte des autorisations nécessaires sur fichiers spécifiques.

  • Il existe toujours un moyen plus approprié d’atteindre ce que vous souhaitez atteindre.

Dans ce cas, il semble que vous souhaitiez uniquement que votre serveur Web puisse lire un répertoire. Donner une autorisation accessible en écriture est bien plus que nécessaire.

Identifiez les raisons pour lesquelles le serveur Web ne peut pas lire ce répertoire (conseil: il est probable que votre répertoire personnel ne soit pas lisible dans le monde entier). 755, ou déplacez ce répertoire vers votre domicile vers / var / www ou / srv).

    
réponse donnée thomasrutter 03.11.2017 - 01:09
la source
0

Cela ne marche pas pour moi.

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

Je dois aussi utiliser -f .

sudo chmod -R -f 777 /path/to/your/file/or/directory
    
réponse donnée Janaka Pushpakumara 21.12.2017 - 13:10
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 = path / to / file / to / reference path / to / file / you / vouloir / à / changer / permissino / à

Et vous pouvez faire la même chose pour la propriété des fichiers.

    
réponse donnée Amir Khalil 02.07.2018 - 21:01
la source

Lire d'autres questions sur les étiquettes