Qual è il modo più semplice per modificare e aggiungere file a “/ var / www”?


145

Dopo aver installato il web server esiste un modo semplice per impostare un utente in grado di utilizzare l'interfaccia grafica per copiare file e directory sul server web locale / var / www

Mi sono concesso i privilegi di amministratore in Ubuntu ma non ne consento ancora le copie.




Ho provato a fare quello che ha detto Marcos Roriz Junior. Ho copiato e incollato quando Marcos ha scritto e cambiato il nome utente con il mio nome utente. Ma non posso salvarlo in / etc / apache2 / sites-available perché non mi permetterà di salvare in quella cartella. ???

Risposte:


222

Se rendi / var / www scrivibile dal suo gruppo e aggiungi l'utente al gruppo, quell'utente non dovrà usare sudo. Prova questo:

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

L'utente dovrebbe quindi essere in grado di modificare i file / var / www / senza problemi.

La prima riga aggiunge l'utente al gruppo www-data, la seconda riga cancella tutti i file con la proprietà incasinata e la terza lo fa in modo che tutti gli utenti membri del gruppo www-data possano leggere e scrivere tutti i file in / var / www.

Se si è effettuato l'accesso in quanto <username>è necessario disconnettersi e riconnettersi per rendere effettiva l'appartenenza al gruppo.


37
Faccio questo, oltre ad alcuni colpi di scena: 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 disconnettiti e accedi di nuovo per raccogliere il tuo nuovo gruppo. Faccio il possibile chmod g+sper forzare nuovi file e directory a prelevare il proprietario del gruppo (www-data), assicurandomi che le mie autorizzazioni si propaghino.
Don Faulkner,

