# File system di rete read only ma con eccezioni

## koma

Ciao a tutti  :Smile: 

Mi stavo chiedendo se qualcuno poteva darmi un paio di dritte su questa mia idea:

Mi piacerebbe sharare un filesystem del server (A) con i server (B) (C) (D) (E)

Dove il file system è in ro ad eccezione di alcuni file.

Il caso pratico é una batteria di webservers con un nfs in backend.

il quale permette la scrittura solo dei file config.php e dei path /images /upload /tmp nelle rispettive home dei vari siti.

montare in rw ogni singolo path è fuori discussione sono più di 600 siti.

idee?

 *Quote:*   

> in esplicazione a questa necessità:
> 
> se dovessero bucare uno o più webserver non potrebbero fare defacing o cancellare parti importanti dei siti.

 

----------

## cloc3

praticamente, il filesystem A è ro per il 99% e rw per il resto?

potrebbe andare aufs?

----------

## koma

Non conosco aufs controllo e ti rispondo cmq immagina l'alberatura del FS esportato è

```

/sito1.it

/sito1.it/index.php

/sito1.it/admin/provate.php

/sito1.it/modules/blablah.php

/sito1.it/images/pippo.jpg

/sito1.it/images/pippo2.jpg

/sito1.it/tmp/

/sito2.com

/sito2.it/index.php

/sito2.it/admin/provate.php

/sito2.it/topolino/privatissimo.php

/sito2.it/modules/blablah.php

/sito2.it/images/pippo.jpg

/sito2.it/images/pippo2.jpg

/sito2.it/images2/pippo.jpg

/sito2.it/images2/pippo2.jpg

/sito2.it/tmp_lol/

```

e in tutto questo marasma solo */images/* e */tmp/* e */config.php devono essere scrivibili.

meglio ancora se posso fare una lista di eccezioni tipo:

```

/sito1/images/* rw

/sito1/tmp/* rw

/sito2/images/* rw

/sito2/images2/* rw

/sito2/config.php rw

```

----------

## cloc3

aufs ti permetterebbe di separare fisicamente i contenuti ro da quelli rw con un unico comando, configurabile in fstab.

si tratta di un meccanismo di maschere.

si prepara una cartella ro e una rw, e si monta il contenuto della cartella ro, mascherato attraverso la rw su un percorso arbitrario (la radice dei tuoi siti).

----------

## koma

potrebbe essere la risposta ai miei problemi....

----------

## koma

P.S.

Se ci sono alternative, ben accette ovviamente  :Wink: 

----------

## koma

Mi è venuto in mente... ma è possibile  bloccare le permission dei file?

Del tipo ok è in rw ma solo sui file in rw! se un file è in ro non è possibile cambiarne i permessi.

... just wondering ...

----------

## cloc3

 *koma wrote:*   

> P.S.

 

ce ne sono senz'altro, ma non puoi pretendere che vengano tutte in mente a me!

 :Smile: 

 *koma wrote:*   

> Mi è venuto in mente... ma è possibile  bloccare le permission dei file?
> 
> Del tipo ok è in rw ma solo sui file in rw! se un file è in ro non è possibile cambiarne i permessi.
> 
> 

 

non credo che sia un grosso problema.

se provi a giocare con un esempio concreto te ne renderai conto subito.

le modifiche avvengono esclusivmamente nella cartella rw.

io uso aufs per mantenere diverse versioni dei miei kernel. in questo esempio:

. la mia ro è linux-2.6.35-gentoo-r5

. la mia rw è diff/linux-2.6.35-gentoo-r5-p5q/Makefile

. il mount-point aufs è linux-2.6.35-gentoo-r5-p5q

```

s939 src # ls -l linux-2.6.35-gentoo-r5/Makefile diff/linux-2.6.35-gentoo-r5-p5q/Makefile linux-2.6.35-gentoo-r5-p5q/Makefile

ls: impossibile accedere a diff/linux-2.6.35-gentoo-r5-p5q/Makefile: No such file or directory

-rw-r--r-- 1 root root 51264  5 set 12.32 linux-2.6.35-gentoo-r5/Makefile

-rw-r--r-- 1 root root 51264  5 set 12.32 linux-2.6.35-gentoo-r5-p5q/Makefile

s939 src # chmod +x linux-2.6.35-gentoo-r5-p5q/Makefile

s939 src # ls -l linux-2.6.35-gentoo-r5/Makefile diff/linux-2.6.35-gentoo-r5-p5q/Makefile linux-2.6.35-gentoo-r5-p5q/Makefile

-rwxr-xr-x 1 root root 51264  5 set 12.32 diff/linux-2.6.35-gentoo-r5-p5q/Makefile*

-rw-r--r-- 1 root root 51264  5 set 12.32 linux-2.6.35-gentoo-r5/Makefile

-rwxr-xr-x 1 root root 51264  5 set 12.32 linux-2.6.35-gentoo-r5-p5q/Makefile*

s939 src # chmod -x linux-2.6.35-gentoo-r5-p5q/Makefile

s939 src # ls -l linux-2.6.35-gentoo-r5/Makefile diff/linux-2.6.35-gentoo-r5-p5q/Makefile linux-2.6.35-gentoo-r5-p5q/Makefile

-rw-r--r-- 1 root root 51264  5 set 12.32 diff/linux-2.6.35-gentoo-r5-p5q/Makefile

-rw-r--r-- 1 root root 51264  5 set 12.32 linux-2.6.35-gentoo-r5/Makefile

-rw-r--r-- 1 root root 51264  5 set 12.32 linux-2.6.35-gentoo-r5-p5q/Makefile

```

----------

## koma

E' sicuramente una buona soluzione ma devi immaginare la nostra struttura... 

