SAMBA: possibili problemi: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
 
(14 versioni intermedie di 3 utenti non mostrate)
Riga 1: Riga 1:
{{SAMBA}}{{SAMBA1}}
{{SAMBA1}}


=== Log ===
=== Log ===
Se nessuna delle soluzioni qui proposte funziona e/o si vogliono più informazioni ricordarsi di controllare i log. Oltre ai soliti <code>/var/log/syslog</code> e <code>/var/log/messages</code> samba ha anche una serie di suoi log predefiniti presenti in <code>/var/log/samba</code>.
Se nessuna delle soluzioni qui proposte funziona e/o si vogliono più informazioni ricordarsi di controllare i log. Oltre ai soliti <code>/var/log/syslog</code> e <code>/var/log/messages</code>, Samba ha anche una serie di suoi log predefiniti presenti in <code>/var/log/samba</code>.
 
=== "Falso" avvio ===
 
Assicurarsi sempre che il demone di samba sia davvero in esecuzione:
<pre># systemctl status smbd -l</pre>
 
Se si riceve un output di questo tipo allora il demone è davvero in funzione
<pre>
● smbd.service - LSB: start Samba SMB/CIFS daemon (smbd)
  Loaded: loaded (/etc/init.d/smbd)
  Active: active (running) since sab 2015-10-03 16:26:10 CEST; 43min ago
  Process: 2213 ExecStop=/etc/init.d/smbd stop (code=exited, status=0/SUCCESS)
  Process: 2218 ExecStart=/etc/init.d/smbd start (code=exited, status=0/SUCCESS)
  CGroup: /system.slice/smbd.service
          ├─2227 /usr/sbin/smbd -D
          ├─2234 /usr/sbin/smbd -D
</pre>
Notare la scritta <code>Active: active '''(running)'''</code>.
 
Se invece si riceve qualcosa del genere allora non è in esecuzione:
<pre>
● smbd.service - LSB: start Samba SMB/CIFS daemon (smbd)
  Loaded: loaded (/etc/init.d/smbd)
  Active: active (exited) since sab 2015-10-03 11:39:58 CEST; 4min 12s ago
  Process: 1799 ExecStart=/etc/init.d/smbd start (code=exited, status=0/SUCCESS)
</pre>
Notare la scritta <code>Active: active '''(exited)'''</code>.


=== Collegamenti simbolici ===
=== Collegamenti simbolici ===
Riga 16: Riga 43:
</pre>
</pre>


=== NT_STATUS_INVALID_NETWORK_RESPONSE ===
=== Errori restituiti da ''smbclient'' e ''mount'' ===
Qualora si dovesse riceve il seguente messaggio d'errore usando <code>smbclient</code>:
 
<pre>machine WWW.XXX.YYY.ZZZ rejected the negotiate protocol. Error was : NT_STATUS_INVALID_NETWORK_RESPONSE</pre>
==== NT_STATUS_ACCESS_DENIED ====
controllare di aver incluso nel parametro ''hosts allow'' l'indirizzo ''WWW.XXX.YYY.ZZZ'' (o la subnet che lo contiene).
 
