Mount CIFS chia sẻ với autofs


12

Tôi có một hệ thống đang chạy RHEL 5.5 và tôi đang cố gắng chia sẻ Windows trên máy chủ bằng cách sử dụng autofs. (Do mạng chưa sẵn sàng khi khởi động, tôi không muốn sử dụng fstab.) Tôi có thể gắn kết các cổ phần theo cách thủ công, nhưng autofschỉ là không gắn chúng.

Dưới đây là các tập tin tôi đang làm việc với:

Vào cuối /etc/auto.master, tôi có:

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

Trong /etc/auto.test, tôi có:

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

Sau đó tôi khởi động lại autofsdịch vụ.

Tuy nhiên, điều này không hoạt động. ls-ing thư mục không trả lại bất kỳ kết quả. Tôi đã làm theo tất cả các hướng dẫn này trên web và tôi không hiểu chúng, hoặc they.just.d Don't.work.

Cảm ơn bạn


Bạn có nhận được bất cứ điều gì trong các bản ghi?
c1tadel1

Nhật ký ở đâu? Tôi đã cố gắng /var/log/messagesvô ích, và không có tệp syslog.
Phanto

Bạn đang tìm đúng nơi. Hãy thử "echo 1> / Proc / fs / cifs / cifsFYI" để tăng các thông báo gỡ lỗi một chút và thử dmesg.
c1tadel1

Tôi không có /proc/fs/cifs/thư mục, vì vậy tôi không thể chạy lệnh. Tôi cũng không thể mkdir cifs, thậm chí là root. Dịch vụ đang chạy, nhưng tôi thực sự không biết tại sao nó không hoạt động. Tôi có thể phải liên hệ với bộ phận hỗ trợ của RH.
Phanto

Quên vị trí của Proc. Bạn thậm chí có cài đặt mô-đun? Chạy cái này ls -al / lib / module / uname -r/ kernel / fs / cifs bạn sẽ thấy cifs.ko
c1tadel1

Câu trả lời:


9

Cần phải có /etc/auto.smb, sử dụng nó và thêm dòng sau vào /etc/auto.master:

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

Bây giờ tất cả các cổ phiếu cifs sẽ hiển thị dưới / cifs:

ls /cifs/<server>

sẽ hiển thị tất cả các cổ phiếu có sẵn. Bạn có thể muốn đặt một số tùy chọn trong /etc/auto.smb để gắn kết với các chế độ cụ thể. Tôi có một auto.smb mà tôi đã tìm thấy ở đâu đó và sửa đổi để làm chính xác điều đó:

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

Điều này sẽ làm những gì bạn muốn. Tôi đã sử dụng nó cho mình.


Cảm ơn bạn. Tôi đã hoàn toàn quên mất vấn đề này. Tôi thực sự đã liên hệ với bộ phận hỗ trợ mũ đỏ và các tùy chọn bạn đề cập trong các hoạt động bạn đề cập có tác dụng. Chìa khóa là đặt thông tin auto.miscvì bất kỳ lý do gì. Thật buồn cười, vì chúng ta thậm chí không cần phải làm điều này nữa.
Phanto

Điều này rất hữu ích, nhưng thật không may, tôi không thể tùy chỉnh các điểm gắn kết, đó là mục tiêu ban đầu của câu hỏi (và những gì tôi đến đây để tìm hiểu)
Carlos Rendon

Là một sự phát triển thú vị, sử dụng điều này với một thiết bị EMC (mô-đun không chắc chắn) yêu cầu tôi loại bỏ -N khỏi dòng smbclient. Gặp phải vấn đề này ngày hôm nay.
lsd

Ngoài ra, tệp thông tin đăng nhập không được có khoảng trắng giữa các dấu bằng. Điều đó gây ra một loạt các lỗi cho đến khi tôi phát hiện ra điều đó. Hai phần khác nhau của tài liệu nói những điều khác nhau.
lsd

8

Vì tôi chỉ dành toàn bộ buổi sáng để gỡ lỗi vấn đề tương tự. Hãy để tôi giải thích những gì đã xảy ra ở trên.

/etc/auto.master

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

Điều này có nghĩa là tôi muốn gắn kết một cái gì đó tại /testvà để biết chi tiết đọc/etc/auto.test

/etc/auto.test

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

