Was ist der einfachste Weg, um Dateien in „/ var / www“ zu bearbeiten und hinzuzufügen?

145

Nach der Installation des Webservers können Sie auf einfache Weise festlegen, dass ein Benutzer über die grafische Oberfläche Dateien und Verzeichnisse auf den lokalen Webserver / var / www kopieren kann

Ich habe mir Administratorrechte in Ubuntu gegeben, aber es sind immer noch keine Kopien erlaubt.

k_graham
quelle
Siehe auch
Marco Ceppi
Ich habe versucht, das zu tun, was Marcos Roriz Junior gesagt hat. Ich habe kopiert und eingefügt, als Marcos den Benutzernamen in meinen Benutzernamen geändert hat. Ich kann es jedoch nicht in / etc / apache2 / sites-available speichern, da ich es nicht in diesem Ordner speichern kann. ???

Antworten:

222

Wenn Sie / var / www für seine Gruppe schreibbar machen und den Benutzer der Gruppe hinzufügen, muss dieser Benutzer sudo nicht verwenden. Versuche dies:

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

Der Benutzer sollte dann in der Lage sein, / var / www / files problemlos zu bearbeiten.

In der ersten Zeile wird der Benutzer der Gruppe www-data hinzugefügt, in der zweiten Zeile werden alle Dateien mit fehlerhaftem Besitz gelöscht und in der dritten Zeile werden alle Benutzer, die Mitglieder der Gruppe www-data sind, zum Lesen und Schreiben aller Dateien aufgefordert / var / www.

Wenn Sie angemeldet sind <username>, müssen Sie sich abmelden und erneut anmelden, damit die Gruppenmitgliedschaft wirksam wird.