Se si riceve l'errore <code>tree connect failed: NT_STATUS_ACCESS_DENIED</code> assicurarsi che:
* l'utente usato esista davvero, per esempio attraverso il comando <code># pdbedit -w -L</code> che dovrebbe restituire qualcosa di simile a:
:<pre>nome_utente:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:[U          ]:AAA-BBBBBBBB:</pre>
:Se l'output è vuoto o l'utente desiderato non compare significa che questo non è stato ancora aggiunto a samba (si veda [[SAMBA: configurazione lato server#Creazione_utenti_e_Autenticazione|come creare un utente]]).
* assicurarsi che l'utente abbia i permessi corretti per le risorse cui si vuole accedere.


=== NT_STATUS_BAD_NETWORK_NAME ===
==== NT_STATUS_BAD_NETWORK_NAME ====
In genere quest'errore di <code>smbclient</code> è dovuto ad una errata indicazione del servizio cui si vuole accedere, per esempio:
In genere quest'errore di <code>smbclient</code> è dovuto ad una errata indicazione del servizio cui si vuole accedere, per esempio:
<pre>
<pre>
Riga 29: Riga 61:
$ smbclient //nome_server_scoretto/cartella_inesistente -U nome_utente
$ smbclient //nome_server_scoretto/cartella_inesistente -U nome_utente
</pre>
</pre>
Nel primo caso si sono usati troppi '''/''', nel secondo l'opzione '''-L'''  andava anticipata rispetto all'indirizzo IP e nel terzo caso si è  indicata una risorsa condivisa inesistente. Nell'ultima riga si è usato o un nome al posto dell'indirizzo IP, il che è assolutamente lecito, tuttavia se tale nome è errato oppure il PC in uso non è in grado di risolvere correttamente il nome specificato allora si riceve l'errore in oggetto.
Nel primo caso si sono usati troppi '''/''', nel secondo l'opzione '''-L'''  andava anticipata rispetto all'indirizzo IP e nel terzo caso si è  indicata una risorsa condivisa inesistente. Nell'ultima riga si è usato o un nome al posto dell'indirizzo IP, il che è assolutamente lecito, tuttavia se tale nome è errato oppure il PC in uso non è in grado di risolvere correttamente il nome specificato allora si riceve l'errore in oggetto.
 
==== NT_STATUS_INVALID_NETWORK_RESPONSE ====
 
Qualora si dovesse riceve il seguente messaggio d'errore usando <code>smbclient</code>:
<pre>machine WWW.XXX.YYY.ZZZ rejected the negotiate protocol. Error was : NT_STATUS_INVALID_NETWORK_RESPONSE</pre>
controllare di aver incluso nel parametro ''hosts allow'' l'indirizzo ''WWW.XXX.YYY.ZZZ'' (o la subnet che lo contiene).
 
==== NT_STATUS_IO_TIMEOUT ====
 
Se si riceve il messaggio d'errore <code>protocol negotiation failed: NT_STATUS_IO_TIMEOUT</code> è possibile che smbd non sia in esecuzione, si veda "falso avvio" qui sopra.
 
==== NT_STATUS_CONNECTION_REFUSED ====
 
Se si riceve il messaggio d'errore <code>Connection failed: Error NT_STATUS_CONNECTION_REFUSED</code> è possibile che:
* smbd non sia in esecuzione, si veda allora "falso avvio" qui sopra;
* ci sia un problema con una connessione di tipo PPP. Se infatti si è configurato una connessione adsl e la corrispondente interfaccia di rete, ad es. ppp0, non è attiva allora può accadere che samba restituisca il succitato errore. Provare dunque ad attivare tale connessione e riprovare a collegarsi alla risorsa condivisa.


=== Schede di rete multiple ===
=== Schede di rete multiple ===
È possibile che nel caso siano presenti più schede di rete, di cui una o più non configurate, l'accesso al server Samba risulti impedito. Due  possibili soluzioni sono:
È possibile che nel caso siano presenti più schede di rete, di cui una o più non configurate, l'accesso al server Samba risulti impedito. Possibili soluzioni sono:
* Creare un [[Bridge_con_schede_di_rete Bridge di rete | bridge di rete]] comprendente tutte le schede.
* Creare un [[Ethernet Bridging | bridge di rete]] comprendente tutte le schede.
* Togliere fisicamente le schede di rete non necessarie.
* Togliere fisicamente le schede di rete non necessarie.
* Configurare il Bind delle schede di Rete correttamente nel <code>samba.conf</code> aggiungendo:<pre>interfaces = localhost 192.168.1.0/24&#10;bind interfaces only = Yes</pre> Il servizio si presenta sul localhost e sulla "EthX" che è configurata con la classe privata descritta da "interfaces"


=== Impossibile montare automaticamente le risorse all'avvio ===
=== Impossibile montare automaticamente le risorse all'avvio ===
Se si riesce a montare manualmente le risorse remote senza problemi, ma non in automatica all'avvio tramite fstab, provare ad aggiungere alle opzioni della risorsa anche auto, quindi riavviare.
Se si riesce a montare manualmente le risorse remote senza problemi, ma non in automatica all'avvio tramite <code>fstab</code>, provare ad aggiungere alle opzioni della risorsa anche auto, quindi riavviare.<br/>
A questo punto eseguire
A questo punto eseguire:
<pre># mount -a</pre>
<pre># mount -a</pre>
Se la risorsa remota viene caricata correttamente è probabile che il problema sia di tipo temporale, ovvero il sistema tenta di montare la risorsa remota prima che l'interfaccia di rete sia correttamente configurata, altrimenti è probabile che ci sia un qualche errore nella relativa riga di fstab.<br>
Se la risorsa remota viene caricata correttamente è probabile che il problema sia di tipo temporale, ovvero il sistema tenta di montare la risorsa remota prima che l'interfaccia di rete sia correttamente configurata, altrimenti è probabile che ci sia un qualche errore nella relativa riga di <code>fstab</code>.<br>
Nel primo caso se si usa uno strumento grafico come network-manager, il primo tentativo da fare è provare a configurare le interfacce di rete tramite <code>/etc/network/interfaces</code>, quindi riavviare. In caso contrario una soluzione, più complessa, potrebbe essere l'uso di uno script personalizzato che provveda al montaggio delle risorse invece di fstab.
Nel primo caso se si usa uno strumento grafico come <code>network-manager</code>, il primo tentativo da fare è provare a configurare le interfacce di rete tramite <code>/etc/network/interfaces</code>, quindi riavviare.<br>
Se il problema persiste si hanno ancora alcune opzioni:
* Aggiungere alla riga di <code>fstab</code> relativa alla risorsa samba l'opzione <code>auto</code> ed inserire nello [[script]] <code>/etc/rc.local</code> il comando <code>mount -a</code>. Val la pena notare che non si tratta di una soluzione, ma di un brutale trucco per aggirare il problema (anche se generalmente efficace).
* Uso di uno script personalizzato che provveda al montaggio delle risorse invece di <code>fstab</code>; si noti in tal senso che lo strumento grafico <code>wicd</code> permette di associare script a particolari eventi.
* Sostituire il caricamento automatico all'avvio tramite <code>fstab</code> con l'utilizzo di <code>autofs</code>, uno strumento che permette il caricamento dinamico delle risorse remote su imput dell'utente.
 
[[Categoria:Reti con Windows]]
[[Categoria:Samba]]

Versione attuale delle 13:56, 15 dic 2019

Guida estesa

Sommario

  1. Lato server
  2. Lato client
  3. Esempi
  4. Troubleshooting
  5. Approfondimenti


Log

Se nessuna delle soluzioni qui proposte funziona e/o si vogliono più informazioni ricordarsi di controllare i log. Oltre ai soliti /var/log/syslog e /var/log/messages, Samba ha anche una serie di suoi log predefiniti presenti in /var/log/samba.

"Falso" avvio

Assicurarsi sempre che il demone di samba sia davvero in esecuzione:

# systemctl status smbd -l

Se si riceve un output di questo tipo allora il demone è davvero in funzione

● smbd.service - LSB: start Samba SMB/CIFS daemon (smbd)
   Loaded: loaded (/etc/init.d/smbd)
   Active: active (running) since sab 2015-10-03 16:26:10 CEST; 43min ago
  Process: 2213 ExecStop=/etc/init.d/smbd stop (code=exited, status=0/SUCCESS)
  Process: 2218 ExecStart=/etc/init.d/smbd start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/smbd.service
           ├─2227 /usr/sbin/smbd -D
           ├─2234 /usr/sbin/smbd -D

Notare la scritta Active: active (running).

Se invece si riceve qualcosa del genere allora non è in esecuzione:

● smbd.service - LSB: start Samba SMB/CIFS daemon (smbd)
   Loaded: loaded (/etc/init.d/smbd)
   Active: active (exited) since sab 2015-10-03 11:39:58 CEST; 4min 12s ago
  Process: 1799 ExecStart=/etc/init.d/smbd start (code=exited, status=0/SUCCESS)

Notare la scritta Active: active (exited).

Collegamenti simbolici

Se si hanno dei collegamenti simbolici che puntano a risorse non comprese in quelle dichiarate in Samba e si riceve un errore simile al seguente:

smbd[7407]: check_reduced_name: Bad access attempt: cartella_condivisa is a symlink outside the share path

provare ad aggiungere quanto segue nella sezione globale di smb.conf:

follow symlinks = yes
unix extensions = no
wide links = yes

Errori restituiti da smbclient e mount

NT_STATUS_ACCESS_DENIED

Se si riceve l'errore tree connect failed: NT_STATUS_ACCESS_DENIED assicurarsi che:

  • l'utente usato esista davvero, per esempio attraverso il comando # pdbedit -w -L che dovrebbe restituire qualcosa di simile a:
nome_utente:1000:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA:[U          ]:AAA-BBBBBBBB:
Se l'output è vuoto o l'utente desiderato non compare significa che questo non è stato ancora aggiunto a samba (si veda come creare un utente).
  • assicurarsi che l'utente abbia i permessi corretti per le risorse cui si vuole accedere.

NT_STATUS_BAD_NETWORK_NAME

In genere quest'errore di smbclient è dovuto ad una errata indicazione del servizio cui si vuole accedere, per esempio:

$ smbclient ////WWW.XXX.YYY.ZZZ//cartella_condivisa -U nome_utente
$ smbclient WWW.XXX.YYY.ZZZ -L -U nome_utente
$ smbclient //WWW.XXX.YYY.ZZZ/cartella_inesistente -U nome_utente
$ smbclient //nome_server_scoretto/cartella_inesistente -U nome_utente

Nel primo caso si sono usati troppi /, nel secondo l'opzione -L andava anticipata rispetto all'indirizzo IP e nel terzo caso si è indicata una risorsa condivisa inesistente. Nell'ultima riga si è usato o un nome al posto dell'indirizzo IP, il che è assolutamente lecito, tuttavia se tale nome è errato oppure il PC in uso non è in grado di risolvere correttamente il nome specificato allora si riceve l'errore in oggetto.

NT_STATUS_INVALID_NETWORK_RESPONSE

Qualora si dovesse riceve il seguente messaggio d'errore usando smbclient:

machine WWW.XXX.YYY.ZZZ rejected the negotiate protocol. Error was : NT_STATUS_INVALID_NETWORK_RESPONSE

controllare di aver incluso nel parametro hosts allow l'indirizzo WWW.XXX.YYY.ZZZ (o la subnet che lo contiene).

NT_STATUS_IO_TIMEOUT

Se si riceve il messaggio d'errore protocol negotiation failed: NT_STATUS_IO_TIMEOUT è possibile che smbd non sia in esecuzione, si veda "falso avvio" qui sopra.

NT_STATUS_CONNECTION_REFUSED

Se si riceve il messaggio d'errore Connection failed: Error NT_STATUS_CONNECTION_REFUSED è possibile che:

  • smbd non sia in esecuzione, si veda allora "falso avvio" qui sopra;
  • ci sia un problema con una connessione di tipo PPP. Se infatti si è configurato una connessione adsl e la corrispondente interfaccia di rete, ad es. ppp0, non è attiva allora può accadere che samba restituisca il succitato errore. Provare dunque ad attivare tale connessione e riprovare a collegarsi alla risorsa condivisa.

Schede di rete multiple

È possibile che nel caso siano presenti più schede di rete, di cui una o più non configurate, l'accesso al server Samba risulti impedito. Possibili soluzioni sono:

  • Creare un bridge di rete comprendente tutte le schede.
  • Togliere fisicamente le schede di rete non necessarie.
  • Configurare il Bind delle schede di Rete correttamente nel samba.conf aggiungendo:
    interfaces = localhost 192.168.1.0/24
    bind interfaces only = Yes
    Il servizio si presenta sul localhost e sulla "EthX" che è configurata con la classe privata descritta da "interfaces"

Impossibile montare automaticamente le risorse all'avvio

Se si riesce a montare manualmente le risorse remote senza problemi, ma non in automatica all'avvio tramite fstab, provare ad aggiungere alle opzioni della risorsa anche auto, quindi riavviare.
A questo punto eseguire:

# mount -a

Se la risorsa remota viene caricata correttamente è probabile che il problema sia di tipo temporale, ovvero il sistema tenta di montare la risorsa remota prima che l'interfaccia di rete sia correttamente configurata, altrimenti è probabile che ci sia un qualche errore nella relativa riga di fstab.
Nel primo caso se si usa uno strumento grafico come network-manager, il primo tentativo da fare è provare a configurare le interfacce di rete tramite /etc/network/interfaces, quindi riavviare.
Se il problema persiste si hanno ancora alcune opzioni:

  • Aggiungere alla riga di fstab relativa alla risorsa samba l'opzione auto ed inserire nello script /etc/rc.local il comando mount -a. Val la pena notare che non si tratta di una soluzione, ma di un brutale trucco per aggirare il problema (anche se generalmente efficace).
  • Uso di uno script personalizzato che provveda al montaggio delle risorse invece di fstab; si noti in tal senso che lo strumento grafico wicd permette di associare script a particolari eventi.
  • Sostituire il caricamento automatico all'avvio tramite fstab con l'utilizzo di autofs, uno strumento che permette il caricamento dinamico delle risorse remote su imput dell'utente.