Điều này có nghĩa là một thư mục con của những gì đã được chỉ định trong auto.master, vui lòng gắn thử nghiệm với thông tin sau đây. (tức là gắn kết sẽ/test/test là slm được chỉ ra chính xác).

Điều này có nghĩa là ls /test/testsẽ hiển thị nội dung của//server/test

Để hoàn thành mục tiêu ban đầu của / test -> // server / test, bạn sẽ muốn như sau:

/etc/auto.master

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

Một vài ghi chú khác. Tôi tìm thấy các tùy chọn gắn kết sau đây hữu ích.

rw - gắn kết nó đọc / ghi

noserverino - xóa thông báo lỗi về hỗ trợ số inode

credentials=[credential file]- điều này cho phép bạn tạo một tệp riêng biệt với thông tin đăng nhập trong đó. Nó có định dạng sau:

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

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

slm trong các ý kiến ​​đã chỉ ra rằng việc gắn vào thư mục gốc của hệ thống tập tin có thể nguy hiểm. lsd trong các bình luận cho thấy một cách giải quyết, đó là tạo một liên kết tượng trưng từ thư mục gốc của hệ thống tập tin đến một nơi khác mà bạn sẽ gắn kết không trùng lặp với một cái gì đó phổ biến. Ví dụ: nếu bạn muốn có / test là một mount, thì bạn thực sự sẽ gắn kết công cụ vào / net / the_test_mount và sau đó tạo symlink / test trỏ đến / net / the_test_mount


3
Điều này rất nguy hiểm theo nghĩa là nếu ai đó thêm usr hoặc v.v. vào /etc/auto.test thì các mount này sẽ ghi đè lên các thư mục đó trên hệ thống một cách hiệu quả. Cấp điều đó rất khó xảy ra nhưng nói chung gắn kết không được thực hiện ở cấp độ gốc.
slm

Có cách nào tốt hơn để cung cấp một root mount bằng autofs không? Nếu vậy xin vui lòng cập nhật câu trả lời của bạn hoặc để lại nhận xét và tôi có thể cập nhật của tôi.
Carlos Rendon

1
Có các gắn kết đi đến / net, nói và có các liên kết tượng trưng từ / test đến / net / server / test (hoặc bất cứ điều gì). Bây giờ bất cứ khi nào bạn cd vào / net và ls hoặc bất cứ điều gì, nó sẽ gắn kết.
lsd

4

Tôi mới thực hiện điều này trên hộp CentOS 5.6 và tôi nghĩ một phần vấn đề của bạn có thể là do tệp auto.test của bạn. Ở dạng hiện tại, bạn sẽ tạo một điểm gắn kết thử nghiệm và sau đó là một thử nghiệm duy nhất trong đó, tức là / thử nghiệm / thử nghiệm. Ngoài ra, bạn có thể muốn thêm khóa chuyển đổi --ghost vào dòng auto.master của mình như vậy:

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

Công tắc --ghost tạo ra các điểm gắn kết ngay cả khi một chia sẻ nhất định không được tích cực gắn kết.

Hãy xem trang Mẹo và thủ thuật wiki CentOS này về các cách để gắn kết cổ phiếu SMB / CIFS.

Mẹo gắn

  • Chia sẻ Windows = \ mysmb \ share1
  • Unix Dir. = / kiểm tra / dir1

ý tưởng số 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

ý tưởng số 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/&

Cảm ơn bạn đã trả lời của bạn. Xin vui lòng xem bình luận của tôi cho lsd.
Phanto

1
Chúa ơi ... - nên được mặc định. Tôi đang ở trên fedora / rhel / centos, nó đọc bản đồ, nhưng khi tôi vào trong thư mục, không có gì ở đó ... Tôi đã có ý tưởng điên rồ khi làm cd "sharename"và nó đã nhập vào thư mục lskhông tồn tại ... mảng
Ray Foss

-1

Nếu bạn đang sử dụng cifs, bạn cũng nên sử dụng _netdevtham số.

_netdev Đó là vì hệ thống tệp nằm trên thiết bị yêu cầu truy cập mạng, nên hệ thống này được sử dụng để ngăn hệ thống cố gắn các hệ thống tệp này cho đến khi mạng được bật trên hệ thống máy chủ.


1
Sửa một vài lỗi định dạng và chính tả. Bạn có lẽ nên chỉ ra cách và nơi để đặt tham số đó bằng cách sử dụng cấu hình từ câu hỏi làm ví dụ.
Leo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.