autofs로 CIFS 공유 마운트


12

RHEL 5.5를 실행하는 시스템이 있고를 사용하여 서버에 Windows 공유를 마운트하려고합니다 autofs. (시작할 때 네트워크가 준비되지 않았기 때문에을 사용하고 싶지 않습니다 fstab.) 공유를 수동으로 마운트 할 수 있지만 공유 autofs하지는 않습니다.

작업중 인 파일은 다음과 같습니다.

의 끝에 /etc/auto.master, 나는 :

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

에서 /etc/auto.test:

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

그런 다음 autofs서비스 를 다시 시작하십시오 .

그러나 이것은 작동하지 않습니다. ls-ing 디렉토리는 결과를 반환하지 않습니다. 웹에서이 모든 가이드를 따라 왔으며 이해하지 못하거나 작동하지 않습니다.

감사합니다


로그에 무언가가 있습니까?
c1tadel1

로그는 어디에 있습니까? 나는 시도 /var/log/messages아무 소용, 어떤 시스템 로그 파일은 존재하지 않는다.
Phanto

올바른 장소를 찾고 있습니다. "echo 1> / proc / fs / cifs / cifsFYI"를 시도하여 디버그 메시지를 약간 늘리고 dmesg에 시도하십시오.
c1tadel1

내가없는 /proc/fs/cifs/내가 명령을 실행할 수 있도록 디렉토리. 나는 mkdir cifs루트조차도 할 수 없습니다 . 서비스가 실행 중이지만 왜 작동하지 않는지 진지하게 모르겠습니다. RH 지원에 문의해야 할 수도 있습니다.
Phanto

proc 위치를 잊어 버리십시오. 모듈이 설치되어 있습니까? 이것을 실행하십시오. ls -al / lib / modules / uname -r/ kernel / fs / cifs cifs.ko
c1tadel1

답변:


9

/etc/auto.smb가 이미 있어야하며이를 사용하고 /etc/auto.master에 다음 줄을 추가하십시오.

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

이제 모든 cifs 공유가 / cifs 아래에 나타납니다.

ls /cifs/<server>

사용 가능한 모든 주식을 표시합니다. 특정 모드로 마운트하기 위해 일부 옵션을 /etc/auto.smb에 넣을 수 있습니다. auto.smb가 있는데 어딘가에 있고 정확히 그렇게하도록 수정했습니다.

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

이것은 당신이 원하는 것을 할 것입니다. 나는 그것을 직접 사용했습니다.


감사합니다. 이 문제에 대해 완전히 잊었습니다. 나는 실제로 Red Hat 지원팀에 연락했으며 언급 한 옵션에서 언급 한 옵션이 작동합니다. 열쇠는 auto.misc어떤 이유로 든 정보를 배치하는 것이 었습니다 . 더 이상 할 필요가 없기 때문에 재밌습니다.
Phanto

유용하지만, 불행히도 나는 (발견하고 내가 여기 온) 질문의 원래 목표했던 마운트 포인트를, 사용자 정의 할 수 없습니다
카를로스 렌던

흥미로운 개발로 EMC 장치 (확실하지 않은 모듈)와 함께 사용하려면 smbclient 라인에서 -N을 제거해야했습니다. 오늘이 문제가 발생했습니다.
lsd

또한 신임 정보 파일에는 등호 사이에 공백이 없어야합니다. 그 사실을 알 때까지 많은 오류가 발생했습니다. 서로 다른 두 가지 문서가 서로 다른 내용을 말했습니다.
lsd

8

방금 아침 내내 같은 문제를 디버깅하는 데 보냈습니다. 위에서 일어난 일을 설명하겠습니다.

/etc/auto.master

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

이것은 내가 무언가를 마운트 /test하고 세부 정보를 읽고 싶다는 것을 의미합니다./etc/auto.test

/etc/auto.test

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

이것은 auto.master에 지정된 것의 하위 폴더로서 다음 정보를 사용하여 테스트를 마운트하십시오. (즉 , 마운트가/test/test 올바르게 지적 된대로 표시됩니다).

