Come posso dare l'accesso in scrittura di una cartella a tutti gli utenti in linux?


191

Ho installato apache2 su Ubuntu proprio ora e ho notato che la cartella / var / www è protetta. Posso proprio sudotutto ma preferirei solo dargli accesso in scrittura.

Come posso fare questo?

Ci ho provato sudo chmod 7777 /var/wwwma non ha funzionato.


È un server accessibile pubblicamente o non ha una connessione diretta a Internet? Se il primo è importante prendere in considerazione le decisioni di sicurezza, i server su Internet sono costantemente sotto attacco (dai un'occhiata ai tuoi / var / log / messaggi o equivalenti).
Kwutchak,

questo è solo il mio laptop, non è accessibile da internet.
Carson Myers il

Risposte:


321

Per condividere al meglio con più utenti che dovrebbero essere in grado di scrivere /var/www, dovrebbe essere assegnato un gruppo comune. Ad esempio, il gruppo predefinito per i contenuti Web su Ubuntu e Debian è www-data. Assicurarsi che tutti gli utenti per i quali è necessario l'accesso in scrittura /var/wwwappartengano a questo gruppo.

sudo usermod -a -G www-data <some_user>

Quindi impostare le autorizzazioni corrette su / var / www.

sudo chgrp -R www-data /var/www
sudo chmod -R g+w /var/www

Inoltre, è necessario impostare la directory e tutte le directory sottostanti "imposta GID", in modo che tutti i nuovi file e directory creati in /var/wwwsiano di proprietà del www-datagruppo.

sudo find /var/www -type d -exec chmod 2775 {} \;    

Trova tutti i file /var/wwwe aggiungi le autorizzazioni di lettura e scrittura per il proprietario e il gruppo:

sudo find /var/www -type f -exec chmod ug+rw {} \;

Potrebbe essere necessario disconnettersi e riconnettersi per poter apportare modifiche se si sta modificando l'autorizzazione per il proprio account.


2
è piuttosto noioso ... Non posso semplicemente consentire agli utenti di accedervi, come se fosse un'altra cartella?
Carson Myers il

9
Questo è il modo si dà l'accesso ad essa. È più veloce copiare e incollare i comandi piuttosto che provare a navigare attraverso le finestre di dialogo di un file manager della GUI per fare la stessa cosa. A lungo termine ti aiuta se leggi le pagine di manuale per chmod e chgrp, almeno ("man chmod").
jtimberman,

forse non ho capito i comandi la prima volta che l'ho letto e la tua modifica lo rende molto più chiaro.
Carson Myers il

1
+1 per guid per forzare le autorizzazioni di Apache. funziona bene con umask di 027. Se qualcosa ha bisogno di accesso in scrittura, è facile come chmod g + w dir /
LiraNuna

1
Perché il comando di autorizzazione del tuo gruppo è sudo chmod -R g+wno g+rwo no g+rwX?
Detly

31

C'è un modo più semplice per farlo, prova a fare questo comando.

sudo chmod -R 757 /var/www

In sostanza, il chmodcomando modifica le autorizzazioni e l' -Ropzione influisce su tutti gli utenti. Quindi sta semplicemente dando le autorizzazioni corrette da usare.


3
Potresti dare qualche idea su cosa fa il comando per l'OP?
n0pe

11
-1 per mancanza di spiegazione. Inoltre, chmod $permissions -R $filenon è valido ...
Blacklight Shining il

1
sono opzioni quindi permessi non il contrario
Moataz Elmasry,

2
sudo chmod -R 757 /var/www
Bwyss,

per favore qualcuno con esperienza suggerisce una modifica con una breve spiegazione al riguardo.
Adi Prasetyo,

29

Read + Write:

sudo chmod -R a+rw /var/www

Leggere + Scrivere + Execute:

sudo chmod -R a+rwx /var/www

7

Puoi anche replicare ciò che jtimberman ha suggerito usando le liste di controllo degli accessi . Il comando setfacl accetta -s per sostituire un ACL esistente o -m per modificarlo; -R per rendere ricorsivi gli ACL di directory; e -d per rendere predefinite le impostazioni specificate, il che è utile se stai anticipando i prossimi account utente.

Questi semplicemente impostano le autorizzazioni come faresti per l'utente, il gruppo, l'altro e la maschera usando chmod:

setfacl -m u::rwx, g::r-x, o::---, m:rwx DIRECTORY

E questo potrebbe essere il modo in cui lo faresti per un utente specificato o il suo gruppo:

setfacl -m u:USERNAME:rwx, g:USERNAME:r-x DIRECTORY

E, naturalmente, il punto di forza è che puoi designare qualsiasi utente specifico, più utenti, ecc., Il tutto senza dover modificare le impostazioni del tuo gruppo. E a differenza di chmod, se si desidera che alcuni groupie abbiano accesso a una directory e altri groupies abbiano accesso solo a un'altra, in realtà è possibile con setfacl. Infine, per visualizzare gli ACL di una directory, esegui getfacl :

getfacl DIRECTORY

E puoi specificare -R per vedere gli ACL per le sottodirectory o -d per vedere i valori predefiniti.


2

La risposta semplice e veloce -

un. Aggiungi ( -a ) il tuo utente ( user_name ) al gruppo ( -G ) www-data .

sudo usermod -a -G www-data user_name

b. Assegna al gruppo ( g ) le stesse ( = ) autorizzazioni dell'utente proprietario ( u ) di / var / www ricorsivamente ( -R ).

sudo chmod -R g=u /var/www

Spiegazione: Apache 2 su Debian / Ubuntu imposta i dati www dell'utente e del gruppo come proprietario di / var / www . Le autorizzazioni predefinite per l'utente sono "Visualizza e modifica contenuto", tuttavia il gruppo può solo "Visualizza contenuto". Quindi aggiungersi al gruppo www-data e assegnargli le stesse autorizzazioni dell'utente wwww-data è un modo rapido e semplice per sviluppare. Lo faccio per tutti i miei ambienti di sviluppo Web localhost (PC / Laptop).


1

Uso in genere

chmod g+w /folder/ -R

È quasi autoesplicativo.

Aggiunge che tutti nel group di /folder/avere write access ( +w), -Rè per la ricorsione per le sottocartelle.


-3

Puoi solo provare chmod 0777 /var/www?

Un avvertimento: se si consente a tutti di accedere a questa cartella, ciò significa che gli hacker possono accedere a questa cartella se ottengono l'accesso al proprio sistema. Ecco perché è meglio creare un gruppo di utenti consentiti e dare a quel gruppo l'accesso in scrittura.


quindi perché offrire questo come soluzione e poi screditarlo immediatamente? -1 voto
Tisch

-3

Prima inserisci il percorso specifico della cartella, quindi usa questo comando ...

chmod -R 777 foldername
chown username:username foldername 

7
Caspita! Non dai un 777 con un -R, specialmente se la persona che pone la domanda è un principiante e non comprende i rischi.
Ripristina il

Abbastanza vero @recluze.
vgoff,
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.