Montar CIFS compartir con autofs

12

Tengo un sistema que ejecuta RHEL 5.5, y estoy tratando de montar un recurso compartido de Windows en un servidor usando autofs. (Debido a que la red no está lista al inicio, no quiero utilizarla fstab). Puedo montar los recursos compartidos manualmente, pero autofssimplemente no los estoy montando.

Aquí están los archivos con los que estoy trabajando:

Al final de /etc/auto.master, tengo:

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

En /etc/auto.test, tengo:

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

Luego reinicio el autofsservicio.

Sin embargo, esto no funciona. ls-ing el directorio no devuelve ningún resultado. He seguido todas estas guías en la web, y no las entiendo o simplemente no funcionan.

Gracias

Phanto
fuente
¿Tienes algo en los registros?
c1tadel1
¿Dónde están los registros? He intentado /var/log/messagesen vano, y no hay un archivo syslog.
Phanto
Estás buscando en el lugar correcto. Intente "echo 1> / proc / fs / cifs / cifsFYI" para aumentar un poco los mensajes de depuración y probar dmesg.
c1tadel1
No tengo el /proc/fs/cifs/directorio, por lo que no puedo ejecutar el comando. Tampoco puedo mkdir cifs, incluso como root. El servicio se está ejecutando, pero en serio no sé por qué simplemente no funciona. Puede que tenga que contactar al soporte de RH.
Phanto
Olvídate de la ubicación del proceso. ¿Incluso tienes el módulo instalado? Ejecuta esto. ls -al / lib / modules / uname -r/ kernel / fs / cifs debería ver cifs.ko
c1tadel1

Respuestas:

9

Ya debería haber un /etc/auto.smb, úselo y agregue la siguiente línea a /etc/auto.master:

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

Ahora todas las acciones cifs aparecerán en / cifs:

ls /cifs/<server>

mostrará todas las acciones disponibles. Es posible que desee poner algunas opciones en /etc/auto.smb para montar con modos específicos. Tengo un auto.smb que encontré en algún lugar y modifiqué para hacer exactamente eso:

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

Esto hará lo que quieras. Lo he usado yo mismo.

LSD
fuente
Gracias. Me he olvidado por completo de este problema. De hecho, contacté al soporte de Red Hat, y las opciones que mencionas en las opciones que mencionas funcionan. La clave era colocar la información auto.miscpor cualquier razón. Es gracioso, ya que ni siquiera necesitamos hacer esto más.
Phanto
Esto es útil, pero desafortunadamente no puedo personalizar los puntos de montaje, que era el objetivo original de la pregunta (y lo que vine a descubrir)
Carlos Rendon
Como un desarrollo interesante, usar esto con un dispositivo EMC (módulo no seguro) me obligó a eliminar el -N de la línea smbclient. Encontré este problema hoy.
lsd
Además, el archivo de credenciales no debe tener espacios entre los signos iguales. Eso causó un montón de errores hasta que lo descubrí. Dos piezas diferentes de documentación decían cosas diferentes.
lsd
8

Como acabo de pasar toda mi mañana depurando este mismo problema. Déjame explicarte lo que pasó arriba.

/etc/auto.master

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

Esto significa que quiero montar algo en /testy para los detalles leer/etc/auto.test

/etc/auto.test

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

Esto significa que como una subcarpeta de lo que se especificó en auto.master, realice la prueba con la siguiente información. (es decir, el montaje será/test/test como slm señaló correctamente).

Esto significa que ls /test/testmostrará el contenido de//server/test

Para lograr el objetivo original de / test -> // server / test, querrás lo siguiente:

/etc/auto.master

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

Un par de otras notas. Encontré las siguientes opciones de montaje útiles.

rw - montarlo leer / escribir

noserverino - elimina el mensaje de error sobre el soporte de número de inodo

credentials=[credential file]- esto le permite crear un archivo separado con las credenciales en ellos. Tiene el siguiente formato:

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

EDITAR - 2013-06-17 13:28 PM GMT-8

slm en los comentarios ha señalado que el montaje en la raíz del sistema de archivos podría ser peligroso. lsd en los comentarios sugiere una solución alternativa, que es crear un enlace simbólico desde la raíz del sistema de archivos a un lugar diferente donde montaría que no se superponga con algo común. Por ejemplo, si desea que / test sea un montaje, entonces realmente montaría cosas en / net / the_test_mount y luego crearía un enlace simbólico / prueba que apunte a / net / the_test_mount

Carlos Rendon
fuente
3
Esto es peligroso en el sentido de que si alguien agregara usr o etc., por ejemplo a /etc/auto.test, estos montajes anularían efectivamente esos directorios en el sistema. De acuerdo, es muy poco probable, pero en general las monturas no se realizan a nivel raíz.
slm
¿Hay una mejor manera de proporcionar un montaje raíz usando autofs? Si es así, actualice su respuesta o deje un comentario y yo puedo actualizar la mía.
Carlos Rendon
1
Haga que los montajes vayan a / net, digamos, y tengan enlaces simbólicos de / test a / net / server / test (o lo que sea). Ahora, cada vez que cd a / net y ls o lo que sea, se montará.
lsd
4

Acabo de hacer esto en un cuadro de CentOS 5.6 y creo que parte de su problema podría estar en su archivo auto.test. En su forma actual, creará un punto de montaje / test y luego un solo moung de prueba debajo, es decir, / test / test. También es posible que desee agregar el interruptor --ghost a su línea auto.master así:

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

El interruptor --ghost crea trozos de puntos de montaje incluso cuando un recurso compartido determinado no se está montando activamente.

Eche un vistazo a esta página de consejos y trucos wiki de CentOS sobre formas de montar recursos compartidos SMB / CIFS.

Consejos de montaje

  • Windows Share = \ mysmb \ share1
  • Unix Dir. = / prueba / dir1

idea # 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 # 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
fuente
Gracias por su respuesta. Por favor vea mi comentario para lsd.
Phanto
1
Dios mío ... ... el último debería ser el predeterminado. Estoy en fedora / rhel / centos, lee el mapa, pero cuando cd "sharename"entro en la carpeta, no hay nada ... Entonces tuve la loca idea de hacerlo y entró mágicamente en la carpeta que lsdice que no existe ... arrgh
Ray Foss
-1

Si está utilizando cifs, también se recomienda usar el _netdevparámetro.

_netdev es porque el sistema de archivos reside en un dispositivo que requiere acceso a la red, esto se usa para evitar que el sistema intente montar estos sistemas de archivos hasta que la red se haya habilitado en el sistema host.

huésped
fuente
1
Se corrigieron algunos errores de formato y ortografía. Probablemente también debería señalar cómo y dónde colocar ese parámetro usando la configuración de la pregunta como ejemplo.
Leo