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


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.


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


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/&

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.


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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.