# [samba] permessi "per file"? aiutatemi a progettar

## federico

Ciao a tutti,

di nuovo alle prese con la mia associazione, siamo arrivati al punto che alcuni documenti vanno condivisi.

Prendiamone in esempio due per ora: elencotelefonico e dbasevolontari

Prendiamo anche alcuni utenti: marina, anna, comando e centralino.

-elencotelefonico deve poter essere letto da tutti, ma modificato solo da marina, in aggiunta se possibile centralino non deve poterlo stampare (ma qui non so se si puo' fare)

-dbasevolontari deve poter essere scritto da marina, ma letto da tutti tranne che da centralino

In aggiunta sarebbe ottimale che solo marina e root diciamo (il server samba stesso) possano aggiungere nuovi file nella/e dir.

In che modo devo comportarmi? E' possibile creare una sola directory e specificare i permessi via samba per file? Oppure creo una dir per ogni tipologia di file (e in questo modo, come faccio se un giorno ho 100 file con 100 tipi di permessi diversi?  :Sad:   :Sad:  )? 

Confido in qualche vostro consiglio!

Ciao, Federico

----------

## codadilupo

 *federico wrote:*   

> Ciao a tutti,
> 
> di nuovo alle prese con la mia associazione, siamo arrivati al punto che alcuni documenti vanno condivisi.
> 
> Prendiamone in esempio due per ora: elencotelefonico e dbasevolontari
> ...

 

il mio consiglio é quello di creare un gruppo per utente, e poi gruppi piu' generali per ogni categoria di utente, e per ogni categoria di file.

p.s.: in questo prospetto centralino  non é un utente, é un gruppo !

Ad ogni modo, credo che tutto quello che vuoi fare tu sia piu' semplice se usi ldap, ma a quel punto samba dovrebbe fare da Domain Controller...

p.p.s.: se proprio non vuoi che qualcuno legga qualcosa, non fai prima a creare degli script di logon che provvedano a mappare le risorse sul server in modo che se si logga tizio non vede quello che vede caio ?

Coda

----------

## federico

I client in questione sono tutti windows...

Coda, non ho capito nulla di quello che mi hai consigliato :°

EDIT:

Non mi fare cambiare un disastro di cose nella rete, in effetti per ora si tratta di gestire questi due file..

----------

## codadilupo

 *federico wrote:*   

> I client in questione sono tutti windows...
> 
> Coda, non ho capito nulla di quello che mi hai consigliato :°
> 
> EDIT:
> ...

 

il fatto é che non ho mai visto un workgroup disegnato come un dominio... a meno che non fosse un dominio  :Wink: 

Sorry, ma fin'ora ho visto e gestito solo domini w2k. Quello che chiedi, per la mia esperienza, si ottiene con un dominio e ldap. Diversamente dovrai continuamente modificare i permessi sui file.

P.S.: ma é cosi' importante che un utente non possa leggere o stampare un certo file ? Capisco che non possa modificarlo, ma il resto, mi pare quantomeno superfluo  :Wink: 

Coda

----------

## federico

 *codadilupo wrote:*   

> il fatto é che non ho mai visto un workgroup disegnato come un dominio... a meno che non fosse un dominio 

 

Neanche so che e' un dominio secondo samba...

 *Quote:*   

> P.S.: ma é cosi' importante che un utente non possa leggere o stampare un certo file ? Capisco che non possa modificarlo, ma il resto, mi pare quantomeno superfluo 

 

Circa, per la stampa posso arrendermi, per la visualizzazione si e no, perche' il documento database contiene informazioni che non dovrebbero conoscere tutti quelli che transitano per la postazione centralino (che ricordo per chi non conosce la mia situazione, e' una macchina utilizzata da centinaia di persone)

----------

## federico

Aiutatemi a trovare una soluzione qualsiasi perche' sono un po' sul disperato eh  :Confused: 

----------

## codadilupo

ti ripeto, se imposti samba come pdc di un dominio, allora puoi permetterti di avere utenti di dominio, il che significa che auando una persona accende il pc centralino entra con i propri utente e password: se quell'utente puo' vedere il file, lo vede, se no, no.

Oppure puoi creare uno share in samba il cui accesso sia vincolato da password: cosi' solo chi ha la password puo' entrare.

Altre soluzioni piu' "trasparenti" non me ne vengono in mente, sinceramente  :Sad: 

Coda

----------

## fat_penguin

Nono riesci a risolvere usando le ACL (Access Control list)  del filesystem? 

byebye

fat_penguin

----------

## xchris

si puo' fare senza problemi con un "misto" di ACL e keyword su smb.conf.

Non vedo come sia fattibile la questione stampa.Ma la stampante e' gestita da samba?

Piu' tardi ti posto una config che dovrebbe risolvere il caso e darti spunti per una config + complessa.

