เมานต์ CIFS แบ่งปันด้วย autofs


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- ไดเรกทอรีจะไม่ส่งคืนผลลัพธ์ใด ๆ ฉันได้ปฏิบัติตามคำแนะนำเหล่านี้ทั้งหมดในเว็บและฉันก็ไม่เข้าใจพวกเขาหรือพวกเขาเพียงแค่ไม่ทำงาน

ขอขอบคุณ


คุณได้รับอะไรในบันทึกหรือไม่
c1tadel1

บันทึกอยู่ที่ไหน ฉันพยายามที่/var/log/messagesจะไม่มีประโยชน์และไม่มีไฟล์ syslog
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 1

คำตอบ:


9

ควรมี /etc/auto.smb อยู่แล้วให้ใช้และเพิ่มบรรทัดต่อไปนี้ใน /etc/auto.master:

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

ตอนนี้หุ้น cif ทั้งหมดจะแสดงภายใต้ / 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 จริง ๆ แล้วและตัวเลือกที่คุณพูดถึงใน opts ที่คุณพูดถึงทำงานได้ กุญแจสำคัญคือการวางข้อมูลauto.miscด้วยเหตุผลใดก็ตาม มันตลกเพราะเราไม่จำเป็นต้องทำสิ่งนี้อีกต่อไป
Phanto

สิ่งนี้มีประโยชน์ แต่น่าเสียดายที่ฉันไม่ได้ปรับแต่งจุดเมานต์ซึ่งเป็นเป้าหมายดั้งเดิมของคำถาม (และสิ่งที่ฉันมาที่นี่เพื่อค้นหา)
Carlos Rendon

เป็นการพัฒนาที่น่าสนใจการใช้สิ่งนี้กับอุปกรณ์ EMC (ไม่แน่ใจว่าโมดูล) ต้องการให้ฉันลบ -N ออกจากบรรทัด smbclient พบปัญหานี้ในวันนี้
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เป็น slm ชี้ให้เห็นอย่างถูกต้อง)

ซึ่งหมายความว่า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 ในคอมเม้นต์แนะนำวิธีแก้ปัญหาซึ่งเป็นการสร้าง symlink จากรูทของระบบไฟล์ไปยังตำแหน่งอื่นที่คุณจะเมาท์ซึ่งจะไม่ทับซ้อนกับบางสิ่งที่พบได้ทั่วไป ตัวอย่างเช่นหากคุณต้องการให้ / ทดสอบเป็นเมานท์คุณจะต้องเมานต์สิ่งของเป็น / net / the_test_mount แล้วสร้าง symlink / test ที่ชี้ไปที่ / net / the_test_mount


3
นี่เป็นอันตรายในแง่ที่ว่าถ้าใครบางคนต้องเพิ่ม usr หรืออื่น ๆ เช่น /etc/auto.test ว่าการเมาต์เหล่านี้จะแทนที่ไดเร็กทอรีเหล่านั้นบนระบบได้อย่างมีประสิทธิภาพ ได้รับซึ่งไม่น่าเป็นไปได้สูง แต่โดยทั่วไปแล้วการเมาท์จะไม่ทำที่ระดับรูต
slm

มีวิธีที่ดีกว่าในการจัดเตรียมรูทเมาท์โดยใช้ autofs หรือไม่? ถ้าเป็นเช่นนั้นโปรดอัปเดตคำตอบของคุณหรือแสดงความคิดเห็นและฉันสามารถปรับปรุงของฉัน
Carlos Rendon

1
ให้เมาท์ไปที่ / net พูดและมีลิงก์สัญลักษณ์จาก / test ถึง / net / server / test (หรืออะไรก็ตาม) ตอนนี้เมื่อใดก็ตามที่คุณ cd to / net และ ls หรืออะไรก็ตามมันจะ mount
lsd

4

ฉันเพิ่งทำสิ่งนี้ในกล่อง CentOS 5.6 และฉันคิดว่าส่วนหนึ่งของปัญหาของคุณอาจเป็นไฟล์ auto.test ของคุณ ในรูปแบบปัจจุบันคุณจะต้องสร้างจุดทดสอบ / จากนั้นจะมีการทดสอบหนึ่งครั้งภายใต้รูปนั้นคือ / test / test นอกจากนี้คุณอาจต้องการเพิ่ม --ghost สลับไปยังบรรทัด auto.master ของคุณเช่น:

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

สวิตช์ --ghost จะสร้างสตับของจุดยึดแม้ว่าจะไม่ได้ติดตั้งแบบแบ่งใช้ก็ตาม

ดูหน้าเคล็ดลับและเทคนิค CentOS wiki นี้เพื่อหาวิธีแบ่งปัน SMB / CIFS

เคล็ดลับการติดตั้ง

  • Windows Share = \ mysmb \ share1
  • Unix Dir = / ทดสอบ / 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
Ray Foss

-1

หากคุณใช้ cif แนะนำให้ใช้_netdevพารามิเตอร์ด้วย

_netdev เป็นเพราะระบบไฟล์ตั้งอยู่บนอุปกรณ์ที่ต้องการการเข้าถึงเครือข่ายสิ่งนี้ใช้เพื่อป้องกันไม่ให้ระบบพยายามเมานต์ระบบไฟล์เหล่านี้จนกว่าเครือข่ายจะเปิดใช้งานในระบบโฮสต์


1
แก้ไขรูปแบบและการสะกดคำผิดเล็กน้อย คุณควรชี้ให้เห็นว่าจะวางพารามิเตอร์นั้นอย่างไรโดยใช้การกำหนดค่าจากคำถามเป็นตัวอย่างด้วย
Leo
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.