Come creare una condivisione Samba scrivibile da Windows senza autorizzazioni 777?


33

Ho un percorso su una macchina Linux (Debian 8) che voglio condividere con Samba 4 su computer Windows (Win7 e 8 in un dominio). Nel mio smb.confho fatto quanto segue:

[myshare]
path = /path/to/share
writeable = yes
browseable = yes
guest ok = yes
public = yes

Ho un perfetto accesso in lettura da Windows. Ma per avere accesso in scrittura, devo farlo chmod -R 777 /path/to/shareper poterlo scrivere da Windows.

Quello che voglio è l'accesso in scrittura da Windows dopo aver fornito le credenziali Linux del proprietario Linux di /path/to/share.

Ho già provato:

[myshare]
path = /path/to/share
writeable = yes
browseable = yes

Quindi Windows richiede le credenziali, ma qualunque cosa io inserisca, viene sempre negato.

Qual è il modo corretto per ottenere l'accesso in scrittura alle condivisioni Samba da un computer di dominio Windows senza concedere 777?

Risposte:


49

Consiglio di creare un utente dedicato per quella condivisione e specificarlo in force user(vedi documenti) .

Crea un utente ( shareuserad esempio) e imposta il proprietario di tutto nella cartella di condivisione su quell'utente:

adduser --system shareuser
chown -R shareuser /path/to/share

Quindi aggiungere force usere autorizzare le impostazioni della maschera in smb.conf:

[myshare]
path = /path/to/share
writeable = yes
browseable = yes
public = yes
create mask = 0644
directory mask = 0755
force user = shareuser

Nota che guest okè sinonimo di public.


1
Ho avuto un problema simile e tutte le ricerche su Google hanno mostrato il modo sporco di usare semplicemente 777. Volevo 775 per la mia cartella condivisa e volevo che i file fossero creati usando il mio "defaultUser" di Linux, ho usato anche public = yes. La cartella era 775, create e la maschera dir era 775 ma in Windows non era scrivibile e non riuscivo a capire perché. L'aggiunta ha force user = defaultUserfatto il lavoro per me.
firepol

Non riesco a farlo funzionare, ogni volta che provo a condividere la directory, ho solo una finestra che mi dice che devo dare "altri" il permesso di scrittura per condividere la directory.
Mark Kramer il

Ho capito, il problema era la posizione di smb.conf. Google e persino la documentazione di Sambas hanno affermato che il file dovrebbe essere presente /usr/local/samba/libma in realtà è presente/etc/samba
Mark Kramer,

1
@MarkKramer È una buona idea seguire i documenti inclusi nella tua specifica distribuzione Linux perché molte distro riorganizzano i file per adattarli all'FHS (Filesystem Hierarchy Standard) della Linux Foundation. Ti consiglio di leggere e cercare i documenti forniti con la distro perché google non è sempre la risposta migliore, ad esempio potresti ottenere informazioni per una versione diversa del software. I migliori saluti.
RobertL

2

Nelle impostazioni della condivisione in smb.conf, dovrai specificare i nomi degli utenti e / o dei gruppi autorizzati a scrivere sulla condivisione, usando una write list = ...linea.

Esempio:

[myshare]
...
write list = my_linux_username

Quindi dovrai utilizzare il smbpasswdcomando per impostare una password per l'autenticazione my_linux_usernameper Samba:

sudo smbpasswd -a my_linux_username

Questo passaggio è necessario perché le password di sistema standard /etc/shadowsono hash in algoritmi incompatibili con gli algoritmi di hash delle password utilizzati nel protocollo SMB. Quando un client invia un pacchetto di autenticazione SMB, include una password con hash. Può essere confrontato solo con un altro hash di password che utilizza lo stesso algoritmo.

(Le istruzioni molto vecchie del millennio precedente potrebbero raccomandare di disabilitare la crittografia delle password in Samba e di utilizzare alcuni hack del registro per consentire a Windows di emettere password non crittografate alla rete. Questo consiglio è obsoleto : tali hack del registro potrebbero non funzionare più nelle versioni attuali di Windows e consentire a chiunque sia in grado di monitorare il traffico di rete di acquisire banalmente la password.)


C'è un'altra cosa che potresti dover fare sul lato client. Quando il tuo sistema client Windows è unito a un dominio di Active Directory e hai effettuato l'accesso con un account AD, prefissa automaticamente tutti i nomi utente non qualificati con il nome del dominio AD dell'utente, vale a dire che effettuerai l'autenticazione come AD_DOMAIN\your_username, non solo your_username.

Se si è effettuato l'accesso con un account locale (o il proprio sistema client non è unito a un dominio AD), Windows può automaticamente aggiungere il nome utente al nome host del client, a meno che non si specifichi un altro nome di dominio.

Per accedere correttamente a un server Samba autonomo da un client Windows autonomo, potrebbe essere necessario specificare il nome utente come SAMBA_SERVER_HOSTNAME\your_username.

Altrimenti Samba vedrà il nome utente come WINDOWS_CLIENT_HOSTNAME\your_username, concluderà che non ha modo di verificare alcun utente appartenente al dominio nominato WINDOWS_CLIENT_HOSTNAMEe rifiuterà l'accesso.

(Le versioni più recenti di Samba potrebbero avere un controllo integrato per questa situazione specifica e potrebbero comunque permetterti l'accesso. Ma questo è fondamentalmente il modo in cui l'autenticazione SMB funziona "sotto il cofano" e se hai bisogno di gestire le versioni precedenti di Samba , potrebbe essere ancora utile.)


1

Lo stavo cercando perché avevo fretta e non avevo nemmeno il tempo di concentrarmi sulla creazione di utenti e quindi ...

Ho dovuto semplicemente rimuovere i dati di una macchina debian 9 il più presto possibile e questo è stato il modo più veloce di pensare, se vuoi evitare di saltare i comandi puoi anche farlo, ma ovviamente non è raccomandato a meno che tu non sia in un sbrigati .

[mymfolder]
path = /mymfolder
writeable = yes
browseable = yes
public = yes
create mask = 0777
directory mask = 0777
force user = root 

E se segui questa strada puoi limitarti per host usando l'opzione "hosts consentire". Vedi: samba.org/samba/docs/server_security.html
ctorx,
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.