Montare la condivisione CIFS con autofs


12

Ho un sistema che esegue RHEL 5.5 e sto provando a montare una condivisione Windows su un server usando autofs. (Dato che la rete non è pronta all'avvio, non voglio utilizzarla fstab.) Sono in grado di montare le condivisioni manualmente, ma autofsnon le sto montando.

Ecco i file con cui sto lavorando:

Alla fine /etc/auto.master, ho:

## Mount this test share:
/test    /etc/auto.test    --timeout=60

In /etc/auto.test, ho:

test    -fstype=cifs,username=testuser,domain=domain.com,password=password ://server/test

Quindi riavvio il autofsservizio.

Tuttavia, questo non funziona. ls-ing la directory non restituisce alcun risultato. Ho seguito tutte queste guide sul web e non le capisco, oppure they.just.don't.work.

Grazie


Ricevi qualcosa nei registri?
c1tadel1,

Dove sono i registri? Ho provato /var/log/messagesinutilmente e non esiste alcun file syslog.
Phanto

Stai cercando nel posto giusto. Prova "echo 1> / proc / fs / cifs / cifsFYI" per aumentare un po 'i messaggi di debug e provare dmesg.
c1tadel1,

Non ho la /proc/fs/cifs/directory, quindi non posso eseguire il comando. Anche io non posso mkdir cifs, anche come root. Il servizio è in esecuzione, ma sul serio non so perché non funzioni. Potrei dover contattare il supporto RH.
Phanto,

Dimentica la posizione proc. Hai già installato il modulo? Esegui questo. ls -al / lib / modules / uname -r/ kernel / fs / cifs dovresti vedere cifs.ko
c1tadel1

Risposte:


9

Dovrebbe esserci già un /etc/auto.smb, usarlo e aggiungere la seguente riga a /etc/auto.master:

/cifs   /etc/auto.smb --timeout=60

Ora tutte le azioni cifs verranno visualizzate in / cifs:

ls /cifs/<server>

mostrerà tutte le condivisioni disponibili. Potresti voler mettere alcune opzioni in /etc/auto.smb per montare con modalità specifiche. Ho un auto.smb che ho scoperto da qualche parte e modificato per fare esattamente questo:

#!/bin/bash
# $Id: auto.smb,v 1.3 2005/04/05 13:02:09 raven Exp $
# This file must be executable to work! chmod 755!

key="$1"
credfile="/etc/auto.smb.$key"

opts="-fstype=cifs,file_mode=0644,dir_mode=0755,uid=eng,gid=eng"
smbclientopts=""

for P in /bin /sbin /usr/bin /usr/sbin
do
    if [ -x $P/smbclient ]
    then
        SMBCLIENT=$P/smbclient
        break
    fi
done

[ -x $SMBCLIENT ] || exit 1

if [ -e "$credfile" ]
then
    opts=$opts",credentials=$credfile"
    smbclientopts="-A "$credfile
else
    smbclientopts="-N"
fi

$SMBCLIENT $smbclientopts -gNL $key 2>/dev/null| awk -v key="$key" -v opts="$opts" -F'|' -- '
    BEGIN   { ORS=""; first=1 }
    /Disk/  {
              if (first)
                  print opts; first=0
              dir = $2
              loc = $2
              # Enclose mount dir and location in quotes
              # Double quote "$" in location as it is special
              gsub(/\$$/, "\\$", loc);
              print " \\\n\t \"/" dir "\"", "\"://" key "/" loc "\""
            }
    END     { if (!first) print "\n"; else exit 1 }
'

Questo farà quello che vuoi. L'ho usato da solo.


Grazie. Mi sono completamente dimenticato di questo problema. In realtà ho contattato il supporto Red Hat e le opzioni che menzioni nelle opzioni che menzioni funzionano. La chiave era inserire le informazioni auto.miscper qualsiasi motivo. È divertente, dal momento che non abbiamo nemmeno più bisogno di farlo.
Phanto,

Questo è utile, ma sfortunatamente non riesco a personalizzare i punti di mount, che era l'obiettivo originale della domanda (e cosa sono venuto qui per scoprirlo)
Carlos Rendon,

Come sviluppo interessante, l'utilizzo di questo con un dispositivo EMC (modulo non sicuro) mi ha richiesto di rimuovere -N dalla linea smbclient. Ha riscontrato questo problema oggi.
lsd

Inoltre, il file delle credenziali non deve contenere spazi tra i segni di uguale. Ciò ha causato un sacco di errori fino a quando non l'ho scoperto. Due diversi documenti hanno detto cose diverse.
lsd

8

Da quando ho trascorso l'intera mattinata a eseguire il debug dello stesso problema. Lasciami spiegare cosa è successo sopra.

/etc/auto.master

## Mount this test share:
/test    /etc/auto.test    --timeout=60

Questo significa che voglio montare qualcosa su /teste per leggere i dettagli/etc/auto.test

/etc/auto.test

test    -fstype=cifs,username=testuser,domain=domain.com,password=password ://server/test

Questo significa che come sottocartella di ciò che è stato specificato in auto.master montare test con le informazioni seguenti. (cioè il montaggio sarà/test/test come indicato correttamente da slm).

Ciò significa che ls /test/testvisualizzerà il contenuto di//server/test

Per raggiungere l'obiettivo originale di / test -> // server / test è necessario quanto segue:

/etc/auto.master

## Mount this test share:
/    /etc/auto.test    --timeout=60

Un paio di altre note. Ho trovato utili le seguenti opzioni di montaggio.

rw - montalo in lettura / scrittura

noserverino - rimuove il messaggio di errore relativo al supporto del numero di inode

credentials=[credential file]- questo ti permette di creare un file separato con le credenziali in essi contenute. Ha il seguente formato:

username=[windows username, domain can be included as well]
password=[windows password]

MODIFICA - 17/06/2013 13:28 GMT-8

slm nei commenti ha sottolineato che il montaggio sulla radice del file system potrebbe essere pericoloso. lsd nei commenti suggerisce una soluzione alternativa, che consiste nel creare un collegamento simbolico dalla radice del filesystem in un posto diverso dove si monterebbe che non si sovrappone a qualcosa di comune. Ad esempio, se si desidera che / test sia un mount, in realtà si monteranno cose su / net / the_test_mount e quindi si creerà un collegamento simbolico / test che punta a / net / the_test_mount


3
Questo è pericoloso nel senso che se qualcuno dovesse aggiungere usr o etc, ad esempio a /etc/auto.test, questi montaggi avrebbero effettivamente la precedenza su quelle directory sul sistema. Certo, è altamente improbabile, ma in generale i montaggi non vengono eseguiti a livello di root.
slm,

Esiste un modo migliore per fornire un mount root usando autofs? In tal caso, aggiorna la tua risposta o lascia un commento e posso aggiornare la mia.
Carlos Rendon,

1
Chiedi ai mount di andare su / net, diciamo, e avere collegamenti simbolici da / test a / net / server / test (o qualsiasi altra cosa). Ora ogni volta che esegui il cd su / net e ls o altro, si monterà.
lsd

4

L'ho appena fatto su un box CentOS 5.6 e penso che parte del tuo problema potrebbe riguardare il tuo file auto.test. Nella sua forma attuale creerai un punto di montaggio / test e quindi un singolo moung di test sotto di esso, ad esempio / test / test. Inoltre potresti voler aggiungere l'opzione --ghost alla tua linea auto.master in questo modo:

/test    /etc/auto.test    --timeout=60 --ghost

L'opzione --ghost crea stub di punti di mount anche quando una determinata condivisione non viene montata attivamente.

Dai un'occhiata a questa pagina Suggerimenti e trucchi wiki di CentOS sui modi per montare le condivisioni SMB / CIFS.

Suggerimenti per il montaggio

  • Condivisione Windows = \ mysmb \ share1
  • Unix Dir. = / test / dir1

idea n. 1

 # /etc/auto.master
/test                 /etc/auto.test --timeout=600 --ghost

# /etc/auto.test
dir1         -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/dir1
dir2         -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/dir2

idea n. 2

 # /etc/auto.master
/test                 /etc/auto.test --timeout=600 --ghost

# /etc/auto.test
*            -fstype=cifs,rw,noperm,netbiosname=${HOST},credentials=/etc/creds.txt ://mysmb/test/&

Grazie per la risposta. Si prega di vedere il mio commento per lsd.
Phanto,

1
Mio dio ... - il fantasma dovrebbe essere predefinito. Sono su fedora / rhel / centos che legge la mappa, ma quando entro nella cartella, non c'è nulla ... Ho avuto la pazza idea di farlo cd "sharename"e sono entrato magicamente nella cartella che lsdice che non esiste ... arrgh
Ray Foss,

-1

Se si utilizza cifs, si consiglia di utilizzare anche il _netdevparametro.

_netdev è perché il filesystem risiede su un dispositivo che richiede l'accesso alla rete, questo è usato per impedire al sistema di tentare di montare questi filesystem fino a quando la rete non è stata abilitata sul sistema host.


1
Corretti alcuni errori di formato e ortografia. Probabilmente dovresti indicare come e dove mettere quel parametro usando la configurazione della domanda come esempio.
Leone,
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.