Dimmi se hai gia risolto eh?  :Smile: 

ciao

----------

## xchris

ecco una soluzione

ti metto solo la config per gli share.

Ovviamente security deve essere per utente e non per share.

```

[elencoTE]

path=/share/ElencoTelefonico

writeable=no

public=no

create mask= 0750

write list = marina

[db_vol]

path=/share/DbVolontari

writeable=no

public=no

create mask= 0750

write list = marina

invalid users = centralino

```

poi le dir:

```

root@lyra share # ls -l /share/

total 8

drwxr-x---  2 marina users 4096 17 mar 12:47 DbVolontari

drwxr-x---  5 marina users 4096 17 mar 13:02 ElencoTelefonico

```

ogni user "deve" far parte del gruppo "users"!

fammi sapere come gira..

Ciao

NOTA: in invalid users e write list puoi anche specificare dei gruppi se vuoi! @gruppo

NOTA2: se hai macchine con Win95/98 non usare share + lunghi di 8 chars e con spazi

NOTA3: se vuoi abilitare uno user con i super poteri metti "admin users= utente" (scrive sul FS come root)

----------

## federico

Ciao, scusate per il ritardo ma ho tipo 38.5 di febbre e gli svarioni a stare davanti ad un monitor, volevo solo avvertirvi di questo, provo come guarisco o sto meglio, ora torno a letto  :Sad:   :Sad:   :Sad: 

Federico

----------

## xchris

riprenditi presto  :Smile: 

grazie per avere avvisato... ero in effetti un po' curioso di sapere come stava andando.

a presto!

ciao

----------

## federico

Ciao, e' un po' che questo topic era rimasto fuori uso ma oggi sono qui in associazione e sto tentando di fare due esperimenti, tuttavia non riesco a far andare nulla...

Ho questo samba config :

```

[global]

   workgroup = CROCEVERDE

   server string = CroceVerde Samba Server %v

   log file = /var/log/samba/log.%m

   max log size = 50

   security = user

   encrypt passwords = yes

   smb passwd file = /etc/samba/smbpasswd

   dns proxy = no

   username map = /etc/samba/smbusers

   hide unreadable = yes

   hosts allow = 127.0.0.1 192.168.10.

   map to guest = bad password

   guest account = nobody

[elencoTE]

path=/home/ElencoTelefonico

writeable=no

public=no

create mask= 0750

write list = federico

[db_vol]

path=/home/DbVolontari

writeable=no

public=no

create mask= 0750

write list = marina

invalid users = volontari

```

E il file smbusers:

```

[root@server samba]# cat /etc/samba/smbusers

# Unix_name = SMB_name1 SMB_name2 ...

root = administrator admin

nobody = guest pcguest smbguest

federico = federico

```

Sto facendo gli esperimenti con un utente chiamato federico, facente parte del gruppo users che esiste sia come utente unix sia come utente samba (smbpasswd -a federico)

```

[root@server samba]# id federico

uid=503(federico) gid=100(users) gruppi=100(users)

[root@server samba]#

```

Sul mio windowsxp qui vedo le condivisioni ma non riesco ad accedervi per errori non meglio definiti di password.

Inoltre ad elencotelefonico teoricamente dovrebbero poter leggere tutti, difatti come clicco sulla condivisione ottengo la finestra di password e non vado avanti

Come mi comporto ?

Fede

EDIT:

```

[root@server samba]# ll /home/

totale 48

drwx------  5 blackman         blackman         4096  1 feb 11:50 blackman

drwxr-xr-x  2 root             root             4096 13 lug 19:51 DbVolontari

drwxrwxrwx  4 elencotelefonico elencotelefonico 4096 13 lug 19:18 elencotelefonico

drwxr-x---  2 federico         users            4096 13 lug 19:51 ElencoTelefonico

drwx------  3 federico         users            4096 13 lug 19:58 federico

drwx------  3 samba            samba            4096 16 mar 23:58 samba

[root@server samba]#

```

questa la home

----------

## federico

Disconnettendo l'utente ha preso qualcosa a funzionare -.-

Riesco a loggarmi su elencoTE come federico in scrittura e lettura ma solo con quello, non capisco bene la teoria invece dei guest... Devo impostare una pass vuota per guest o nobody o quel che e' ?

C'e' per caso un sistema per fare in modo che il default per quella dir sia lettura si, scrittura se mi loggo ?

EDIT:

Tra un logout e l'altro sto facendo un po' di prove, ho aggiunto anche una sezione HOMES per gli utenti sebbene continuo a non riuscire a risolvere il problema descritto qui sopra, e ho notato una cosa, una volta che mi loggo su una dir non ho la possibilita' di loggari in un altra, ne' tantomeno capisco come sloggarmi... E' una questione di windows o del samba server ?