이것은 ls /test/test내용을 표시합니다//server/test

/ test-> // server / test의 원래 목표를 달성하려면 다음을 원할 것입니다.

/etc/auto.master

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

다른 몇 가지 메모. 다음 마운트 옵션이 유용하다는 것을 알았습니다.

rw -읽기 / 쓰기로 마운트

noserverino -inode 번호 지원에 대한 오류 메시지를 제거합니다

credentials=[credential file]-자격 증명이있는 별도의 파일을 만들 수 있습니다. 형식은 다음과 같습니다.

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

편집-2013-06-17 13:28 PM GMT-8

주석에서 slm은 파일 시스템의 루트에 마운트하는 것이 위험 할 수 있다고 지적했습니다. 주석에서 lsd는 해결 방법을 제안합니다.이 방법은 파일 시스템의 루트에서 일반적인 것과 겹치지 않는 다른 장소로 심볼 링크를 만드는 것입니다. 예를 들어, / test를 마운트하려면 실제로 물건을 / net / the_test_mount에 마운트 한 다음 / net / the_test_mount를 가리키는 심볼릭 링크 / test를 만듭니다.


3
누군가가 usr 등을 /etc/auto.test에 추가 할 경우 이러한 마운트가 시스템의 해당 디렉토리를 효과적으로 무시한다는 점에서 위험합니다. 그 가능성은 높지 않지만 일반적으로 마운트는 루트 수준에서 수행되지 않습니다.
slm

autofs를 사용하여 루트 마운트를 제공하는 더 좋은 방법이 있습니까? 그렇다면 답변을 업데이트하거나 의견을 남겨 주시면 업데이트 할 수 있습니다.
카를로스 렌던

1
마운트가 / net으로 가고 / test에서 / net / server / test (또는 무엇이든)로 심볼릭 링크를 갖도록하십시오. 이제 / net 및 ls 또는 cd로 CD를 넣을 때마다 마운트됩니다.
lsd

4

방금 CentOS 5.6 상자 에서이 작업을 수행했으며 문제의 일부가 auto.test 파일에 있다고 생각합니다. 현재 형식에서는 / test 탑재 지점을 만든 다음 그 아래에 단일 테스트 수준 (예 : / test / test)을 만듭니다. 또한 다음과 같이 --ghost 스위치를 auto.master 라인에 추가 할 수 있습니다.

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

--ghost 스위치는 지정된 공유가 활발하게 마운트되지 않은 경우에도 마운트 포인트 스텁을 만듭니다.

SMB / CIFS 공유를 마운트하는 방법에 대한 이 CentOS 위키 팁 및 요령 페이지 를 살펴보십시오 .

장착 팁

  • Windows 공유 = \ mysmb \ share1
  • 유닉스 디르 = / test / dir1

아이디어 # 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

아이디어 # 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/&

당신의 답변에 감사드립니다. lsd에 대한 내 의견을 참조하십시오.
Phanto

1
나의 신 ...-고스트가 기본값이어야한다. 나는 fedora / rhel / centos에있어지도를 읽지 만 폴더 안에 들어가면 아무것도 없습니다 ... 그런 미친 아이디어가 있었고 존재하지 않는 cd "sharename"폴더에 마술로 들어갔습니다 ls... arrgh
레이 포스

-1

cifs를 사용하는 경우 _netdev매개 변수 도 사용하는 것이 좋습니다 .

_netdev 파일 시스템은 네트워크 액세스가 필요한 장치에 상주하기 때문에 호스트 시스템에서 네트워크가 활성화 될 때까지 시스템이 이러한 파일 시스템을 마운트하지 못하도록하는 데 사용됩니다.


1
몇 가지 형식 및 철자 오류가 수정되었습니다. 예를 들어 질문의 구성을 사용하여 해당 매개 변수를 배치하는 방법과 위치를 지적해야합니다.
Leo
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.