Quel est le moyen le plus simple d’éditer et d’ajouter des fichiers à «/ var / www»?


145

Une fois le serveur Web installé, existe-t-il un moyen simple de définir un utilisateur capable d’utiliser l’interface graphique pour copier des fichiers et des répertoires sur le serveur Web local / var / www

Je me suis accordé des privilèges d’administration dans Ubuntu, mais cela n’autorise toujours pas les copies.




J'ai essayé de faire ce que Marcos Roriz Junior a dit. J'ai copié et collé lorsque Marcos a écrit et changé de nom d'utilisateur en mon nom d'utilisateur. Mais je ne peux pas l'enregistrer dans / etc / apache2 / sites-available car cela ne me permettra pas d'enregistrer dans ce dossier. ???

Réponses:


222

Si vous créez / var / www en écriture pour son groupe et ajoutez l'utilisateur au groupe, cet utilisateur n'aura pas à utiliser sudo. Essaye ça:

sudo adduser <username> www-data
sudo chown -R www-data:www-data /var/www
sudo chmod -R g+rwX /var/www

L'utilisateur devrait alors pouvoir éditer / var / www / files sans tracas.

La première ligne ajoute l'utilisateur au groupe www-data, la deuxième ligne efface tous les fichiers dont les droits de propriété sont altérés, et la troisième permet à tous les utilisateurs membres du groupe www-data de pouvoir lire et écrire tous les fichiers / var / www.

Si vous êtes connecté, <username>vous devez vous déconnecter et vous reconnecter pour que l'appartenance au groupe prenne effet.


37
Je fais cela, en plus de quelques rebondissements: sudo adduser <username> www-data; sudo chgrp -R www-data /var/www; sudo chmod -R g+rw /var/www; find /var/www -type d -print0 | sudo xargs -0 chmod g+s déconnectez-vous et reconnectez-vous pour récupérer votre nouveau groupe. Je fais le chmod g+spour forcer les nouveaux fichiers et répertoires à récupérer le propriétaire du groupe (www-data), en s'assurant que les modifications apportées à mes autorisations se propagent.
Don Faulkner

15
@DonFaulkner Pour des raisons de sécurité, il est probablement préférable de garder la /var/wwwpropriété de root: root, alors au lieu de l' sudo chgrp -R www-data /var/wwwêtre sudo chgrp -R www-data /var/www/*.
Desmond Hume

2
Bizarrement, après avoir exécuté ces 3 commandes, certains de mes sous-dossiers et fichiers (comme composer.jsonet LICENSE) sont affichés à l’aide de l’icône binaire. Ouvrir composer.jsonun dans un éditeur de texte montre un fichier vierge et le pire, c'est que je ne peux pas non plus parcourir certains sous-dossiers. J'ai même essayé la commande supplémentaire suggérée par @DonFaulkner et toujours pas de chance. Si j'utilise le terminal en tant que root, tout est comme il se doit. Quelqu'un a une idée pourquoi cela se produit?
Alix Axel

5
@itsols vous devez vous déconnecter, puis vous connecter pour que cela fonctionne.
Jini

1
@DonFaulkner - Pouvez-vous expliquer en quoi le fait de posséder des fichiers appartenant à root pourrait être un vecteur d'attaque? (Je suis nouveau à tout cela et je suis confus, car certains semblent préconiser une approche de la sécurité fondée sur l’endroit par doute, tandis que d’autres disent catégoriquement que ce n’est pas le cas. )
Andrew Cheong

25

Vous le pouvez chown, c’est chl’un des ownfichiers de ce dossier. Cela vous permettra de changer l'utilisateur et le groupe du dossier, permettant ainsi à votre utilisateur d'ajouter / supprimer des fichiers dessus. Pour le faire, remplacez-le yourusernamepar votre nom et exécutez:

sudo chown yourusername.users /var/www

Et c'est tout.


Cependant, je préfère créer un hôte virtuel dans mon dossier personnel, c'est beaucoup plus facile.

En gros, cela vous permet d’utiliser n’importe quel dossier comme un dossier de serveur Apache. Pour montrer à quel point c'est simple, supposons que votre nom d'utilisateur est username et que le dossier que vous voulez servir est / home / username / www

