Pasang berbagi CIFS dengan autofs

12

Saya memiliki sistem yang menjalankan RHEL 5.5, dan saya mencoba untuk me-mount share Windows di server menggunakan autofs. (Karena jaringan tidak siap pada saat startup, saya tidak ingin memanfaatkan fstab.) Saya dapat me-mount berbagi secara manual, tetapi autofstidak me-mount mereka.

Berikut adalah file yang saya kerjakan:

Pada akhirnya /etc/auto.master, saya memiliki:

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

Dalam /etc/auto.test, saya punya:

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

Saya kemudian restart autofslayanan.

Namun, ini tidak berhasil. ls-dari direktori tidak mengembalikan hasil apa pun. Saya telah mengikuti semua panduan ini di web, dan saya juga tidak memahaminya, atau they.just.don't.work.

Terima kasih

Phanto
sumber
Apakah Anda mendapatkan sesuatu di log?
c1tadel1
Di mana log? Saya telah mencoba tetapi /var/log/messagestidak berhasil, dan tidak ada file syslog.
Phanto
Anda mencari di tempat yang tepat. Coba "echo 1> / proc / fs / cifs / cifsFYI" untuk menambah sedikit pesan debug dan coba dmesg.
c1tadel1
Saya tidak memiliki /proc/fs/cifs/direktori, jadi saya tidak dapat menjalankan perintah. Saya juga tidak bisa mkdir cifs, bahkan sebagai root. Layanan ini berjalan, tetapi saya benar-benar tidak tahu mengapa itu tidak berfungsi. Saya mungkin harus menghubungi dukungan Kesehatan Reproduksi.
Phanto
Lupakan lokasi proc. Apakah Anda bahkan sudah menginstal modul? Jalankan ini. ls -al / lib / modules / uname -r/ kernel / fs / cif Anda akan melihat cifs.ko
c1tadel1

Jawaban:

9

Seharusnya sudah ada /etc/auto.smb, gunakan itu, dan tambahkan baris berikut ke /etc/auto.master:

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

Sekarang semua saham cifs akan muncul di bawah / cifs:

ls /cifs/<server>

akan menampilkan semua bagian yang tersedia. Anda mungkin ingin meletakkan beberapa opsi di /etc/auto.smb untuk me-mount dengan mode tertentu. Saya memiliki auto.smb yang saya temukan di suatu tempat dan dimodifikasi untuk melakukan hal itu:

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

Ini akan melakukan apa yang Anda inginkan. Saya sudah menggunakannya sendiri.

lsd
sumber
Terima kasih. Saya benar-benar lupa tentang masalah ini. Saya sebenarnya menghubungi dukungan topi merah, dan opsi yang Anda sebutkan dalam opsi yang Anda sebutkan berfungsi. Kuncinya adalah menempatkan informasi itu auto.miscuntuk alasan apa pun. Ini lucu, karena kita bahkan tidak perlu melakukan ini lagi.
Phanto
Ini berguna, tapi sayangnya saya tidak bisa menyesuaikan poin mount, yang merupakan tujuan asli dari pertanyaan (dan apa yang saya datang ke sini untuk mencari tahu)
Carlos Rendon
Sebagai perkembangan yang menarik, menggunakan ini dengan perangkat EMC (tidak yakin modul) mengharuskan saya untuk menghapus -N dari baris smbclient. Mengalami masalah ini hari ini.
lsd
Selain itu, file kredensial tidak boleh memiliki spasi di antara tanda sama dengan. Itu menyebabkan banyak kesalahan sampai saya mengetahuinya. Dua lembar dokumentasi yang berbeda mengatakan hal yang berbeda.
lsd
8

Karena saya hanya menghabiskan seluruh pagi saya men-debug masalah yang sama ini. Izinkan saya menjelaskan apa yang terjadi di atas.

/etc/auto.master

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

Ini berarti saya ingin memasang sesuatu di /testdan untuk detailnya baca/etc/auto.test