Fede

----------

## xchris

 *federico wrote:*   

> Disconnettendo l'utente ha preso qualcosa a funzionare -.-
> 
> Riesco a loggarmi su elencoTE come federico in scrittura e lettura ma solo con quello, non capisco bene la teoria invece dei guest... Devo impostare una pass vuota per guest o nobody o quel che e' ?
> 
> C'e' per caso un sistema per fare in modo che il default per quella dir sia lettura si, scrittura se mi loggo ?
> ...

 

potresti provare con

```

[elencoTE]

path=/home/ElencoTelefonico

writeable=no

public=yes

create mask= 0750

write list = federico

```

Cosi' chiunque non loggato puo' leggere ma solo federico puo' scrivere.

 *Federico wrote:*   

> 
> 
> EDIT:
> 
> Tra un logout e l'altro sto facendo un po' di prove, ho aggiunto anche una sezione HOMES per gli utenti sebbene continuo a non riuscire a risolvere il problema descritto qui sopra, e ho notato una cosa, una volta che mi loggo su una dir non ho la possibilita' di loggari in un altra, ne' tantomeno capisco come sloggarmi... E' una questione di windows o del samba server ?
> ...

 

chiaramente e' una questione di windows...  :Laughing: 

prova a vedere da prompt dei comandi "net" o "share" (non ricordo)...

cmq un modo deve esserci. (io non ne ho mai avuto la necessita..)

ciao

----------

## federico

 *xchris wrote:*   

> 
> 
> ```
> 
> [elencoTE]
> ...

 

Faro' la prova e ti so dire, penso di aver testato ma poi win non rispondeva positivamente, il punto e' che a momenti pare che per ogni modifica al samba server devi riavviare le macchine windows per far si che queste si accorgano ...

A presto con nuove emozionanti avventure!

----------

## Ic3M4n

scusate se cambio completamente il filo logico del discorso, però da quello che ho capito il lavoro di condivisione è da farsi solamente sui due file, è corretto? se ciò fosse vero, non sarebbe più conveniente valutare la possibilità di migrarli su un groupware? fai lo share con samba ed il login avviene tramite interfaccia web sul server. dopo, logico, se devi migrare una rubrica con 10.000 indirizzi... mafari è meglio lasciar perdere, però ad occhio e croce (verde? :Laughing:  ) mi sembra la soluzione più corretta anche idealmente.

----------

## federico

Cos'e' un gruppo ware ?  :Smile: 

Ho fatto l'esempio per due file perche' se capisco come funziona per un paio di file penso di poterlo applicarea anche in grande stile, non devo migrare file, devo renderli dispobili secondo alcune modalita' ...

Se ci sono soluzioni piu' intelligenti apriamo un altro topic  :Smile: 

----------

## grentis

Ora...non so se funziona o se ho capito bene il problema...ma se si fa una cosa di questo tipo

```
[file]

path=/home/files/

writeable=no

public=yes

create mask= 0750

write list = federico 
```

in modo da rendere la cartella visibile a tutti ma senza la possibilità di scrittura

poi...

rw-r-----       marina:users            elenco

rw-r-----       marina:dbase           dbase

Però in questo caso dovresti avere un gruppo per ogni eventuale diversità di permessi

----------

## Ic3M4n

questo è un esempio di groupware, ce ne sono molti in portage. questo ha la demo su internet, dagli un'occhiata. magari può essere quello che cerchi.

----------

## flocchini

io appoggio grentis, abitualmente ho a che fare con scenari come il tuo e writelist + create mask (e directory mask) mi hanno sempre consentito di fare cio' che volevo, si tratta solo di ragionare sulla giusta assegnazione di gruppi/permessi/mask

gruppo1: dbasevolontari ->  marina, anna, comando 

gruppo2: elencotelefonico ->  marina, anna, comando

gruppo3: centralino -> centralino

l'oggetto (file, dir, quel che e') elencotelefonico apparterra' all'utente marina del gruppo elencotelefonico, e avra' permessi 744 ossia leggibile e modificabile del proprietario (marina), leggibile e basta dagli altri del gruppo e leggibile e basta dal gruppo centralino.

l'oggetto  dbasevolontari  apparterra' all'utente marina del gruppo dbasevolontari, e avra' permessi 740 ossia leggibile e modificabile del proprietario (marina), leggibile e basta dagli altri del gruppo e leggibile e basta dagli altri, ossia il gruppo centralino.

Conseguenzialmente solo marina potra' scrivere nelle dir, a seconda delle esigenze di accesso su tali file e dir creati potrai impostare una maschera a piacere.  :Wink:  Tutto questo utilizzando solo un gruppo di lavoro su piattaforme XP o 2000 lato client

----------

