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.