15
@DonFaulkner Per motivi di sicurezza, probabilmente è meglio mantenere la /var/wwwproprietà di root: root, quindi invece di sudo chgrp -R www-data /var/wwwessere meglio sudo chgrp -R www-data /var/www/*.
Desmond Hume,

2
Stranamente, dopo aver eseguito quei 3 comandi, alcune delle mie sottocartelle e file (come composer.jsone LICENSE) vengono visualizzati usando l'icona binaria. L'apertura di composer.jsonin un editor di testo mostra un file vuoto e la cosa peggiore è che non riesco nemmeno a sfogliare alcune delle sottocartelle, ho anche provato il comando aggiuntivo come suggerito da @DonFaulkner e ancora senza fortuna. Se uso il terminale come root tutto è come dovrebbe essere. Qualcuno ha qualche idea sul perché questo accada?
Alix Axel,

5
@itsols devi disconnetterti e poi accedere per farlo funzionare.
jini,

1
@DonFaulkner - Ti dispiacerebbe approfondire come avere file di proprietà di root potrebbe essere un vettore di attacco? (Sono nuovo in tutto questo, e sono confuso perché alcuni sembrano sostenere un approccio alla sicurezza incerto, in base alla radice, mentre altri affermano categoricamente di non possedere per radice. )
Andrew Cheong,

25

Puoi farlo chown, cioè chl' owner di quella cartella. Ciò ti consentirà di modificare l'utente e il gruppo della cartella, consentendo all'utente di aggiungere / rimuovere file su di essa. Per farlo, sostituiscilo yourusernamecon il tuo nome ed esegui:

sudo chown yourusername.users /var/www

E questo è tutto.


Tuttavia, preferisco creare un host virtuale nella mia cartella home, è molto più semplice.

Fondamentalmente ti consente di utilizzare qualsiasi cartella come cartella di servizio apache. Per mostrarlo come semplice, supponiamo che il tuo nome utente sia username e che la cartella che vuoi servire sia / home / username / www

Crea il seguente file (ad esempio mywebprojects) in / etc / apache2 / sistes-available sostituendo il nome utente e il percorso della cartella (in pratica basta copiare e incollare e sostituire in # CHANGE QUI):

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

Ora consente di creare la wwwcartella, aggiungere un semplice mondo ciao, disabilitare il sito Web predefinito ( /var/www), abilitare il nostro sito Web mywebprojectse riavviare apache.

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

E che, ora non è necessario andare a /var/www, semplicemente aggiungi i file al tuo www(o altro nome) ed è già lì :).


esattamente quello che ho fatto. Un altro vantaggio è che puoi cambiare la directory in un'unità condivisa in modo che tutti i file siano disponibili quando avviati in Windows / OSX.
Jason,

9

Metodo 1:

  • Premi ALT+ F2e inserisci gksudo nautilus, quindi fai clic su Esegui.

    testo alternativo

  • Si aprirà nautilus con precedenti di radice.
  • Vai al filesystem var www e ora puoi aggiungere / copiare / incollare i tuoi file.

Metodo 2:

  • Installa nautilus-gksu Installa nautilus-gksu
  • Dopo aver installato digita il nautilus -qtuo terminale per aggiornare i menu del tasto destro.
  • Ora troverai la voce "Apri come amministratore" nel menu di scelta rapida di nautilus.
  • Quando devi aprire qualsiasi file con il permesso di root, devi semplicemente fare clic con il tasto destro su quel file / cartella e selezionare 'Apri come amministratore'.
  • Aprirà quel file / cartella con il permesso di root.

    testo alternativo


1
Questo è sicuramente il modo giusto di andare! Mi chiedo perché questa non sia stata la risposta selezionata. Gli altri metodi comportano un pasticcio con le autorizzazioni e non rischierei il mio sistema. +1 per la tua risposta.
itsols,

5
@itsols: Non sono completamente d'accordo: rischi il tuo sistema concedendo a Nautilus l'accesso root completo al tuo filesystem invece di configurare correttamente le autorizzazioni per consentire l'accesso /var/www. Una pressione accidentale della [delete]chiave e potresti finire con un sistema non avviabile.
Nathan Osman,

@GeorgeEdison Ma questo è solo per impostare il permesso. E dopo ciò, chiudiamo nautilus e lavoriamo come al solito. È davvero così male? Mi scusi per la mia ignoranza qui. Nonostante sia un utente di Ubuntu dalla versione 5.x, trovo ancora difficile configurare una macchina di sviluppo e non sembra esserci un modo chiaro per farlo (per me, almeno ...
itsols,

@itsols: la seconda parte di questa risposta è il metodo preferito ed è quello che uso.
Nathan Osman,

6

Potrebbe essere semplice come sudo usermod -a -G developers $usernameusare ACL.

Tuttavia, ci vuole un po 'di lavoro per iniziare. Questo è almeno per Ubuntu 10.10. Innanzitutto montare i file system con l'opzione acl in / etc / fstab.

sudo vim /etc/fstab

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

sudo mount -o remount,acl /

Quindi creare un gruppo al quale un utente può appartenere a questo scopo.

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

L'utente deve disconnettersi e riconnettersi per diventare un membro del gruppo di sviluppatori.

Ovviamente, non farlo se hai contenuto nella directory / var / www che desideri, ma solo per illustrare come configurarlo per iniziare:

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

Quindi sostituire i riferimenti a "/ var / www" con "/ var / www / public" in un file di configurazione e ricaricare.

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

Se volessimo limitare l'eliminazione e la ridenominazione da tutti tranne l'utente che ha creato il file:

sudo chmod +t /var/www/public

In questo modo, se vogliamo creare directory per framework esistenti al di fuori della radice del documento Apache o magari creare directory scrivibili sul server, è ancora facile.

Directory dei log scrivibili da Apache:

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

Directory della libreria leggibile da Apache:

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

Potresti spiegare cosa succede con la linea UUID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx? È pensato per essere aggiunto letteralmente o desidera che l'utente trovi la linea e modifichi le opzioni dietro?
MadMike,

Perché non salti il sudo rm -rf /var/wwwpasso. Non sembra davvero necessario.
MadMike,

@MadMike è pensato per essere archiviato con cifre esadecimali. Per scoprire quali sono le tue varie partizioni etichettate, eseguisudo blkid
Azendale l'

1
@Azendale Quando ho scritto il commento era inteso come un suggerimento su come migliorare la risposta. Oggi so che dovrei suggerire questo molto più direttamente. Mi piace: aggiungi come riempire la UUID=xxxxparte come con a sudo blkid.
MadMike,

0

Il modo più semplice per farlo è seguire i passaggi indicati di seguito: -

  1. Premi Alt+ Ctrl+ Te il terminale si aprirà e digiterà sudo -se accedi con la tua password.
  2. Ora hai effettuato l'accesso come root.
  3. Ora digita nautiluse si aprirà la cartella principale per te come root. Quindi ora puoi facilmente modificare i file e fare quello che vuoi.

Spero che sia di aiuto. :)


1
Per ottenere una shell radice adatta per l'esecuzione di applicazioni grafiche come Nautilus, sudo -iè preferibile sudo -sper lo stesso motivo sudo -Hè preferibile sudoper l'esecuzione di una singola app grafica. ( sudo -snon si reimposta HOME, quindi l'utente potrebbe ottenere i file di configurazione nella loro home directory che dovrebbero appartenere a loro ma appartengono invece al root .)
Eliah Kagan

Sconsiglio vivamente di utilizzare l'account di root, soprattutto sui server. sudo fornisce controlli di accesso più che adeguati, consentendo allo stesso tempo al sysadmin di elaborare una politica per garantire che gli sviluppatori e i progettisti non ricevano una pistola per sparare ai propri (e alle loro aziende!) piede
Shayne

0

/var/www folderè di proprietà del root .. devi cambiare la proprietà con il tuo nome utente per modificare i file in questa cartella. Per questo puoi provare i seguenti comandi.

sudo -i // per passare alla console di root

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

Ora la proprietà della cartella deve /var/www/html willessere assegnata all'utente scott. Ora scott può copiare / spostare i file in questa cartella.


-1

Se stai utilizzando la versione del server, prova webmin. Ha una grande interfaccia utente Web e file manager. O quello o Filezilla


4
Puoi spiegare "Se stai usando la versione del server"? Qualsiasi pacchetto che può essere installato su Ubuntu Server può essere installato sulla versione desktop di Ubuntu.
Eliah Kagan,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.