Zamontuj udział CIFS za pomocą autofs

12

Mam system z systemem RHEL 5.5 i próbuję zamontować udział Windows na serwerze za pomocą autofs. (Ponieważ sieć nie jest gotowa przy uruchomieniu, nie chcę z niej korzystać fstab.) Jestem w stanie zamontować udziały ręcznie, ale autofspo prostu ich nie instaluję.

Oto pliki, z którymi pracuję:

Na koniec /etc/auto.mastermam:

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

W /etc/auto.testmam:

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

Następnie ponownie uruchamiam autofsusługę.

To jednak nie działa. ls-ing katalog nie zwraca żadnych wyników. Postępowałem zgodnie z tymi wszystkimi przewodnikami w Internecie i albo ich nie rozumiem, albo oni po prostu pracują.

Dziękuję Ci

Phanto
źródło
Czy dostajesz coś w dziennikach?
c1tadel1
Gdzie są dzienniki? Próbowałem /var/log/messagesbezskutecznie i nie ma pliku syslog.
Phanto
Szukasz właściwego miejsca. Wypróbuj „echo 1> / proc / fs / cifs / cifsFYI”, aby nieco zwiększyć liczbę komunikatów debugowania i wypróbować dmesg.
c1tadel1
Nie mam /proc/fs/cifs/katalogu, więc nie mogę uruchomić polecenia. Ja też nie mogę mkdir cifs, nawet jako root. Usługa jest uruchomiona, ale poważnie nie wiem, dlaczego po prostu nie działa. Być może będę musiał skontaktować się z obsługą RH.
Phanto
Zapomnij o lokalizacji proc. Czy w ogóle masz zainstalowany moduł? Uruchom to. ls -al / lib / modules / uname -r/ kernel / fs / cifs powinieneś zobaczyć cifs.ko
c1tadel1 10.01.11

Odpowiedzi:

9

Powinien już istnieć plik /etc/auto.smb, użyj go i dodaj następujący wiersz do /etc/auto.master:

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

Teraz wszystkie akcje cifs pojawią się w / cifs:

ls /cifs/<server>

pokaże wszystkie dostępne akcje. Możesz chcieć umieścić niektóre opcje w /etc/auto.smb, aby montować w określonych trybach. Mam plik auto.smb, który gdzieś tam znalazłem i zmodyfikowałem, aby zrobić dokładnie to:

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

To zrobi, co chcesz. Sam tego użyłem.

LSD
źródło
Dziękuję Ci. Zupełnie zapomniałem o tym problemie. Skontaktowałem się z pomocą techniczną Red Hat, a opcje wymienione w optykach, o których wspomniałeś, działają. Kluczem było umieszczenie informacji auto.miscz dowolnego powodu. To zabawne, ponieważ nie musimy już tego robić.
Phanto
Jest to przydatne, ale niestety nie mogę dostosowywać punktów montowania, co było pierwotnym celem pytania (i tego, co przyszedłem tutaj, aby się dowiedzieć)
Carlos Rendon
Jako interesujący rozwój, użycie tego z urządzeniem EMC (niepewny moduł) wymagało ode mnie usunięcia -N z linii smbclient. Spotkałem ten problem dzisiaj.
lsd
Ponadto plik poświadczeń nie może zawierać spacji między znakami równości. To spowodowało wiele błędów, dopóki się tego nie dowiedziałem. Dwie różne dokumentacje mówiły różne rzeczy.
lsd
8

Ponieważ spędziłem cały ranek na debugowaniu tego samego problemu. Pozwól mi wyjaśnić, co się stało powyżej.

/etc/auto.master

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

Oznacza to, że chcę zamontować coś /testi przeczytać szczegółowe informacje/etc/auto.test

/etc/auto.test

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

Oznacza to, że jako podfolder tego, co zostało określone w auto.master, zainstaluj test z następującymi informacjami. (tzn . mount będzie tak/test/test jak slm poprawnie zaznaczono).

