Montar compartilhamento CIFS com autofs

12

Eu tenho um sistema executando o RHEL 5.5 e estou tentando montar um compartilhamento do Windows em um servidor usando autofs. (Como a rede não está pronta na inicialização, não quero utilizá-lo fstab.) Consigo montar os compartilhamentos manualmente, mas autofssimplesmente não os montamos.

Aqui estão os arquivos com os quais estou trabalhando:

No final de /etc/auto.master, eu tenho:

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

Em /etc/auto.test, eu tenho:

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

Eu, então, reinicio o autofsserviço.

Entretanto, isso não funciona. ls-o diretório não retorna nenhum resultado. Eu segui todos esses guias na Web e não os entendo ou eles simplesmente não funcionam.

Obrigado

Phanto
fonte
Você está recebendo alguma coisa nos logs?
C1tadel1
Onde estão os logs? Eu tentei /var/log/messagessem sucesso, e não há arquivo syslog.
Phanto
Você está procurando no lugar certo. Tente "echo 1> / proc / fs / cifs / cifsFYI" para aumentar um pouco as mensagens de depuração e tentar o dmesg.
C1tadel1
Como não tenho o /proc/fs/cifs/diretório, não posso executar o comando. Eu também não posso mkdir cifs, mesmo como raiz. O serviço está sendo executado, mas eu realmente não sei por que simplesmente não está funcionando. Talvez eu precise entrar em contato com o suporte de RH.
Phanto
Esqueça a localização do processo. Você ainda tem o módulo instalado? Rode isto. ls -al / lib / modules / uname -r/ kernel / fs / cifs você deve ver cifs.ko
c1tadel1

Respostas:

9

Já deve haver um /etc/auto.smb, use-o e adicione a seguinte linha ao /etc/auto.master:

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

Agora, todos os compartilhamentos cifs serão exibidos em / cifs:

ls /cifs/<server>

mostrará todos os compartilhamentos disponíveis. Você pode colocar algumas opções no /etc/auto.smb para montar com modos específicos. Eu tenho um auto.smb que eu encontrei por aí em algum lugar e modifiquei para fazer exatamente isso:

#!/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 }
'

Isso fará o que você quiser. Eu já usei.

lsd
fonte
Obrigado. Eu esqueci completamente sobre esse problema. Na verdade, entrei em contato com o suporte da Red Hat, e as opções mencionadas nas opções mencionadas funcionam. A chave era colocar as informações auto.miscpor qualquer motivo. É engraçado, já que nem precisamos mais fazer isso.
Phanto 11/11
Isso é útil, mas infelizmente eu não começar a personalizar os pontos de montagem, que era o objetivo original da pergunta (e que eu vim aqui para descobrir)
Carlos Rendon
Como um desenvolvimento interessante, usá-lo com um dispositivo EMC (módulo não certo) exigiu que eu removesse o -N da linha smbclient. Encontrou esse problema hoje.
Lsd
Além disso, o arquivo de credenciais não deve ter espaços entre os sinais de igual. Isso causou muitos erros até eu descobrir isso. Duas partes diferentes da documentação diziam coisas diferentes.
Lsd
8

Desde que passei a manhã inteira depurando esse mesmo problema. Deixe-me explicar o que aconteceu acima.

/etc/auto.master

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

Isso significa que eu quero montar algo nos /testdetalhes e para ler/etc/auto.test

/etc/auto.test

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

Isso significa que, como uma subpasta do que foi especificado no auto.master, monte o teste com as informações a seguir. (ou seja, o suporte será o/test/test slm corretamente indicado).

Isso significa que ls /test/testexibirá o conteúdo de//server/test

Para atingir o objetivo original de / test -> // server / test, você deseja o seguinte:

/etc/auto.master

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

Mais algumas notas. Eu achei as seguintes opções de montagem úteis.

rw - monte-o para leitura / gravação

noserverino - remove a mensagem de erro sobre o suporte ao número do inode

credentials=[credential file]- isso permite que você crie um arquivo separado com as credenciais neles. Tem o seguinte formato:

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

EDIT - 2013-06-17 13:28 GMT-8

A slm nos comentários apontou que a montagem na raiz do sistema de arquivos pode ser perigosa. O lsd nos comentários sugere uma solução alternativa, que é a criação de um link simbólico da raiz do sistema de arquivos para um local diferente onde você montaria que não se sobreporia a algo comum. Por exemplo, se você quisesse ter / test uma montagem, na verdade você montaria coisas em / net / the_test_mount e, em seguida, criaria um link simbólico / teste que aponta para / net / the_test_mount

Carlos Rendon
fonte
3
Isso é perigoso no sentido de que, se alguém adicionasse usr ou etc, por exemplo, ao /etc/auto.test, essas montagens substituiriam efetivamente esses diretórios no sistema. Isso é altamente improvável, mas em geral as montagens não são feitas no nível raiz.
Slm
Existe uma maneira melhor de fornecer uma montagem raiz usando autofs? Em caso afirmativo, atualize sua resposta ou deixe um comentário para que eu possa atualizar o meu.
Carlos Rendon
1
Faça com que as montagens acessem / net, digamos, e tenham links simbólicos de / test para / net / server / test (ou o que seja). Agora, sempre que você cd para / net e ls ou o que for, ele será montado.
usar o seguinte
4

Acabei de fazer isso em uma caixa do CentOS 5.6 e acho que parte do seu problema pode estar no seu arquivo auto.test. Em sua forma atual, você criará um ponto de montagem / test e, em seguida, uma única amostra de teste sob ele, ou seja, / test / test. Além disso, você pode adicionar a opção --ghost à sua linha auto.master da seguinte forma:

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

A opção --ghost cria stubs de pontos de montagem, mesmo quando um determinado compartilhamento não está sendo montado ativamente.

Dê uma olhada nesta página de Dicas e truques do wiki do CentOS sobre maneiras de montar compartilhamentos SMB / CIFS.

Dicas de montagem

  • Compartilhamento do Windows = \ mysmb \ share1
  • Dir. Unix = / teste / dir1

ideia # 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

ideia # 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/&
slm
fonte
Obrigado por sua resposta. Por favor, veja o meu comentário para lsd.
Phanto 11/11
1
Meu Deus ... - deve ser o padrão. Estou no fedora / rhel / centos, ele lê o mapa, mas quando vou para dentro da pasta, não há nada ... Eu tive a ideia maluca de fazer cd "sharename"e ele entrou magicamente na pasta que lsdiz que não existe ... Arrgh
Ray Foss
-1

Se você estiver usando cifs, é recomendável também usar o _netdevparâmetro

_netdev é porque o sistema de arquivos reside em um dispositivo que requer acesso à rede; isso é usado para impedir que o sistema tente montar esses sistemas de arquivos até que a rede seja ativada no sistema host.

hóspede
fonte
1
Corrigidos alguns erros de formato e ortografia. Você provavelmente deve indicar como e onde colocar esse parâmetro usando a configuração da pergunta como exemplo também.
Leo