# Directory condivisa.

## Kernel78

Ciao a tutti, mi servirebbe un consiglio da parte vostra.

Ho una macchina con più utenti diciamo pippo, pluto e paperino e vorrei creare una directory che possa essere condivisa solo da alcuni di loro diciamo pippo e pluto.

L'idea che mi è venuta è di creare una directory, viene creata con permessi 755, e di assegnarla all'utente nobody e ad un gruppo apposito, poi gli cambio i permessi in 775 e aggiungo gli utendi desiderati al gruppo apposito. L'inconveniente è che ogni file venga creato da qualsiasi di questi utenti appartiene all'utente e al gruppo principale di questo utente e ha permessi 644.

Va da se che questo mi frega completamente perchè un file creato da pippo non sarà modificabile da pluto ... solo che non ho idea di come far si che un file creato da pippo appartenga al gruppo "condiviso" ma solo all'interno della cartella condivisa.

Qualche suggerimento non guasterebbe ...

----------

## MaTz

modifica il .bashrc degli utenti inserendo un valore corretto per umask.

umask - get or set the file mode creation mask

----------

## Kernel78

Di sicuro è interessante ma non risolve appieno il mio problema ...

Se pippo ha come gruppo principale xxx e come secondario users il file che creerà saranno di proprieta di pippo:xxx e quindi anche modificando l'umask gli altri utenti del gruppo users non riusciranno ad accedervi a meno che io non li renda accessibili a tutti. Inoltre non vorrei che il funzionamento normale nella sua home variasse.

Riepilogando vorrei che il comportamento generico rimanesse quello attuale, ovvero ogni file creato sia posseduto da pippo:xxx con permessi 755 e solo in una particolare cartella (e relative subdirectory) il file creato sia di proprieta di pippo:users con permessi 775.

----------

## comio

 *Kernel78 wrote:*   

> Di sicuro è interessante ma non risolve appieno il mio problema ...
> 
> Se pippo ha come gruppo principale xxx e come secondario users il file che creerà saranno di proprieta di pippo:xxx e quindi anche modificando l'umask gli altri utenti del gruppo users non riusciranno ad accedervi a meno che io non li renda accessibili a tutti. Inoltre non vorrei che il funzionamento normale nella sua home variasse.
> 
> Riepilogando vorrei che il comportamento generico rimanesse quello attuale, ovvero ogni file creato sia posseduto da pippo:xxx con permessi 755 e solo in una particolare cartella (e relative subdirectory) il file creato sia di proprieta di pippo:users con permessi 775.

 