```
[root@web1 /usr/local/www/apache22/data]# ls -la |grep ^d|wc -l

     178

```

```

[root@web2 /usr/local/www/apache22/data]# ls -la |grep ^d|wc -l

     422

```

```

[root@web3 /usr/local/www/apache22/data]# ls -la |grep ^d|wc -l

     231

```

Ogni sito è diverso per struttura... andare a copiare a mano ogni singola directory è un po' un bagno di sangue  :Very Happy: 

----------

## cloc3

 *koma wrote:*   

> ma devi immaginare la nostra struttura... 
> 
> 

 

così mi confondi le idee.

le cartelle /usr/local... sono o non sono accessibili, sul server (A) del primo topic, come sottocartelle di una unica radice?

se sì, la tua obiezione dovrebbe cadere.

ma è ovvio che sei tu che a dover fare qualche prova e poi decidere.

facci sapere.

----------

## Kernel78

premetto che sono sveglio da poco e dopo aver letto e cercato di capire il tuo problema avrei voglia di tornare a nascondermi sotto le coperte ma visto che mia figlia mi ha fregato il posto provo a dire la mia ...

basarsi sui permessi ?

----------

## koma

 *cloc3 wrote:*   

>  *koma wrote:*   ma devi immaginare la nostra struttura... 
> 
>  
> 
> così mi confondi le idee.
> ...

 Allo stato attuale ho un server web per N° siti senza file system esportato.

L'idea è di raggruppare tutti i dati in un file server ed esportare solo il path che contiene i siti in NFS in modo da agganciarlo su una batteria di web servers  :Smile: 

scusa avrei dovuto precisarlo prima.

----------

## koma

 *Kernel78 wrote:*   

> premetto che sono sveglio da poco e dopo aver letto e cercato di capire il tuo problema avrei voglia di tornare a nascondermi sotto le coperte ma visto che mia figlia mi ha fregato il posto provo a dire la mia ...
> 
> basarsi sui permessi ?

 Se sploitano la macchina riescono a lavorare come ID=0 (root) e i permessi vanno a farsi benedire.

L'idea era appunto montare da un fs di rete i path con le pagine web in modalità read only e avere una lista di eccezioni in cui permettere il write.

Questo perchè così le macchine di front end diventano meri interpreti mentre i siti si trovano da un'altra parte

----------

## cloc3

allora.

siccome sono partito con aufs, insisto testardamente, cercando di proporre uno scenario che, secondo me, potresti utilizare.

supponi di avere i siti pippo e topolino.

per ciascuno di essi utlizzi un web server separato PIPPO e TOPOLINO.

ogni server esporta due percorsi nfs: 

PIPPO:/path_ro e PIPPO:/path_rw e idem per topolino.

il server A è esclusivamente un client nfs.

strutturi il sistema a questo modo:

/var/nfsmount_ro/pippo

/var/nfsmount_ro/topino

/var/nfsmount_rw/pippo

/var/nfsmount_rw/topolino

/var/www/pippo

/var/www/topolino

ovviamente gli ultimi due sono i mount aufs, dove lavora apache.

se un cracker sfonda il server A, può agire solo sui mount nfs in rw, quindi sei a posto.

con questo non pretendo che tu sia soddisfatto (esiteranno sicuramente tecniche alternative, e comunque non ho idea delle prestazioni di scala di aufs - io so che funziona bene sui cdrom  :Very Happy:  ).

però tu fatti sentire più spesso sul forum. altrimenti vedi cosa succede, che non sai neppure cosa sia aufs.

 :Cool: 

----------

## Kernel78

 *koma wrote:*   

>  *Kernel78 wrote:*   premetto che sono sveglio da poco e dopo aver letto e cercato di capire il tuo problema avrei voglia di tornare a nascondermi sotto le coperte ma visto che mia figlia mi ha fregato il posto provo a dire la mia ...
> 
> basarsi sui permessi ? Se sploitano la macchina riescono a lavorare come ID=0 (root) e i permessi vanno a farsi benedire.
> 
> L'idea era appunto montare da un fs di rete i path con le pagine web in modalità read only e avere una lista di eccezioni in cui permettere il write.
> ...

 

Scusa ma con NFS fai uno squash di root così che venga rimappato su un utente senza privilegi ...

----------

## koma

 *Kernel78 wrote:*   

>  *koma wrote:*    *Kernel78 wrote:*   premetto che sono sveglio da poco e dopo aver letto e cercato di capire il tuo problema avrei voglia di tornare a nascondermi sotto le coperte ma visto che mia figlia mi ha fregato il posto provo a dire la mia ...
> 
> basarsi sui permessi ? Se sploitano la macchina riescono a lavorare come ID=0 (root) e i permessi vanno a farsi benedire.
> 
> L'idea era appunto montare da un fs di rete i path con le pagine web in modalità read only e avere una lista di eccezioni in cui permettere il write.
> ...

 Faccio un cosa in cosa per cosa?

----------

## cloc3

 *koma wrote:*   

> Faccio un cosa in cosa per cosa?

 

man export.

ha ragione Kernel78.

probabilmente, l'opzione root_squash (che tra l'altro dovrebbe essere il default) è sufficiente per la tua richiesta.

se l'utente root del client nfs cerca di accedere ai dati del mount, il server lo tratta come se fosse un qualunque utente nonprivilegiato (nobody).

sul server, gestisci i privilegi di nobody come piace a te, e sei a cavallo.

----------

## koma

mi sto arrapando  :Very Happy:   :Twisted Evil: 

----------

## Kernel78

 *koma wrote:*   

> mi sto arrapando  

 

oh cavoli, spero non sia merito mio  :Laughing:   :Laughing:   :Laughing: 

----------