Azendale
quelle
37
Ich mache das, plus ein paar Drehungen: 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 Logge dich aus und wieder ein, um deine neue Gruppe aufzunehmen. Ich tue das chmod g+s, um neue Dateien und Verzeichnisse zu zwingen, den Gruppeneigentümer (www-data) abzuholen und sicherzustellen, dass sich meine Berechtigungsänderungen verbreiten.
Don Faulkner
15
@DonFaulkner Aus Sicherheitsgründen ist es wahrscheinlich besser, /var/wwwim Besitz von root: root zu sudo chgrp -R www-data /var/wwwbleiben sudo chgrp -R www-data /var/www/*.
Desmond Hume
2
Seltsamerweise werden nach dem Ausführen dieser 3 Befehle einige meiner Unterordner und Dateien (wie composer.jsonund LICENSE) mit dem Binärsymbol angezeigt. Das Öffnen composer.jsonin einem Texteditor zeigt eine leere Datei und das Schlimmste ist, dass ich auch einige Unterordner nicht durchsuchen kann. Ich habe sogar den zusätzlichen Befehl ausprobiert, der von @DonFaulkner vorgeschlagen wurde, und immer noch kein Glück. Wenn ich das Terminal als root benutze, ist alles so, wie es sein sollte. Hat jemand eine Idee warum das passiert?
Alix Axel
5
@itsols Sie müssen sich abmelden und dann anmelden, damit es funktioniert.
Jini
1
@DonFaulkner - Würde es Ihnen etwas ausmachen, darüber nachzudenken, wie ein Angriffsvektor sein könnte, wenn Dateien im Besitz von root sind? (Ich bin neu in all dem, und ich bin verwirrt, weil einige einen zweifelhaften, von der Wurzel abhängigen Ansatz zur Sicherheit befürworten, während andere unerbittlich sagen, nicht von der Wurzel zu besitzen. )
Andrew Cheong
25

Du kannst chown, das ist change der owner dieses Ordners. Auf diese Weise können Sie den Benutzer und die Gruppe des Ordners ändern und Ihrem Benutzer das Hinzufügen / Entfernen von Dateien ermöglichen. Ersetzen Sie dazu yourusernamedurch Ihren Namen und führen Sie Folgendes aus:

sudo chown yourusername.users /var/www

Und das ist es.


Ich bevorzuge es jedoch, einen virtuellen Host in meinem Ausgangsordner zu erstellen, es ist viel einfacher.

Grundsätzlich können Sie jeden Ordner als Apache-Serving-Ordner verwenden. Um zu zeigen , wie sie es einfach, lässt vermuten , dass Ihr Benutzername ist Benutzername und dass der Ordner, den Sie dienen wollen , ist / home / username / www

Erstellen Sie die folgende Datei (zum Beispiel mywebprojects) in / etc / apache2 / sistes-available, indem Sie den Benutzernamen und den Ordnerpfad ersetzen (im Grunde genommen kopieren und einfügen und in #CHANGE HERE ersetzen):

<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>

Jetzt können Sie den wwwOrdner erstellen , eine einfache Hallo-Welt hinzufügen, die Standard-Website deaktivieren ( /var/www), unsere Website aktivieren mywebprojectsund Apache neu starten.

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

Und dass es, jetzt musst du nicht mehr gehen /var/www, du wwwfügst einfach Dateien zu deinem (oder einem anderen gegebenen Namen) hinzu und es ist schon da :).

Marcos Roriz Junior
quelle
genau das, was ich getan habe. Ein Pluspunkt hierfür ist, dass Sie das Verzeichnis in ein freigegebenes Laufwerk ändern können, damit alle Dateien beim Booten unter Windows / OSX verfügbar sind.
Jason
9

Methode 1:

  • Drücken Sie ALT+ F2und geben Sie sudo nautilus und dann auf Ausführen.

    Alt-Text

  • Es öffnet Nautilus mit Root-Berechtigungen.
  • Gehe zu Dateisystem var www und jetzt kannst du deine Dateien hinzufügen / kopieren / einfügen.

Methode 2:

  • Installieren Sie nautilus-gksu Installieren Sie nautilus-gksu
  • Geben nautilus -qSie nach der Installation Ihr Terminal ein, um die Kontextmenüs zu aktualisieren.
  • Jetzt finden Sie in Ihrem Nautilus-Kontextmenü den Eintrag "Als Administrator öffnen".
  • Wenn Sie Dateien mit Root-Berechtigung öffnen möchten, müssen Sie nur mit der rechten Maustaste auf diese Datei / diesen Ordner klicken und "Als Administrator öffnen" auswählen.
  • Die Datei / der Ordner wird mit Root-Berechtigung geöffnet.

    Alt-Text

karthick87
quelle
1
Das ist definitiv der richtige Weg! Ich frage mich, warum dies nicht die gewählte Antwort war. Die anderen Methoden beinhalten das Durcheinander mit den Berechtigungen und ich würde mein System dadurch nicht gefährden. +1 für deine Antwort.
itsols
5
@itsols: Ich bin völlig anderer Meinung - Sie riskieren Ihr System, indem Sie Nautilus vollständigen Root-Zugriff auf Ihr Dateisystem gewähren, anstatt die Berechtigungen für den Zugriff richtig zu konfigurieren /var/www. Ein versehentliches Drücken der [delete]Taste und Sie könnten mit einem nicht bootfähigen System enden.
Nathan Osman
@GeorgeEdison Dies dient aber nur zum Festlegen der Berechtigung. Und nachdem dies erledigt ist, schließen wir Nautilus und arbeiten wie gewohnt. Ist das wirklich so schlimm? Entschuldigen Sie meine Unwissenheit hier. Obwohl ich seit Version 5.x Ubuntu-Benutzer bin, finde ich das Einrichten einer Entwicklungsmaschine immer noch ziemlich schwierig, und es scheint keine eindeutige Möglichkeit zu geben, dies zu tun (zumindest für mich ...
itsols 15.10.12
@itsols: Der zweite Teil dieser Antwort ist die bevorzugte und von mir verwendete Methode.
Nathan Osman
6

Es könnte so einfach sein wie die sudo usermod -a -G developers $usernameVerwendung von ACL.

Das erfordert allerdings ein wenig Arbeit. Dies ist mindestens für Ubuntu 10.10. Hängen Sie zuerst die Dateisysteme mit der Option acl in / etc / fstab ein.

sudo vim /etc/fstab

UUID = xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx / ext4 Standard, acl 0 1

sudo mount -o remount,acl /

Bilden Sie dann eine Gruppe, zu der ein Benutzer zu diesem Zweck gehören kann.

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

Der Benutzer muss sich abmelden und erneut anmelden, um Mitglied der Entwicklergruppe zu werden.

Tun Sie dies natürlich nicht, wenn Sie Inhalte im Verzeichnis / var / www haben, die Sie möchten, sondern nur, um die Einrichtung zu veranschaulichen:

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

Ersetzen Sie dann die Verweise auf "/ var / www" durch "/ var / www / public" in einer Konfigurationsdatei und laden Sie sie erneut.

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

Wenn wir das Löschen und Umbenennen von allen Benutzern außer dem Benutzer, der die Datei erstellt hat, einschränken möchten:

sudo chmod +t /var/www/public

Auf diese Weise ist es immer noch einfach, Verzeichnisse für Frameworks zu erstellen, die außerhalb des Apache-Dokumentenstamms existieren, oder von Servern beschreibbare Verzeichnisse.

Mit Apache beschreibbares Protokollverzeichnis:

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

Apache-lesbares Bibliotheksverzeichnis:

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

quelle
Können Sie erklären, was mit der UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx-Line los ist? Soll es wörtlich hinzugefügt werden oder soll der Benutzer die Zeile finden und die Optionen dahinter bearbeiten?
MadMike
Warum überspringst du nicht den sudo rm -rf /var/www-Schritt? Es scheint nicht wirklich notwendig.
MadMike
@MadMike soll mit hexadezimalen Ziffern abgelegt werden. Um herauszufinden, wie Ihre verschiedenen Partitionen beschriftet sind, führen Siesudo blkid
Azendale
1
@ Azendale Als ich den Kommentar schrieb, war er als Vorschlag gedacht, wie man die Antwort verbessern kann. Heute weiß ich, dass ich dies viel direkter vorschlagen sollte. Like: Bitte fügen Sie hinzu, wie der UUID=xxxx-Part mit einem gefüllt werden soll sudo blkid.
MadMike
0

Am einfachsten ist es, die folgenden Schritte auszuführen:

  1. Drücken Sie Alt+ Ctrl+ Tund das Terminal öffnet sich und tippt sudo -sund meldet sich mit Ihrem Passwort an.
  2. Jetzt bist du angemeldet als root.
  3. Geben nautilusSie nun ein und es öffnet sich der Home-Ordner für Sie als root. Jetzt können Sie die Dateien ganz einfach bearbeiten und tun, was Sie wollen.

Hoffe das hilft. :)

Mitayshh Dhaggai
quelle
1
Um eine Root-Shell zu erhalten, die für das Ausführen von grafischen Anwendungen wie Nautilus geeignet sudo -iist , ist dies sudo -sdem gleichen Grund sudo -Hvorzuziehen wie dem sudoAusführen einer einzelnen grafischen App. ( sudo -sWird nicht zurückgesetzt HOME, sodass der Benutzer möglicherweise Konfigurationsdateien in seinem Ausgangsverzeichnis erhält, die zu ihnen gehören sollten, stattdessen aber zu root gehören .)
Eliah Kagan,
Ich rate dringend davon ab, das Root-Konto zu verwenden, insbesondere auf Servern. sudo bietet mehr als angemessene Zugriffskontrollen, während der Systemadministrator Richtlinien erstellen kann, um sicherzustellen, dass Entwicklern und Designern keine Pistole ausgehändigt wird, mit der sie ihren eigenen (und ihren Firmen!) Fuß abschießen können
Shayne,
0

/var/www foldergehört dem root-Benutzer. Sie müssen den Eigentümer in Ihren eigenen Benutzernamen ändern, um die Dateien in diesem Ordner zu ändern. Hierzu können Sie die folgenden Befehle versuchen.

sudo -i // zur Root-Konsole wechseln

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

Nun /var/www/html willkann dem Benutzer der Besitz des Ordners zugewiesen werden scott. Jetzt kann scott Dateien in diesen Ordner kopieren / verschieben.

Anoop
quelle
-1

Wenn Sie die Serverversion verwenden, versuchen Sie es mit webmin. Es hat eine großartige Web-Benutzeroberfläche und einen Dateimanager. Entweder das oder Filezilla

John Hallquist
quelle
4
Können Sie erklären, "Wenn Sie die Serverversion verwenden"? Jedes Paket, das auf Ubuntu Server installiert werden kann, kann auf der Desktop-Version von Ubuntu installiert werden.
Eliah Kagan