Impostazione di una condivisione Samba pubblica anonima a cui è possibile accedere tramite Windows 7 e XBMC


9

Quindi dovrei iniziare dicendo che l'ho fatto con successo meno di una settimana fa e non ho avuto problemi, ma da allora ho riformattato e riconfigurato il mio server e ora sto avendo difficoltà a ricordare come ho fatto.

Ecco cosa avevo prima e cosa sto cercando di realizzare di nuovo. Ho avuto una condivisione di samba pubblica sul server Ubuntu. Chiunque sulla mia rete potrebbe accedere alla condivisione e ai suoi contenuti semplicemente digitando \ Hostname. Nessuna password necessaria. Gli utenti che non facevano parte del gruppo di lavoro della condivisione avevano accesso in lettura ma gli utenti che facevano parte del gruppo di lavoro avevano accesso in lettura / scrittura. (Windows 7)

Ora, se provo a connettermi a \ Hostname, mi viene richiesto un nome utente e una password. Se entro in un pw ottengo pieno accesso ma non dovrei; le mie impostazioni attuali sono ...

security = user
map to guest = bad user

[Shares]
path = /home/shares
available = yes
read only = no
browsable = yes
public = yes
writable = yes
guest ok = yes

Mi sto strappando i capelli sopra questo. Eventuali suggerimenti?

MODIFICARE:

Uff, questo mi sta facendo passare un brutto momento. Sono così vicino.

Ecco cosa ho.

Posso accedere alla condivisione da Windows 7 avviando e digitando \ Hostname \ Sharename ma mi viene richiesto un nome utente e una password. Tuttavia, non posso lasciarlo vuoto perché utilizzerà il mio gruppo di lavoro come dominio; quindi inserisco \ per il nome utente per cancellarlo e accedere con un nome utente e una password vuoti. Bene, ora posso accedere ai file nella condivisione.

Una volta dentro, la configurazione del gruppo di lavoro funziona correttamente. Se sono su un computer con il WORKGROUP predefinito posso leggere ed eseguire; un computer nel mio gruppo di lavoro Home può leggere scrivere ed eseguire. Quindi funziona.

Il problema è che non dovrebbe assolutamente chiedere una password. Dovrebbe essere totalmente pubblico a chiunque sulla rete. Sto provando a condividerlo con XBMC e non viene nemmeno visualizzato sotto smb nel file manager. Non riesco ad accedervi manualmente da XBMC. Viene visualizzato un errore di connessione rifiutata.

Tira ancora i capelli per questo. La parte peggiore è la prima volta che l'ho fatto circa una settimana fa, ci ho passato circa 30 minuti e ha funzionato perfettamente. Ora ho probabilmente trascorso almeno 4 ore e non funziona ancora.

Testparm:

Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[printers]"
Processing section "[print$]"
Processing section "[Shares]"
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions

[global]
        workgroup = FELLOWSHIP
        server string = %h server (Samba, Ubuntu)
        map to guest = Bad User
        obey pam restrictions = Yes
        pam password change = Yes
        passwd program = /usr/bin/passwd %u
        passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
        unix password sync = Yes
        syslog = 0
        log file = /var/log/samba/log.%m
        max log size = 1000
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        dns proxy = No
        wins support = Yes
        usershare allow guests = Yes
        panic action = /usr/share/samba/panic-action %d
        idmap config * : backend = tdb

[printers]
        comment = All Printers
        path = /var/spool/samba
        create mask = 0700
        printable = Yes
        print ok = Yes
        browseable = No

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/printers

[Shares]
        path = /home/shares
        read only = No
        guest ok = Yes

AGGIORNAMENTO: la condivisione è ora disponibile sulla mia rete indipendentemente dal gruppo di lavoro. Qualsiasi utente Windows che si collega alla mia rete può vedere il NAS in Netowork e accedervi. La chiave stava impostando la sicurezza su security = share. Lo so, è deprecato, ma funziona e sicurezza = utente e mappa per utente = utente cattivo non funzionava per me.

Ad ogni modo, ora sembra che chiunque si connetta alla condivisione ottenga le autorizzazioni globali unix per la directory, che è gestibile, ma voglio che gli utenti che si uniscono al gruppo di lavoro specificato in smb.conf ottengano le autorizzazioni del gruppo unix.

In questo modo, posso impostare la directory su 775 e sarò in grado di scrivere perché mi sono unito al gruppo di lavoro, ma altri utenti possono solo leggere ed eseguire.


Dovresti essere in grado di mappare gli utenti del gruppo di lavoro per ottenere autorizzazioni specifiche con un file di mappatura nome utente: samba.org/samba/docs/man/manpages-3/smb.conf.5.html#USERNAMEMAP
Aaron

Risposte:


8

È successo di imbattermi in questo thread nei forum di Ubuntu e ho pensato che potesse essere d'aiuto. Spiega i passaggi che avvengono dietro le quinte:

In Windows il nome utente e la password del client vengono inviati automaticamente quando cerca le condivisioni, ciò viene fatto all'insaputa dell'utente. Ciò costringe Samba a gestire le credenziali inviate anche se si tratta di una condivisione guest che non richiede autenticazione.

Quando viene passato quel nome utente, Samba cercherà nel suo database di password quell'utente:

  • Se non esiste alcuna corrispondenza con il nome utente, l'utente client viene taggato come "Utente non valido" e convertito (mappato) nell'account guest che per impostazione predefinita è "nessuno".

  • Se trova una corrispondenza con il nome utente e c'è una password samba che corrisponde a quella inviata dal client Windows, l'utente Windows ottiene automaticamente l'accesso anche se non come utente anonimo, motivo per cui è necessario aggiungere "force user = nobody" a la tua definizione di condivisione.

  • Se trova una corrispondenza con il nome utente ma la password di samba non corrisponde esattamente alla password che viene automaticamente inviata dal client Windows, ti verrà richiesta una password, anche per una condivisione guest.

