Pemasangan Otomatis CIFS Dibagikan di Laptop

8

Saya telah melihat pertanyaan yang mirip dengan pertanyaan ini sebelumnya dalam beberapa variasi, tetapi saya belum menemukan jawaban yang memuaskan.

Inilah yang saya miliki:

  • Laptop Debian yang sangat mobile yang sering berganti jaringan.
  • Server FreeNAS di rumah dengan sekelompok saham CIFS di atasnya.

Inilah yang saya inginkan:

  • Jika saya mengakses direktori share CIFS ketika saya di rumah, pasang otomatis share CIFS.
  • Jika saya mengakses bagian CIFS ketika saya berada di tempat lain, segera kembalikan kesalahan (yaitu jangan merenungkan jaringan selama lima menit sebelum mencari tahu NAS tidak ada di sana).
  • Ketika saya menangguhkan atau hibernasi mesin, bersihkan unmount share sehingga mount tidak menunjuk ke udara tipis ketika mesin bangun kembali. Jika pembagian tidak dapat dilepas secara bersih (proses menggunakan direktori), baik:
    • Batalkan penangguhan / hibernasi dan beri tahu saya siapa yang berkemah di gunung; atau
    • Paksa unmount pula dan lanjutkan dengan menangguhkan / hibernasi.
  • Kredit Ekstra: Ketika koneksi jaringan turun (cabut steker atau hilangkan kaitannya dengan WAP), cobalah unmount unmount share.
  • Kredit Ekstra: Sihir ini harus independen dari manajer jaringan yang digunakan.

Tak satu pun dari berbagai opsi yang saya baca tampaknya sesuai:

  • autofs tampaknya dapat diandalkan, tetapi tampaknya tidak memiliki kesadaran tentang menangguhkan / hibernasi.
  • The _netdevpilihan di mountdan /etc/fstabterlihat menarik, tapi muncul hanya berlaku untuk saham NFS.
  • Saya belum bisa mulai gvfsbekerja, tetapi kemudian saya belum berusaha keras.

Ada saran tentang cara mendekati ini?

TAMBAHAN:

Inilah versi singkat dari apa yang akhirnya saya lakukan sejauh ini. Saya menginstal autofs, dan menulis skrip shell kecil untuk memaksa-kedaluwarsa semua volume yang dipasang otomatis, yang dipanggil setiap kali antarmuka jaringan turun.

Saya membuat peta automounter untuk server CIFS saya, dengan kredensial disimpan dalam file eksternal (yuck). Saya kemudian menulis skrip shell berikut:

#!/bin/sh -e

# Expire everything in the automounter.
if [ -f /var/run/autofs.pid ]; then
    kill -USR1 "$(cat /var/run/autofs.pid)"
fi

Mengirim sinyal USR1 ke daemon automount menyebabkannya kadaluarsa secara paksa semua dudukan yang tidak digunakan. Saya kemudian menempatkan skrip ini di /etc/network/if-down.d/autofs, dengan softlink /etc/network/if-post-down.d/autofs. NetworkManager memanggil semua skrip di direktori terakhir ketika koneksi turun, jadi setiap sistem file yang dipasang secara otomatis harus dilepas.

Namun, saya tidak terlalu senang dengan pengaturannya. Sebagai permulaan, autofstidak membuat perbedaan antara volume yang dipasang secara otomatis, dan, setelah menerima USR1, akan melepas semua volume yang tidak aktif, termasuk volume non-jaringan, yang agak berat.

Selanjutnya, kata sandi login untuk server CIFS harus disimpan dalam file. Saya lebih suka diminta untuk itu.

Ngomong-ngomong, itulah yang sudah saya klug bersama sejauh ini. Berhasil, tapi saya akan senang menggunakan sesuatu yang lebih baik ...

ewhac
sumber
Anda mungkin ingin melihat alat Gigolo: uvena.de/gigolo/index.html . Saya menggunakannya untuk mengelola membangun kembali mount SMB b / w rumah dan bekerja di laptop saya.
slm
@slm: Gigolo terlihat menarik, tetapi tampaknya tidak ada cara untuk mengubah opsi pemasangan. Sebagai akibatnya, pembagian muncul dalam apa yang saya sebut mode "bodoh FAT", di mana semua file dan direktori memiliki izin 0700. Sebaliknya, pemasangan berbagi yang sama menggunakan sudo mount -t cifs ...hasil yang lebih disukai hasil disukai. Saya akan mengutak-atiknya sedikit lagi, tetapi saya tidak berpikir Gigolo adalah yang saya cari.
ewhac

Jawaban:

2

Jika Anda menggunakan NetworkManager, Anda dapat menulis skrip yang dijalankan pada antarmuka jaringan yang naik atau turun.

NetworkManager akan menjalankan skrip di direktori /etc/NetworkManager/dispatcher.d dalam urutan abjad sebagai respons terhadap peristiwa jaringan. Setiap skrip harus (a) file biasa, (b) dimiliki oleh root, (c) tidak dapat ditulis oleh grup atau lainnya, (d) tidak diset-uid, (e) dan dapat dieksekusi oleh pemilik. Setiap skrip menerima dua argumen, yang pertama adalah nama antarmuka perangkat yang baru saja diaktifkan, dan yang kedua merupakan tindakan.

Deteksi jaringan Anda sendiri dari misalnya pencarian domain dan kemudian mount atau umount ketika antarmuka online:

#!/bin/bash
#/etc/NetworkManager/dispatcher.d/mount-my-cifs    
case "$2" in
  up)
    # some logic to detect if we're at home
    grep "search myhome.local" /etc/resolv.conf
    if [ "$?" != "0" ] ; then 
       exit
    else 
       mount /mnt/cifs
    fi
    ;;
  down)
       umount /mnt/cifs
    ;;
esac
HBruijn
sumber
Di atas mengasumsikan bahwa cifs mount didefinisikan /etc/fstabdengan noautoopsi
HBruijn
Harap tambahkan asumsi itu ke dalam jawabannya.
Bleeding Fingers