Créez le fichier suivant (par exemple mywebprojects) dans / etc / apache2 / sistes-available en remplaçant le nom d'utilisateur et le chemin du dossier (il suffit de copier-coller et de remplacer dans #CHANGE HERE):

<VirtualHost *:80>
    ServerAdmin webmaster@localhost

    # CHANGE HERE
    DocumentRoot /home/username/www

    <Directory />
        Options FollowSymLinks
        AllowOverride None
    </Directory>

    # CHANGE HERE
    <Directory /home/username/www/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride None
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride None
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /var/log/apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

Nous allons maintenant créer le wwwdossier, ajouter un simple monde de salut, désactiver le site Web par défaut ( /var/www), activer notre site Web mywebprojectset redémarrer Apache.

mkdir ~/www 
echo "<html><h1>Hello World</h1></html>" > ~/www/test.html
sudo a2dissite default #
sudo a2ensite mywebprojects
sudo service apache2 restart

Et ça, maintenant vous n’avez plus besoin d’aller /var/www, vous ajoutez simplement des fichiers à votre www(ou à un autre prénom) et c’est déjà là :).


exactement ce que j'ai fait. Un avantage supplémentaire est que vous pouvez modifier le répertoire sur un lecteur partagé afin que tous les fichiers soient disponibles lors du démarrage sous Windows / OSX.
Jason

9

Méthode 1:

  • Appuyez sur ALT+ F2et entrez gksudo nautilus, puis cliquez sur Exécuter.

    texte alternatif

  • Il ouvrira le nautile avec des empreintes de racine.
  • Goto Filesystem var www et maintenant vous pouvez ajouter / copier / coller vos fichiers.

Méthode 2:

  • Installer Nautilus-Gksu Installer Nautilus-Gksu
  • Après l’installation, tapez nautilus -qsur votre terminal pour actualiser les menus contextuels.
  • Vous trouverez maintenant l'entrée "Ouvrir en tant qu'administrateur" dans le menu contextuel de votre nautile.
  • Lorsque vous devez ouvrir des fichiers avec l’autorisation root, il vous suffit de cliquer avec le bouton droit de la souris sur ce fichier / dossier et de sélectionner «Ouvrir en tant qu’administrateur».
  • Il ouvrira ce fichier / dossier avec la permission root.

    texte alternatif


1
C'est vraiment la bonne façon de faire! Je me demande pourquoi ce n’a pas été la réponse choisie. Les autres méthodes impliquent de jouer avec les autorisations et je ne risquerais pas mon système en le faisant. +1 pour votre réponse.
Itsols

5
@itsols: Je suis tout à fait en désaccord - vous risquez votre système en accordant à Nautilus un accès root complet à votre système de fichiers au lieu de configurer correctement les autorisations d'accès /var/www. Une simple pression accidentelle sur la [delete]clé peut vous amener à un système impossible à démarrer.
Nathan Osman

@ GeorgeEdison Mais ce n'est que pour définir l'autorisation. Et après cela, nous fermons le nautile et travaillons comme d’habitude. Est-ce vraiment si mauvais? Excusez-moi pour mon ignorance ici. Bien que je sois un utilisateur d’Ubuntu depuis la version 5.x, la mise en place d’une machine de développement me semble assez ardue et il ne semble pas y avoir de moyen
précis

@itsols: La deuxième partie de cette réponse est la méthode préférée et celle que j'utilise.
Nathan Osman

6

Cela pourrait être aussi simple que d' sudo usermod -a -G developers $usernameutiliser ACL.

Cela prend un peu de travail, cependant, pour commencer. Ceci est pour Ubuntu 10.10 au moins. Commencez par monter les systèmes de fichiers avec l'option acl dans / etc / fstab.

sudo vim /etc/fstab

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 par défaut, acl 0 1

sudo mount -o remount,acl /

Créez ensuite un groupe auquel un utilisateur peut appartenir à cette fin.

sudo groupadd developers
sudo usermod -a -G developers $username

L'utilisateur doit se déconnecter puis se reconnecter pour devenir membre du groupe de développeurs.

Bien sûr, ne le faites pas si vous avez le contenu souhaité dans le répertoire / var / www, mais juste pour illustrer sa configuration:

sudo rm -rf /var/www
sudo mkdir -p /var/www/public
sudo chown -R root:developers /var/www/public
sudo chmod 0775 /var/www/public
sudo chmod g+s /var/www/public
sudo setfacl -d -m u::rwx,g::rwx,o::r-x /var/www/public

Remplacez ensuite les références à "/ var / www" par "/ var / www / public" dans un fichier de configuration, puis rechargez.

sudo vim /etc/apache2/sites-enabled/000-default
sudo /etc/init.d/apache2 reload

Si nous voulions restreindre la suppression et le changement de nom de tous les utilisateurs sauf le créateur du fichier:

sudo chmod +t /var/www/public

De cette façon, si nous voulons créer des répertoires pour des frameworks qui existent en dehors de la racine du document Apache ou peut-être créer des répertoires accessibles en écriture au serveur, cela reste simple.

Répertoire de journaux en écriture Apache:

sudo mkdir /var/www/logs
sudo chgrp www-data /var/www/logs
sudo chmod 0770 /var/www/logs

Répertoire de la bibliothèque lisible par Apache:

sudo mkdir /var/www/lib
sudo chgrp www-data /var/www/logs
sudo chmod 0750 /var/www/logs

Pourriez-vous expliquer ce qui se passe avec la UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxligne? Est-il censé être ajouté littéralement ou voulez-vous que l'utilisateur trouve la ligne et modifie les options derrière?
MadMike

Pourquoi ne pas sauter le sudo rm -rf /var/www-Step. Cela ne semble pas vraiment nécessaire.
MadMike

@MadMike est censé être archivé avec des chiffres hexadécimaux. Pour savoir ce que vos différentes partitions sont étiquetés, exécutezsudo blkid
Azendale

1
@ Azendale Lorsque j'ai écrit ce commentaire, il s'agissait d'une suggestion visant à améliorer la réponse. Aujourd'hui, je sais que je devrais suggérer cela beaucoup plus directement. Comme: Veuillez ajouter comment remplir la UUID=xxxxpartie, comme avec un sudo blkid.
MadMike

0

La meilleure façon de faire est de suivre les étapes ci-dessous: -

  1. Appuyez sur Alt+ Ctrl+ Tet le terminal s'ouvrira, tapez sudo -set connectez-vous avec votre mot de passe.
  2. Maintenant, vous êtes connecté en tant que root.
  3. Maintenant, tapez nautiluset il ouvrira le dossier personnel pour vous en tant que root. Alors maintenant, vous pouvez facilement éditer les fichiers et faire ce que vous voulez.

J'espère que cela t'aides. :)


1
Pour obtenir un shell root adapté à l'exécution d'applications graphiques telles que Nautilus, il sudo -iest préférable que, sudo -spour la même raison, il sudo -Hsoit préférable d' sudoexécuter une seule application graphique. ( sudo -sne se réinitialise pas HOME, l'utilisateur peut donc trouver dans son répertoire personnel des fichiers de configuration qui devraient lui appartenir mais appartenir à la racine .)
Eliah Kagan

Je déconseille fortement d'utiliser le compte root, en particulier sur les serveurs. sudo fournit des contrôles d'accès plus qu'adéquats tout en permettant à l'administrateur système de définir une politique garantissant que les développeurs et les concepteurs ne reçoivent pas d'arme de poing pour tirer leur propre pied (et leurs entreprises!)
Shayne

0

/var/www folderest la propriété de la racine .. vous devez changer la propriété en votre propre nom d'utilisateur pour modifier les fichiers de ce dossier. Pour cela, vous pouvez essayer les commandes suivantes.

sudo -i // changer en console root

sudo chown -R <username> <path> // for eg. sudo chown -R scott /var/www/html (scott is the username, -R indicates recrusive)

Maintenant, la propriété du dossier doit /var/www/html willêtre attribuée à l'utilisateur scott. Maintenant, Scott peut copier / déplacer des fichiers dans ce dossier.


-1

Si vous utilisez la version du serveur, essayez Webmin. Il a une excellente interface utilisateur Web et un gestionnaire de fichiers. Soit ça ou Filezilla


4
Pouvez-vous expliquer "Si vous utilisez la version du serveur"? Tout paquet pouvant être installé sur Ubuntu Server peut être installé sur la version de bureau d'Ubuntu.
Eliah Kagan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.