Oznacza to, że ls /test/testwyświetli zawartość//server/test

Aby osiągnąć pierwotny cel / test -> // serwer / test, potrzebujesz:

/etc/auto.master

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

Kilka innych notatek. Przydatne są następujące opcje montowania.

rw - zamontuj go do odczytu / zapisu

noserverino - usuwa komunikat o błędzie dotyczący obsługi numeru i-węzła

credentials=[credential file]- pozwala to utworzyć osobny plik z poświadczeniami w nich. Ma następujący format:

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

EDYCJA - 17.06.2013 13:28 GMT-8

slm w komentarzach wskazał, że montowanie do katalogu głównego systemu plików może być niebezpieczne. lsd w komentarzach sugeruje obejście, które polega na utworzeniu dowiązania symbolicznego z katalogu głównego systemu plików do innego miejsca, w którym chcesz zamontować, które nie nakładałoby się na coś powszechnego. Na przykład, jeśli chciałbyś mieć / test być podłączeniem, wtedy faktycznie zamontowałbyś rzeczy do / net / the_test_mount, a następnie stworzyłeś dowiązanie symboliczne / test, który wskazuje na / net / the_test_mount

Carlos Rendon
źródło
3
Jest to niebezpieczne w tym sensie, że gdyby ktoś dodał usr lub etc, na przykład do /etc/auto.test, te montowania skutecznie zastąpiłyby te katalogi w systemie. To prawda, że ​​jest to bardzo mało prawdopodobne, ale generalnie podłączenia nie są wykonywane na poziomie root.
slm
Czy jest lepszy sposób na zapewnienie rootowania przy użyciu autofs? Jeśli tak, zaktualizuj swoją odpowiedź lub zostaw komentarz, a ja mogę zaktualizować moją.
Carlos Rendon
1
Niech montowania idą do / net, powiedzmy, i mają dowiązania symboliczne z / test do / net / server / test (lub cokolwiek innego). Teraz za każdym razem, gdy przełączysz CD na / net i ls lub cokolwiek, zostanie zamontowane.
lsd
4

Właśnie to zrobiłem na polu CentOS 5.6 i myślę, że część problemu może wynikać z pliku auto.test. W obecnej formie utworzysz punkt testowy / test, a następnie pod nim pojedynczy test, czyli / test / test. Możesz także dodać przełącznik --ghost do linii auto.master w następujący sposób:

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

Przełącznik --ghost tworzy odcinki punktów montowania, nawet jeśli dany udział nie jest aktywnie montowany.

Zajrzyj na stronę CentOS wiki Porady i wskazówki, w jaki sposób montować udziały SMB / CIFS.

Wskazówki dotyczące montażu

  • Windows Share = \ mysmb \ share1
  • Unix Reż. = / test / dir1

pomysł nr 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

pomysł nr 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
źródło
Dziękuję za odpowiedź. Proszę zobaczyć mój komentarz do lsd.
Phanto
1
Mój Boże ... - koszmar powinien być domyślny. Jestem na fedora / rhel / centos, czyta mapę, ale kiedy wchodzę do folderu, nic tam nie ma ... Miałem wtedy szalony pomysł na zrobienie tego cd "sharename"i magicznie wszedł do folderu, który lsmówi, że nie istnieje ... arrgh
Ray Foss
-1

Jeśli używasz cifs, zalecane jest również użycie _netdevparametru.

_netdev Dzieje się tak, ponieważ system plików znajduje się na urządzeniu wymagającym dostępu do sieci. Służy to temu, aby system nie próbował zamontować tych systemów plików, dopóki sieć nie zostanie włączona w systemie hosta.

Gość
źródło
1
Poprawiono kilka błędów formatu i pisowni. Prawdopodobnie powinieneś wskazać, jak i gdzie umieścić ten parametr, używając konfiguracji z pytania jako przykładu.
Leo