Prova ad aggiungere la force user = nobodytua definizione di condivisione e vedi se lo fa.

Modifica 20/02/2013:

La testparmrestituzione di un codice di uscita è diversa da zero? Comunque, andrei avanti e darei a quell'area della configurazione un aspetto buono e duro. Inoltre, non sono sicuro di quanto smb.conf sia sensibile al maiuscolo / minuscolo, ma ogni esempio che vedo (per esempio) di map to guest = Bad UserB e U sono maiuscoli. Dai un'occhiata alle pagine man di Samba per le opzioni che stai usando e ricontrolla tutto.


Ehi Bryce, grazie per aver risposto. Sono riuscito a fare piccoli progressi rispetto alla mia domanda originale, ma essenzialmente ho ancora lo stesso problema. Sono riuscito a configurare la mia condivisione (la chiamo Condivisione) in modo che chiunque nel gruppo di lavoro, definito nelle impostazioni globali in smb.conf, possa ottenerlo direttamente - Nessuna password necessaria. Continuando nel prossimo commento ...
George ha parlato il

Ecco le impostazioni per la condivisione: [Shares] path = /home/shares browsable = yes available = yes read only = no public = yes writable = yes guest ok = yes se lo aggiungo force user = nobodysi interrompe e non riesco affatto ad accedere alla condivisione. Ecco dove diventa strano però; quando eseguo testparm viene scaricato [Shares] path = /home/shares read only = no guest ok = yesQuindi per qualche motivo è come se non vedesse le definizioni pubbliche, scrivibili, disponibili e sfogliabili. Potrebbe essere questo un indicatore di dove si trova il problema.
George ha parlato il

@GeorgeSpake modifica fatta ...
Aaron,

1
Penso che testparm sputi le cose in quel modo. Tutto è in minuscolo nel file conf. Ho anche scoperto, e devo verificarlo, che testparm scarica solo definizioni non predefinite che spiegherebbero perché alcuni dei risultati sono stati omessi.
George ha parlato il

Il recente aggiornamento di samba 4.3.11+dfsg-0ubuntu0.14.04.3su Ubuntu 14.04 ha rotto la mia condivisione pubblica, force user = nobodyè solo la correzione di cui avevo bisogno per riportare la condivisione pubblica
Antony,

7

Ecco come è configurato OpenElec. Dovresti fare quello che stai chiedendo. (anche se è un anno dopo ... forse aiuterà il prossimo) Modifica le impostazioni di condivisione secondo necessità.

[global]
  server string = YOURSERVERNAME
  workgroup = WORKGROUP
  netbios name = %h
  security = share
  guest account = root
  socket options = TCP_NODELAY IPTOS_LOWDELAY SO_RCVBUF=65536 SO_SNDBUF=65536
  smb ports = 445
  max protocol = SMB2
  min receivefile size = 16384
  deadtime = 30
  os level = 20
  mangled names = no
  syslog only = yes
  syslog = 2
  name resolve order = lmhosts wins bcast host
  preferred master = auto
  domain master = auto
  local master = yes
  printcap name = /dev/null
  load printers = no
  browseable = yes
  writeable = yes
  printable = no
  encrypt passwords = true
  enable core files = no
  passdb backend = smbpasswd
  smb encrypt = disabled
  use sendfile = yes

[share]
comment = Share
path = /share
available = yes
browsable = yes
writable = yes
public = yes

Grazie per questa aggiunta! Ho avuto difficoltà a ottenere una condivisione pubblica lavorando con Windows 8.1 queste impostazioni hanno funzionato.
davidmdem,

13
URGH! "account ospite = root". Ciò significa che gli account guest sono mappati su root, ovvero hanno autorizzazioni illimitate per fare qualsiasi cosa. ESSERE MOLTO ATTENTI! DRAGONS AHEAD!
DanielSmedegaardBuus

0

Poiché la ricerca di Google ci porta qui e non esiste una risposta chiara, l'ho riassunta.

Di seguito sono riportate le condizioni richieste per assicurarsi che i client SMB non richiedano il nome utente e la password quando accedono al server Samba:

  1. Aggiungi guest account = <owner-of-your-shares>in una [global]sezione. È importante che l'account del proprietario delle tue condivisioni abbia accesso ad esse. Se non lo fai, Samba supporrà che l'account guest sia un nobodyutente che probabilmente non ha accesso ai dati della tua condivisione.

    In alternativa, puoi specificare force user = <owner-of-your-share>sotto il tuo [shareXYZ]blocco.

  2. Assicurati di averlo [shareXYZ]fatto guest ok = yes.

    Impostato browsable = yesma di solito è ereditato da [global]e è impostato di yesdefault.

Quindi, probabilmente security = userdovrebbe essere impostato anche (questo è predefinito quando non hai Active Directory impostato nel tuo ambiente). Tuttavia, non sono sicuro se questo flag sia richiesto in quanto non ho AD nel mio ambiente.

Naturalmente, se vuoi che l' nobodyutente lavori, allora puoi solo chown -Rh 65534:65534 /yourshare, dopo che starai bene solo con la singola impostazione guest ok = yessotto il tuo [shareXYZ].

Notare che aver impostato rwxsu others( chmod o+rwx /yourshare) non ha permesso a Samba con il suo nobodyutente di condividere. Ho verificato con strace -f -e chdir,geteuid,getegid -p <pid-of-the-parent-smbd-process>. Probabilmente Samba ignora le autorizzazioni impostate per others? Non sono sicuro.


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.