Non riesco a ottenere samba per impostare le autorizzazioni appropriate per le directory create


17

Ho un server Ubuntu che condivide alcune cartelle usando Samba. Quando un client crea una nuova cartella o file, le autorizzazioni non vengono impostate in base alle impostazioni in smb.conf.

Le mie impostazioni correnti per una condivisione specifica:

[share]
    path = /mnt/share
    browsable = yes
    guest ok = no
    writable = yes
    read only = no
    create mask = 0774
    directory mask = 0774
    write list = netuser

Quando un client samba (una finestra di Windows 7) utilizza l'account "netuser" per creare un file o una directory, le autorizzazioni diventano

drwxr-sr-- 2 netuser sambashare      4096 2012-01-22 21:14 New folder
-rwxrw-r-- 1 netuser sambashare         0 2012-01-22 21:07 New Text Document.txt

La directory padre ha il flag ID gruppo impostato, quindi il proprietario del gruppo sambashare. L'idea è che sia gli utenti samba che gli utenti server appartengano al gruppo sambashare e quindi possano essere in grado di modificare, eliminare e creare file e directory. Tuttavia, poiché le cartelle create non hanno il flag di scrittura per il gruppo impostato, gli utenti del server non possono creare nuovi file o cartelle in quelle cartelle senza sudo.

ho provato ad aggiungere e rimuovere la maschera di directory, forzare la modalità di directory, la modalità di sicurezza della directory e la modalità di sicurezza della directory di forzatura, ma i comportamenti rimangono ancora. I file e le cartelle appena creati non ottengono l'autorizzazione 774 prevista, ma piuttosto 764 e 754 rispettivamente.

Cosa mi sto perdendo? Perché samba non imposta le autorizzazioni corrette?

Risposte:


19

Penso che sia necessario utilizzare i seguenti parametri:

# I changes the permissions to rw-rw-r--
# You should be able to change them to 775 if you need the files to
# be executable
create mask = 664
force create mode = 664
security mask = 664
force security mode = 664

# I set the SGID flag here as I thought this is what you wanted
# You could change to 0775
directory mask = 2775
force directory mode = 2775
directory security mask = 2775
force directory security mode = 2775

Stavo cercando una bella spiegazione di come funzionano queste impostazioni, ma non sono riuscito a trovare niente di meglio di man smb.conf

Dovrai scorrere un po 'verso il basso per quelle opzioni.

Fondamentalmente, in poche parole, i permessi di Windows non sono gli stessi di unix (linux) ed è un po 'strano come i permessi delle mappe di samba.


1
Sì, sembra essere più o meno la stessa manpage di samba.org/samba/docs/man/manpages-3/smb.conf.5.html che ho visto, il problema è che non sembra importare cosa ottale valori impostati, ottengo ancora le stesse autorizzazioni impostate sul file o sulla cartella creati.
Zaz,

Hai impostato tutte le opzioni che ti ho dato? In tal caso, aggiorna il tuo primo post e a quel punto ti suggerirei di presentare una segnalazione di bug.
Pantera,

1
Ha già detto .. ma a un'ispezione e un test più ravvicinati, l'aggiunta del 2 alle maschere di directory ha risolto il problema. Grazie molto. : D
Zaz,

Fantastico, grazie per aver contrassegnato questo come la risposta accettata, aiuta gli altri con un problema simile.
Pantera,

La configurazione di Samba è eccessivamente complessa e davvero difficile da capire. Ad esempio, qual è la differenza logica tra la forza crea e semplicemente crea ... non ha senso. Il tuo suggerimento ti salva la vita, grazie!
Matthias Hryniszak,

8

Dopo molte prove ed errori, questo è il codice corretto per condividere la directory samba usando SGID e gruppi unix. Se l'utente si connette in modo anonimo ottiene r / o, se accede ed è un membro del gruppo assegnato, ottiene r / w.

Ho un gruppo chiamato "admin" impostato come gruppo principale per gli utenti con privilegi di scrittura, tutti gli altri ottengono i diritti di sola lettura.

Non costringo l'utente a nessuno, quindi persone diverse che lavorano sugli stessi file non interferiscono l'una con l'altra.

Ho impostato chmod 2755 sulla directory condivisa, quindi eredita le directory create con lo stesso gruppo 'admin'

$ chmod -R 2755 /home/shares/test

Verifica se tutto va bene:

$ stat /home/shares/test
Access: (2755/drwxr-sr-x)  Uid: (65534/  nobody)   Gid: ( 1001/   admin)

Parte pertinente di /etc/samba/smb.conf:

[test]
        comment = test
        path = /home/shares/test
        force user = nobody
        read only = No
        create mask = 0664
        force create mode = 0664
        directory mask = 02775
        force directory mode = 02775

Questo post mi ha messo sulla buona strada, ma testparm ha rivelato 4 direttive errate, quindi sto condividendo la configurazione fissa qui. In samba, meno direttive specifichi meglio funzionerà.


6

Ho avuto lo stesso problema, ma tutto come le direttive maschera non ha funzionato per me (Samba 4.3.11):

 create mask = 0664
 force create mode = 0664
 directory mask = 02775
 force directory mode = 02775

L'unica opzione che funzionava era nella sezione [globale] o condividi:

 inherit permissions = yes

Basta modificare tutte le autorizzazioni per cartelle e file in base alle proprie esigenze, in modo che le cartelle e i file futuri erediteranno le stesse autorizzazioni.


Sto usando Samba versione 4.7.6-Ubuntu. E questo funziona anche per me.
Andi S.

vera risposta anche per 4.8.11on freebsd:)
jitter

3

C'è un problema molto simile quando ci si collega da altri dispositivi Unix / Linux / OSX / MacOS: tutte le impostazioni vengono ignorate se non si specifica

[global]

unix extensions = no

E connettiti smb://<serverhost>invece di cifs://<serverhost>.


0
 Here add this code to the sudo nano smb.conf
 and restart sudo service smbd restart  and access from another local PC/computer using connect with smb://<serverhost>  to create or edit files/folder   html is folder name 

 [html]
   comment = admin access
   path = /var/www/html
   browsable = yes
   guest ok = no
   writable = yes
   valid users = @admin
   create mask = 664
   force create mode = 664
   security mask = 664
   force security mode = 664
   directory mask = 2775
   force directory mode = 2775
   directory security mask = 2775
   force directory security mode = 2775
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.