Elenchi mostrati come file, quando condividono un'unità di assembly CIF montata

Ho un problema in cui una directory viene visualizzata come file durante l'accesso a una condivisione samba (su Ubuntu 12.10) da una macchina Windows.

L'output di ls -ll nella cartella del linuxbox è il seguente:

  • Limitare l'utente SMB a modificare la password
  • Errore di mount Samba / CIFS Ubuntu 14.04 (112)
  • Virtualizzazione - Linux host KVM-QEMU host di Windows VM, come accedere all'unità di dati
  • Samba Public e la cartella "Dropbox"
  • Impostazione di un server Ubuntu Linux per fornire profili Samba, AFP e Windows Roaming
  • samba non comincia su ubuntu
  • chubby@chubby:/media/blackhole/_Arkiv$ ls -ll total 0 drwxrwxrwx 0 jv users 0 Jun 18 2012 _20 drwxrwxrwx 0 jv users 0 Apr 17 2012 _2006 drwxrwxrwx 0 jv users 0 Apr 17 2012 _2007 drwxrwxrwx 0 jv users 0 May 12 2011 _2008 drwxrwxrwx 0 jv users 0 Feb 19 09:53 _2009 drwxrwxrwx 0 jv users 0 Dec 20 2011 _2010 drwxrwxrwx 0 jv users 0 May 8 2012 _2011 drwxrwxrwx 0 jv users 0 Mar 5 11:37 _2012 drwxrwxrwx 0 jv users 0 Feb 28 10:09 _2013 drwxrwxrwx 0 jv users 0 Feb 28 11:18 _Mailarkiv drwxrwxrwx 0 jv users 0 Jan 3 2011 _Praktikanter 

    La voce in / etc / fstab è:

     # Mounting blackhole //192.168.0.50/kunder/ /media/blackhole cifs uid=jv,gid=users,credentials=/home/chubby/.smbcredentials,iocharset=utf8,file_mode=0777,dir_mode=0777 0 0 

    Quando accedo la condivisione direttamente dal NAS nella mia casella di Windows, non ci sono problemi.

    La versione di Samba è 3.6.6, ma non ho trovato nulla nei changelogs che sembrano rilevanti.

    Ho provato a montarlo in diverse posizioni con autorizzazioni diverse, utenti e gruppi, ma non ho fatto alcun progresso

    A causa della mia scarsa reputazione su serverfault (per lo più stackoverflow) non riesco a pubblicare uno screenshot che mostra che le directory vengono visualizzate come file.

    Se digito il path completo in esploratore, l'elenco delle directory funziona in modo eccellente, ad exception di tutte le sottodirectory che vengono visualizzate come file.

    Qualsiasi vector d'attacco per questo problema sarebbe molto apprezzato.

    Fathemes sapere se ho fornito dati insufficienti.

    Modifica: la stessa condivisione quando viene raggiunta da un OS X funziona perfettamente nell'elenco delle directory come directory. I migliori saluti!

    One Solution collect form web for “Elenchi mostrati come file, quando condividono un'unità di assembly CIF montata”

    Ho finalmente risolto il problema.

    Cercherò di scrivere questa risposta più quando avrò il tempo.

    Il problema è connesso a una nuova condivisione di un filesystem cif e l'accesso da un computer Windows7.

    Il bug samba è qui: https://bugzilla.samba.org/show_bug.cgi?id=9346

    Questo a quanto pare deriva dal modo in cui le informazioni sono impostate sull'inode in cif.

    Vedi bug qui: https://bugzilla.kernel.org/show_bug.cgi?id=52791

    Quindi il modo in cui Samba dice determina (per i suoi client Windows) è contando il numero di collegamenti duri, piuttosto che il test per l'attributo. Poiché cif (per qualche ragione oscura) imposta sempre questo a zero, where una directory avrà sempre alless due, la directory verrà visualizzata come file per i client Windows.

    Per "correggere" questo ho installato le intestazioni del kernel e il codice sorgente linux:

     sudo apt-get install linux-headers-$(uname -r) linux-source 

    Poi sono andato a /usr/src/linux-source-3.5.0 e ho estratto l'archivio.

    Trovare la cartella /usr/src/linux-source-3.5.0/linux-source-3.5.0/fs/cifs inode.c quanto segue nel file inode.c (linea 135):

     set_nlink(inode, fattr->cf_nlink); 

    a:

     if(fattr->cf_cifsattrs & ATTR_DIRECTORY) set_nlink(inode, 2); else set_nlink(inode, fattr->cf_nlink); 

    Ho quindi creato un makefile per facilitare la compilazione (e evitare fastidiosi errori insmod): Makefile2 :

     obm-m := cifs.o KDIR := /lib/modules/$(shell uname -r)/build PWD := $(shell pwd) default: $(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules 

    Questo ci permette di fare (nella stessa cartella): sudo make -f Makefile2

    Ci dà un file chiamato cifs.ko

    Adesso possiamo interrompere Samba, smontare le parti che abbiamo, rimuovere i cif attuali e installare il nostro recompiled.

     sudo service smbd stop sudo umount /path/to/share sudo rmmod cifs sudo insmod cifs.ko sudo mount -a sudo service smbd start 

    Per me questo ha fatto il trucco, se si riavvia la scatola però, questo cambiamento non persiste. Aggiungo a questo post quando ho capito un buon modo per farlo.

    Ti prego di gettare tutte le domande o chiarimenti necessari al mio cammino, probabilmente ne impara 🙂

    Anche grazie ai fiori a #samba su freenode, ho imparato tante cose, anche se ho finito per muovermi in un'altra direzione.

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.