suidda la directory (oltre a modificare l'umask)

ciao

----------

## Kernel78

 *comio wrote:*   

> suidda la directory (oltre a modificare l'umask)

 

Scusa se paleso tutta la mia ignoranza con questa domanda: "che vuol dire ?" e inoltre:"posso modificare l'umask solo per una cartella ?"

Grazie.

----------

## comio

 *Kernel78 wrote:*   

>  *comio wrote:*   suidda la directory (oltre a modificare l'umask) 
> 
> Scusa se paleso tutta la mia ignoranza con questa domanda: "che vuol dire ?" e inoltre:"posso modificare l'umask solo per una cartella ?"
> 
> Grazie.

 

```

chmod +s /dir

```

----------

## MeMyselfAndI

hai pensato di usare le acl?

----------

## comio

 *MeMyselfAndI wrote:*   

> hai pensato di usare le acl?

 

sarebbe la cosa migliore  :Very Happy: 

ciao

----------

## Kernel78

Se sapessi cosa sono o come documentarmi riguardo alle acl potrei valutare e prenderle in considerazione.

----------

## MeMyselfAndI

Gentoo wiki

Documento tecnico

Veloce howto

 :Cool: 

----------

## djinnZ

Una alternativa alle acl è usare un remount via nfs/smb. In nfs devi usare nell'export "(all_squash,anonuid=xxx,anongid=xxx)".

In ogni caso acl o meno l'approccio più corretto sarebbe 660 o 770 per i permessi e mantenere l'utente che ha creato il file identificabile.

----------

## Sparker

 *djinnZ wrote:*   

> 
> 
> In ogni caso acl o meno l'approccio più corretto sarebbe 660 o 770 per i permessi e mantenere l'utente che ha creato il file identificabile.

 

Per fare questo senza ACL si puo' settare il suid solo per il gruppo:

chmod g+rws dir

Ovviamente tutti gli utenti devono far parte del gruppo proprietario di dir.

----------

## djinnZ

ovviamente faccio sempre il caso che ci siano le limitazioni imposte da grsec/selinux/rsbac usando il suid sulla directory ci sono alcuni problemi e limitazioni (non ho capito perchè ma mi dava gli stessi limiti di linking delle temporanee).

Sono troppo pigro per fare la prova ma settando suid la directory viene ignorato quanto impostato da umask? Non è che sia tanto sicuro...

----------

## Mamon

Salve a tutti.

Ho un problemino con la mia gentoo box.

ho creato una cartella /home/archivio per condividere files tra me e mia moglie (ognuno ha la propia home, apparteniamo entrambi al gruppo users).

Quando pero' salvo dei file in /home/archivio questi hanno permessi in sola lettura per il gruppo.

Come faccio a fare in modo che qualsiasi file creo o copio in /home/archivio abbia in automatico i permessi in scrittura per il gruppo?

grazie a chiunque mi possa aiutare.

Max

----------

## Scen

Dai una letta qui:

```

man umask

```

----------

## Mamon

L'ho letto già prima ma mi sembra di aver capito che va bene solo per vfat e ntfs, a me invece serve per ext3

----------

## Ic3M4n

umask da i permessi per ogni file che viene creato. io ho quelli di default che sono: 

```
umask

0022

```

quindi ti basta impostare l'umask a quello che ti serve, quindi devi impostare anche il gruppo alla scrittura.

----------

## djinnZ

umask (comando di shell) imposta i permessi per la creazione generica di file su qualsiasi filesystem li supporta, mount -o umask=000 per vfat&c imposta i permessi del filesystem (che di suo non li supporta) o su altri ne impone di specifici e diversi a prescindere dall'impostazione di umask (uso più comune).

Se è per uno sharing via rete c'è un thread specifico (o due?) sull'argomento.

Le alternative sono le seguenti:

comando umask xxx

impostare l'umask del filesystem in fstab (aiuta se è dedicato)

impostare samba o nfs ad esportare tutto come appartenente a e creare con umask definita

impostare una acl apposita sulla directory da condividere.

----------

## Mamon

Non è uno sharing in rete, il pc è singolo, siamo due utenti separati io e mia moglie. Provero' a settare l'umask via fstab

----------

## Ic3M4n

non devi impostare l'umask in fstab. lo devi impostare nel .bashrc delle due home tua e di tua moglie (credo che il file sia quello ma vado a memoria) a volte faccio confusione   :Embarassed:  .

come diceva djinnZ l'umask può essere utilizzato come opzione di mount per i filesystem che non hanno i permessi, come vfat. mentre utilizzato come programma standalone, in effetti l'uno è un programma, l'altro un opzione di mount, definisci come debbano essere i permessi sui file che crei.

----------

## CarloJekko

c'è una discussione simile già aperta 

https://forums.gentoo.org/viewtopic-t-560420-highlight-acl.html

Vedi anche li (come anche io ho fatto con la cartella documenti) consigliano di usare acl... 

Ciao !!!

----------

## djinnZ

@iceman: non è un programma è un parametro di ambiente, così lo confondi ancora di più.  :Wink: 

Mi sa che non hai capito come funziona:

Il tuo è il caso di più utenti _locali_ che vogliono condividere sempre i file che creano. Stesso gruppo ed usare umask (puoi impostarlo in .bashrc o anche in envirronment ma lettura e scrittura al gruppo per default è una cosa un tantino insicura.). Ovviamente se il programma specifica i permessi il file viene creato con questo.

Se la situazione è un tantino più complessa e vuoi restringere la condivisione solo ad alcune directory usi le acl (che comportano un lieve calo di prestazioni ed alcuni problemini con taluni pacchetti etc.).

Come funzionano le acl: quando apri in scrittura un nuovo file il sistema legge l'attributo speciale nella directory e quindi cambia di conseguenza gli attributi, se però vuoi creare un file che non sia scrivibile a tua moglie ti arrangi (mentre settando l'umask puoi sempre cambiare idea programma permettendo) o vai da root a modificare i permessi.

Se apri un sacco di file con permessi ed utenti diffrenti il sistema viene caricato di più ed è più lento, quindi, solo in questi casi si monta con una opzione di umask che in questo caso è applicata come and/or (secondo fs e bug del caso, non ci provo da parecchio ma ricordo che ext2 ha invertito il funzionamento un paio di volte quindi ho abbandonato) ai permessi di modo che la cosa viene demandata direttamente al vfs o al filesystem. Ovviamente stiamo parlando della necessità di imporre assolutamente dei permessi o di centinaia di accessi contemporanei in creazione e scrittura e della necessità di guadagnare un mezzo secondo in meno nei tempi di risposta.

I filesystem che non gesticono i permessi o gli utenti posix hanno questa opzione per non dover fare tutto da root (i vecchi sysv montavano un disco dos solo "rwx------ root root" od al massimo "... root bin" per capirci) ma questo è un altro caso.

Se la cosa deve essere fatta relativamente ad un accesso remoto (tanto più se è gestito da un processo in user space come samba) vale caricare del compito direttamente il programma di share e quindi usi la direttiva force user etc. in nfs (opzione all_squash etc.) visto che di solito è integrato nel kernel non c'è beneficio particolare se non conservare la possibilità di creare localmente dei file con attrributi diffrenti (per esempio i documenti sono condivisi in lettura e scrittura ma i modelli no).

chiaro? Non sono semplici alternative ma ogni metodo ha una precisa ragion d'essere ed uno specifico ambito di applicazione.

----------

## lavish

 *CarloJekko wrote:*   

> c'è una discussione simile già aperta 

 

Merge effettuato, grazie  :Smile: 

----------

## neryo

 *Kernel78 wrote:*   

> 
> 
> L'idea che mi è venuta è di creare una directory, viene creata con permessi 755, e di assegnarla all'utente nobody e ad un gruppo apposito, poi gli cambio i permessi in 775 e aggiungo gli utendi desiderati al gruppo apposito. L'inconveniente è che ogni file venga creato da qualsiasi di questi utenti appartiene all'utente e al gruppo principale di questo utente e ha permessi 644.

 

Ma stai usando samba per condividera la cartella?

Dovresti fare in smb.conf una cosa del genere... 

```
[Condivisa]

        path = /home/Condivisa

        write list = @condiviso 

        force user = %U

        force group = condiviso

        create mask = 0775

        force create mode = 0775

        directory mask = 0775

        force directory mode = 0775

```

ciao

----------

## Kernel78

 *neryo wrote:*   

> Ma stai usando samba per condividera la cartella?
> 
> 

 

No, sono tutti utenti locali della stessa macchina.

----------

## 102376

 *Quote:*   

> Se la situazione è un tantino più complessa e vuoi restringere la condivisione solo ad alcune directory usi le acl (che comportano un lieve calo di prestazioni ed alcuni problemini con taluni pacchetti etc.). 

 

oppure dite che si puo' utilizzare un remount nfs   del tipo localhost:/mnt....... giusto??

 non ho capito bene come???

ma il vantaggio e non avere permessi????????

----------

## djinnZ

tra un remount su localhost (in export devi impostare l'opzione all_squash che fa si che tutti gli accessi in scrittura sembrino effettuati dallo user impostato) e le acl meglio le seconde sia per sicurezza che per prestazioni.

La questione è come condividere dei file senza avere la rogna di andare ad impostare i permessi in scrittura al gruppo od a tutti e senza impostare per default permessi insicuri. Per esempio se devi condividere solo dei file di OOo e non lo usi per altro puoi ovviare con uno script di avvio dell'office che imposti umask=0660...

dipende da cosa esattamente ti serve.

----------

