Montez le partage CIFS avec autofs

12

J'ai un système exécutant RHEL 5.5 et j'essaie de monter un partage Windows sur un serveur utilisant autofs. (Étant donné que le réseau n'est pas prêt au démarrage, je ne souhaite pas l'utiliser fstab.) Je peux monter les partages manuellement, mais autofsje ne les monte tout simplement pas.

Voici les fichiers avec lesquels je travaille:

À la fin de /etc/auto.master, j'ai:

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

En /etc/auto.test, j'ai:

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

Je redémarre ensuite le autofsservice.

Cependant, cela ne fonctionne pas. ls-l'annuaire ne renvoie aucun résultat. J'ai suivi tous ces guides sur le web, et soit je ne les comprends pas, soit ils ne fonctionnent pas.

Merci

Phanto
la source
Obtenez-vous quelque chose dans les journaux?
c1tadel1
Où sont les journaux? J'ai essayé /var/log/messagesen vain et il n'y a pas de fichier syslog.
Phanto
Vous cherchez au bon endroit. Essayez "echo 1> / proc / fs / cifs / cifsFYI" pour augmenter un peu les messages de débogage et essayez dmesg.
c1tadel1
Je n'ai pas le /proc/fs/cifs/répertoire, donc je ne peux pas exécuter la commande. Je ne peux pas non plus mkdir cifs, même en tant que root. Le service fonctionne, mais je ne sais vraiment pas pourquoi il ne fonctionne tout simplement pas. Il se peut que je doive contacter le support RH.
Phanto
Oubliez l'emplacement du proc. Avez-vous même installé le module? Lance ça. ls -al / lib / modules / uname -r/ kernel / fs / cifs vous devriez voir cifs.ko
c1tadel1

Réponses:

9

Il devrait déjà y avoir un /etc/auto.smb, utilisez-le et ajoutez la ligne suivante à /etc/auto.master:

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

Maintenant, tous les partages cifs s'afficheront sous / cifs:

ls /cifs/<server>

affichera toutes les actions disponibles. Vous voudrez peut-être mettre quelques options dans /etc/auto.smb pour monter avec des modes spécifiques. J'ai un auto.smb que j'ai trouvé quelque part et modifié pour faire exactement cela:

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

Cela fera ce que vous voulez. Je l'ai utilisé moi-même.

LSD
la source
Je vous remercie. J'ai complètement oublié ce problème. J'ai en fait contacté le support Red Hat, et les options que vous mentionnez dans les options que vous mentionnez fonctionnent. La clé était de placer les informations auto.miscpour quelque raison que ce soit. C'est drôle, car nous n'avons même plus besoin de faire ça.
Phanto
C'est utile, mais malheureusement je ne parviens pas à personnaliser les points de montage, ce qui était l'objectif initial de la question (et ce que je suis venu ici pour découvrir)
Carlos Rendon
Comme développement intéressant, son utilisation avec un périphérique EMC (module pas sûr) m'a obligé à supprimer le -N de la ligne smbclient. J'ai rencontré ce problème aujourd'hui.
lsd
En outre, le fichier d'informations d'identification ne doit pas avoir d'espaces entre les signes égaux. Cela a causé un tas d'erreurs jusqu'à ce que je le découvre. Deux documents différents ont dit des choses différentes.
lsd
8

Depuis que je viens de passer toute ma matinée à déboguer ce même problème. Permettez-moi d'expliquer ce qui s'est passé ci-dessus.

/etc/auto.master

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

Cela signifie que je veux monter quelque chose sur /testet pour les détails, lisez/etc/auto.test

/etc/auto.test

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

Cela signifie qu'en tant que sous-dossier de ce qui a été spécifié dans auto.master, veuillez monter test avec les informations suivantes. (c'est-à -/test/test dire que la monture sera comme slm correctement indiquée).

Cela signifie que ls /test/testva afficher le contenu de//server/test

Pour atteindre l'objectif initial de / test -> // serveur / test, vous souhaitez les éléments suivants:

/etc/auto.master

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

Quelques autres notes. J'ai trouvé les options de montage suivantes utiles.

rw - montez-le en lecture / écriture

noserverino - supprime le message d'erreur sur la prise en charge du numéro d'inode

credentials=[credential file]- cela vous permet de créer un fichier séparé avec les informations d'identification en eux. Il a le format suivant:

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

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

slm dans les commentaires a souligné que le montage à la racine du système de fichiers pouvait être dangereux. lsd dans les commentaires suggère une solution de contournement, qui consiste à créer un lien symbolique à partir de la racine du système de fichiers vers un endroit différent où vous monteriez qui ne chevaucherait pas quelque chose de commun. Par exemple, si vous vouliez que / test soit un montage, vous monteriez en fait des éléments sur / net / the_test_mount, puis créer un lien symbolique / test qui pointe vers / net / the_test_mount

Carlos Rendon
la source
3
Ceci est dangereux dans le sens où si quelqu'un devait ajouter usr ou etc par exemple à /etc/auto.test, ces montages remplaceraient effectivement ces répertoires sur le système. Certes, c'est très peu probable, mais en général, les montages ne se font pas au niveau racine.
slm
Existe-t-il un meilleur moyen de fournir un montage racine à l'aide d'autofs? Si oui, veuillez mettre à jour votre réponse ou laisser un commentaire et je pourrai mettre à jour la mienne.
Carlos Rendon
1
Demandez aux montures d'accéder à / net, par exemple, et d'avoir des liens symboliques de / test vers / net / server / test (ou autre). Maintenant, chaque fois que vous cd sur / net et ls ou quoi que ce soit, il montera.
lsd
4

Je viens de le faire sur une boîte CentOS 5.6 et je pense qu'une partie de votre problème pourrait être avec votre fichier auto.test. Dans sa forme actuelle, vous allez créer un point de montage / test, puis un seul fichier de test sous lui, c'est-à-dire / test / test. Vous pouvez également ajouter le commutateur --ghost à votre ligne auto.master comme ceci:

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

Le commutateur --ghost crée des talons de points de montage même lorsqu'un partage donné n'est pas activement monté.

Jetez un œil à cette page de conseils et astuces du wiki CentOS sur les moyens de monter des partages SMB / CIFS.

Conseils de montage

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

idée 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

idée 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/&
slm
la source
Merci pour votre réponse. Veuillez voir mon commentaire pour lsd.
Phanto
1
Mon dieu ... - ghost devrait être par défaut. Je suis sur fedora / rhel / centos on lit la carte, mais quand je vais dans le dossier, rien n'y est ... J'ai alors eu l'idée folle de le faire cd "sharename"et il est entré par magie dans le dossier qui lsdit n'existe pas ... arrgh
Ray Foss
-1

Si vous utilisez des cifs, il est également recommandé d'utiliser le _netdevparamètre.

_netdev c'est parce que le système de fichiers réside sur un périphérique qui nécessite un accès réseau, cela est utilisé pour empêcher le système de tenter de monter ces systèmes de fichiers jusqu'à ce que le réseau soit activé sur le système hôte.

client
la source
1
Correction de quelques erreurs de format et d'orthographe. Vous devriez probablement indiquer comment et où placer ce paramètre en utilisant également la configuration de la question comme exemple.
Leo