Monte o compartilhamento CIFS com o autofs

10

Eu tenho um sistema executando o RHEL 5.5 e estou tentando montar um compartilhamento do Windows em um servidor usando autofs . (Devido a rede não estar pronta na inicialização, eu não quero utilizar fstab .) Eu sou capaz de montar os compartilhamentos manualmente, mas autofs simplesmente não está montando-os.

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

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

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

Em /etc/auto.test , tenho:

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

Eu reinicio o serviço autofs .

No entanto, isso não funciona. ls -ing o diretório não retorna nenhum resultado. Eu segui todos esses guias na web, e eu não os entendo, ou eles não funcionam.

Obrigado

    
por Phanto 06.01.2011 / 22:28

4 respostas

8

Deverá existir 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 querer colocar algumas opções em /etc/auto.smb para montar com modos específicos. Eu tenho um auto.smb que eu encontrei 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 mesmo usei isso.

    
por 11.05.2011 / 17:59
5

Desde que passei a manhã inteira depurando o 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 quero montar algo em /test e, para os detalhes, leia /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, a montagem será /test/test como slm corretamente apontado).

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

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

/etc/auto.master

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

Algumas outras notas. Eu encontrei as seguintes opções de montagem úteis.

rw - montar em leitura / gravação

noserverino - remove a mensagem de erro sobre o suporte ao número de 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 PM GMT-8

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 é criar um link simbólico a partir da raiz do sistema de arquivos para um lugar diferente onde você montaria, que não se sobreporia a algo comum. Por exemplo, se você quer que o / test seja um mount, então você monta o material em / net / the_test_mount e então cria um symlink / test que aponta para / net / the_test_mount

    
por 16.05.2013 / 20:34
3

Eu fiz isso em uma caixa do CentOS 5.6 e acho que parte do problema pode estar no arquivo auto.test. Em sua forma atual, você estará criando um ponto de montagem / teste e, em seguida, uma única operação de teste, ou seja, / teste / teste. Além disso, você pode querer adicionar o switch --ghost à sua linha auto.master assim:

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

O switch --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 CentOS sobre maneiras de montar compartilhamentos SMB / CIFS.

Dicas de montagem

  • Compartilhamento do Windows = \ mysmb \ share1
  • Unix Dir. = / test / 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/&
    
por 11.05.2011 / 17:45
-1

Se você estiver usando cifs, é recomendado usar também o parâmetro _netdev .

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

    
por 20.05.2018 / 22:12