/etc/auto.test

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

Ini berarti sebagai sub-folder dari apa yang ditentukan dalam auto.master silakan lakukan tes dengan informasi berikut. (mis . mount akan/test/test ditunjukkan dengan benar oleh slm).

Ini berarti ls /test/testakan menampilkan konten//server/test

Untuk mencapai tujuan asli dari / test -> // server / test Anda ingin yang berikut:

/etc/auto.master

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

Beberapa catatan lainnya. Saya menemukan opsi pemasangan berikut berguna.

rw - mount itu baca / tulis

noserverino - menghapus pesan kesalahan tentang dukungan nomor inode

credentials=[credential file]- ini memungkinkan Anda membuat file terpisah dengan kredensial di dalamnya. Ini memiliki format berikut:

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

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

slm dalam komentar telah menunjukkan bahwa pemasangan ke root sistem file bisa berbahaya. lsd di komentar menyarankan solusi, yaitu membuat symlink dari root filesystem ke tempat yang berbeda di mana Anda akan me-mount yang tidak akan tumpang tindih dengan sesuatu yang umum. Sebagai contoh, jika Anda ingin / test menjadi mount, maka Anda sebenarnya akan me-mount item ke / net / the_test_mount dan kemudian membuat symlink / test yang menunjuk ke / net / the_test_mount

Carlos Rendon
sumber
3
Ini berbahaya dalam arti bahwa jika seseorang menambahkan usr atau lain-lain misalnya ke /etc/auto.test bahwa mount ini akan secara efektif menimpa direktori-direktori pada sistem. Memang itu sangat tidak mungkin tetapi pada umumnya mount tidak dilakukan pada level root.
slm
Apakah ada cara yang lebih baik untuk menyediakan root mount menggunakan autofs? Jika demikian silakan perbarui jawaban Anda atau tinggalkan komentar dan saya dapat memperbarui jawaban saya.
Carlos Rendon
1
Apakah mount pergi ke / net, katakanlah, dan memiliki tautan simbolik dari / test ke / net / server / test (atau apa pun). Sekarang setiap kali Anda melakukan cd ke / net dan ls atau apa pun, itu akan me-mount.
lsd
4

Saya baru saja melakukan ini pada kotak CentOS 5.6 dan saya pikir bagian dari masalah Anda mungkin dengan file auto.test Anda. Dalam bentuk saat ini Anda akan membuat titik uji / mount dan kemudian satu set tes di bawahnya, yaitu / test / test. Anda juga mungkin ingin menambahkan saklar --ghost ke baris auto.master Anda seperti:

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

Switch --ghost menciptakan stub point mount bahkan ketika share yang diberikan tidak aktif dipasang.

Lihatlah halaman Tip dan Trik wiki CentOS ini tentang cara me-mount saham SMB / CIFS.

Tips pemasangan

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

ide # 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

ide # 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
sumber
Terimakasih atas balasan anda. Silakan lihat komentar saya untuk lsd.
Phanto
1
Ya Tuhan ... - seharusnya harus default. Saya menggunakan fedora / rhel / centos ia membaca peta, tetapi ketika saya masuk ke dalam folder, tidak ada di sana ... Saya kemudian memiliki ide gila untuk melakukannya cd "sharename"dan secara ajaib memasuki folder yang lsmengatakan tidak ada ... arrgh
Ray Foss
-1

Jika Anda menggunakan cif, disarankan juga untuk menggunakannya _netdev parameter.

_netdev itu karena filesystem berada pada perangkat yang memerlukan akses jaringan, ini digunakan untuk mencegah sistem dari mencoba me-mount sistem file ini sampai jaringan telah diaktifkan pada sistem host.

tamu
sumber
1
Mengoreksi beberapa kesalahan format dan ejaan. Anda mungkin harus menunjukkan bagaimana dan di mana harus meletakkan parameter menggunakan konfigurasi dari pertanyaan sebagai contoh juga.
Leo