GNU/Linux >> Linux Esercitazione >  >> Linux

Apache non può accedere al file mentre ha l'autorizzazione?

Non voglio consentire ad altri l'accesso in lettura, quindi ho aggiunto il mio utente e apache utente a un gruppo chiamato apachme e quindi imposta quel gruppo su tutti i file e le cartelle che voglio apache a cui accedere, inclusa la radice della pagina web. Ho quindi concesso al gruppo e al proprietario tutte le autorizzazioni. Dopo questo Apache non può ancora accedere ai file senza impostare l'autorizzazione di lettura per consentire tutto(rwxrwxr--(0774) ).

La cartella che contiene il file di indice, è di proprietà di apache con il gruppo apachme e le autorizzazioni rwxrwxr-x(0775)

con questo ottengo un errore 500, cambiandolo in 0774 lo farà funzionare bene

Questi dove solo per confermare in quale utente apache era in esecuzione e che era stato aggiunto al gruppo.

Risposta accettata:

Dal punto di vista della sicurezza, non è proprio una buona idea impostare pagine web con lo stesso utente di Apache. L'utente Apache dovrebbe essere in grado di leggere le pagine web, ma non di scriverci.

Pertanto, nella configurazione standard, è normale che le strutture web siano leggibili da tutti e, quando è necessario scrivere, normalmente siano scrivibili dall'utente Apache, il che è un incubo per la sicurezza.

Una delle strategie per evitarlo è l'installazione/l'utilizzo di mod_ruid2. https://github.com/mind04/mod-ruid2

Per quanto riguarda Debian, basta fare:

apt-get install libapache2-mod-ruid2

Si prega di notare che l'utente predefinito di Apache varia con la distribuzione. In Debian è www-data, in RH/CentOS è apache e in SuSE è wwwrun. Lo chiamerò d'ora in poi come l'utente predefinito di Apache.

Se non definisci alcuna direttiva in un vhost, si comporterà in modo tradizionale; in caso contrario il comportamento verrà modificato.

L'idea è avere un processo in esecuzione nel vhost con l'utente che ha i diritti sul vhost e, in quanto tale, i file avranno quella proprietà e, come desideri, gli altri utenti non saranno in grado di leggerli. Normalmente definisci un utente per vhost.

Nelle direttive Virtualhost o Directory in un vhost, definisci l'utente e il gruppo che saranno attivi per quella directory. L'utente:gruppoutente è quello che saranno i permessi effettivi che Apache utilizzerà per accedere all'host/directory virtuale e, in quanto tale, qualsiasi utente che appartiene a quel gruppo sarà in grado di scrivere/vedere le directory.

    <Directory "/vhostdir/">
            RMode config
            RUidGid user usergroup

    ....

Pertanto, durante la scrittura delle directory, ora i file possono essere creati come 660 con la proprietà di user:usergroup se sono gestiti da un gruppo di utenti. Allo stesso modo, i file possono essere creati anche da un altro utente con i permessi di lettura per il mondo; tuttavia per la scrittura, non sarà l'utente predefinito di Apache, ma piuttosto questo altro utente.

I vantaggi di mod_ruid2 sono quindi:

  • in un ambiente residenziale di hosting virtuale, gli utenti non possono leggere i file di altri utenti;
  • in un singolo utente, puoi ancora creare file come un altro utente, e né l'utente predefinito di Apache, né l'utente ruid2 potranno sovrascriverli
  • ancora più importante, i file scritti verranno ora eseguiti con l'utente ruid2 e non più globalmente con l'utente predefinito di Apache.
Correlati:Centos – Come ridurre il filesystem di root senza avviare un livecd?

Dalla pagina di github:

INFORMAZIONI su mod_ruid2 è un modulo suexec per apache 2.0, 2.2 e 2.4, basato
su mod_ruid e mod_suid2

-funziona solo su Linux perché solo il kernel Linux ha implementato le capacità di processo richieste.
-ha prestazioni migliori di mod_suid2 perché non ha bisogno di uccidere i bambini httpd dopo una richiesta. fa uso delle funzionalità del kernel
e dopo aver ricevuto una nuova richiesta suide di nuovo.
-ci sono alcuni problemi di sicurezza, ad esempio se l'attaccante sfrutta con successo il processo httpd, può impostare capacità efficaci e
setuid a root. consiglio di usare alcune patch di sicurezza nel kernel
(grsec), o qualcosa del genere..

-ci sono due modalità operative principali:stat e config
1. config è predefinito, è necessario definire uid e gid. Se non viene definito [ug]id, vengono utilizzati l'utente e il gruppo predefiniti.

  1. stat httpd setuid e setgid to uid e gid del nome file(script)/directory richiesto questo va bene se usi mod_vhost_alias
    per l'hosting virtuale

INSTALLA
1. scarica e installa l'ultima libcap da qui
2. esegui /apachedir/bin/apxs -a -i -l cap -c mod_ruid2.c
3. configura httpd.conf
4. riavvia Apache

OPZIONI DI CONFIGURAZIONE:RMode config|stat (l'impostazione predefinita è config) RUidGid
user|#uid group|#gid – quando RMode è config, imposta questo uid e gid

Utente RMinUidGid|#uid group|#gid – quando uid/gid è impostato su uid/gid predefinito Utente RDefaultUidGid|#uid group|#gid

RGroups gruppo1 gruppo2 – gruppi aggiuntivi impostati tramite setgroups @none –
cancella tutti i gruppi definiti in precedenza.

RDocumentChrRoot – Imposta la directory chroot e la radice del documento all'interno

ESEMPIO:

<VirtualHost example.com>    
ServerAdmin [email protected]    
RDocumentChRoot /home /example.com/public_html    
ServerName     example.com    
ServerAlias    www.example.com    
RMode          config     # unnecessary since config is the default    
RUidGid        user1 group1    
RGroups        apachetmp

<Directory /home/example.com/public_html/dir>
   RMode stat    </Directory>

<Directory /home/example.com/public_html/dir/test>
   RMode config
   RUidGid user2 group2
   RGroups groups1    </Directory>

<Directory /home/example.com/public_html/dir/test/123>
   RUidGid user3 group3    </Directory>

<Location /yustadir>
   RMode config
   RUidGid user4 user4
   RGroups groups4    </Location>


Linux
  1. [CentOS 7 Apache]:Autorizzazione negata:le autorizzazioni dei file negano l'accesso al server

  2. Perché un utente normale non può "chown" un file?

  3. Monitoraggio dell'accesso ai file Linux?

  4. Concedi l'accesso a sudo in Debian e nel sistema operativo Ubuntu

  5. Concedi l'accesso sudo in RHEL e CentOS

[Risolto] Impossibile accedere al file di archiviazione, autorizzazione negata Errore in KVM Libvirt

Il registro di accesso di Apache imposta automaticamente le autorizzazioni

accesso simultaneo al file linux

Converti file in PDF utilizzando LibreOffice sotto l'utente apache (ovvero quando si utilizza PHP)

best practice per l'autorizzazione di accesso agli utenti per apache tomcat

Come bloccare l'accesso a un file dall'essere servito da Tomcat?