J'ai donc un répertoire dans / var / www (appelé cake) et je dois permettre à www-data de l'écrire, mais je veux aussi y écrire (sans avoir à utiliser sudo). J'ai peur de modifier les autorisations en 777 au cas où un autre utilisateur de ma machine (ou un pirate informatique) tente de modifier les fichiers de ce répertoire. Comment est-ce que je n'autorise l'accès que pour moi-même et le www-data d'Apache?
Réponses
Trop de publicités?Comme indiqué dans un article de Slicehost:
Configuration utilisateur
Donc, nous allons commencer par l'ajout de l'utilisateur principal de l'utilisateur Apache groupe:
sudo usermod -a -G www-data demo
Que l'ajout de l'utilisateur "demo" pour le 'www-data' du groupe. Ne vous assurer que vous utilisez à la fois l'un et l'-G options avec la commande usermod indiqué ci-dessus.
Vous aurez besoin de se déconnecter et de se reconnecter à nouveau pour activer le groupe changement.
Vérifiez les groupes de maintenant:
groups ... # demo www-data
Alors maintenant, je suis membre de deux groupes: le mien (démo) et le groupe Apache (www-data).
Dossier d'installation
Maintenant, nous devons nous assurer que le dossier public_html est détenue par le principal utilisateur (démo) et fait partie du groupe Apache (www-data).
Nous allons mettre en place que:
sudo chgrp -R www-data /home/demo/public_html
Comme nous parlons d'autorisations, je vais ajouter une petite note concernant la commande sudo: C'est une bonne habitude d'utiliser des chemins absolus (/home/demo/public_html) comme indiqué ci-dessus, plutôt que des chemins relatifs (~/public_html). Il assure sudo est utilisé dans le bon emplacement.
Si vous avez un dossier public_html avec des liens symboliques en place alors attention avec cette commande car il permettra de suivre les liens symboliques. Dans ces cas d'un dossier public_html, de changer à chaque dossier en main.
Setgid
Bon jusqu'à présent, mais n'oubliez pas la commande que nous avons donné n'affecte les dossiers existants. Ce sujet de quelque chose de nouveau?
Nous pouvons définir la propriété, de sorte que rien de nouveau est également dans le 'www-data' groupe.
La première commande va modifier les autorisations pour le public_html répertoire pour y inclure le "setgid" peu:
sudo chmod 2750 /home/demo/public_html
Qui va s'assurer que tous les nouveaux fichiers sont donnés le groupe "www-data". Si vous avez des sous-répertoires, vous devez exécuter cette commande pour chaque sous-répertoire (ce type de permission ne fonctionne pas avec l'option '-R'). Heureusement, de nouveaux sous-répertoires seront créés avec le "setgid" bit réglée automatiquement.
Si nous avons besoin de permettre l'accès en écriture pour le serveur Apache, pour un répertoire uploads par exemple, puis définissez les autorisations pour le répertoire de la sorte:
sudo chmod 2770 /home/demo/public_html/domain1.com/public/uploads
Les autorisations ne doivent être fixés une fois que les nouveaux fichiers automatiquement attribué la propriété correcte.