Bagaimana cara me-mount share CIFS?

64

Saya menggunakan Ubuntu 11.10, dan saya mencoba me-mount server freenas. Saya memiliki server yang diatur untuk berbagi cif dan nfs tanpa hasil.

saya telah mencoba smbmount //192.168.1.### /mnt/

Saya bukan orang baru di Ubuntu tetapi saya tidak berada di dekat pengguna listrik, jadi saya lebih suka opsi GUI jika tersedia.

Bagaimana cara me-mount share cif di 11.10?

KYLE
sumber

Jawaban:

88

Ada pyNe lokal yang merupakan gui untuk memasang saham samba dan tersedia di pusat perangkat lunak untuk diunduh.

Ada artikel bagus yang terletak di sini tentang cara mengatur dan menggunakannya.

Pertama instal utilitas cifs

sudo apt-get install cifs-utils

Atau, perintah terminal dasar adalah:

mount -t cifs -o username=USERNAME,password=PASSWD //192.168.1.88/shares /mnt/share

Jika Anda ingin melihat mount Anda di Nautilus, ada baiknya membuat subfolder di / media / USERNAME / misalnya:

mkdir /media/paul/cifsShare

juga, kata sandi dapat dihapus dalam perintah mount misalnya (juga akan menunjukkan mode file / folder):

sudo mount -t cifs //nas-server/cifsShare /media/paul/cifsShare -o username=paulOnNAS,iocharset=utf8,file_mode=0777,dir_mode=0777,soft,user,noperm

dalam hal ini Anda akan dimintai kata sandi (sebenarnya untuk 2 kata sandi) pada saat pemasangan.

Baca dokumentasi Samba di sini tentang cara melakukannya dan mengaturnya dengan benar untuk memasang saat memulai, dll.

map7
sumber
2
apakah ada cara untuk me-mount share samba tanpa 1) hard coding kata sandi dan 2) harus menjadi root?
mcExchange
1
@mcExchange root diperlukan dan Anda dapat menggunakan file kredensial seseorang untuk melindungi kredensial Anda
adampski
4
juga pastikan Anda telah cifs-utilsmenginstal: sudo apt-get install cifs-utils. Untuk info lebih lanjut, dokumen bantuan ubuntu ini sangat bagus.
Marco Pashkov
1
pyNealds memberiku kesalahan segmentasi ketika memulai alih ssh di ubuntu 14.04
Pavel Niedoba
1
@ MarscoPashkov cifs-utilsadalah apa yang membuat saya bangun dan pergi. Semua ini tidak akan berhasil. Ini harus langsung dimasukkan dalam jawaban.
rubynorails
13

Seperti yang dikatakan map7, tetapi jika Anda tidak ingin menggunakan izin root setiap kali Anda mengubah file pada drive, maka Anda harus me-mount ke folder pengguna, dan pastikan gid dan uid disetel ke nama pengguna Anda .

Perintah yang mengatur mereka:

mount -t cifs -o username=USERNAME,password=PASSWD,uid=$USER,gid=$USER //192.168.1.88/shares ~/mnt/share

Perhatikan bahwa mntfolder dibuat ~/mnt/sharesebagai gantinya /mnt/share.

Anda juga dapat meninggalkan kata sandi = PASSWD jika Anda menginginkannya untuk meminta Anda alih-alih memilikinya dalam perintah, yang berpotensi disimpan dalam riwayat shell Anda:

mount -t cifs -o username=USERNAME,uid=$USER,gid=$USER //192.168.1.88/shares ~/mnt/share
binamenator
sumber
1
Buat jawaban yang lebih lengkap, dengan beberapa contoh dan saya akan angkat suara :)
storm
5

1) Berbagi samba saya menunjukkan di Caja (ubuntu 16,04 "explorer") sebagai

smb://thinkpad/ddrive/

Ini adalah tes lithmus yang baik, tidak ada masalah koneksi / jalur.

( peringatan : Jika Anda ditanya oleh caja tentang kredensial kata sandi dari mesin windows Anda, Anda mungkin ingin mengganti Domain dari WORKGROUP ke nama mesin, yaitu 'thinkpad'. Maka kredensial login yang benar-benar lokal harus dilakukan.)

2) Jika berhasil, inilah perintahnya:

sudo mount -t cifs -o username=frank //thinkpad/ddrive /mnt/ddrive
  • Pastikan sebelumnya, / mnt / ddrive ada sebagai direktori kosong.
  • Anda dingin juga menambahkan secara ,password=supersecretlangsung (tanpa spasi) setelah nama pengguna =, tetapi Anda juga bisa menunggu diminta, ketika Anda memasukkan perintah.
Frank Nocke
sumber
2
Butuh sedikit waktu untuk mencari tahu, di mana saya bisa mengetikkan smb: // .... path di Nemo / Linux Mint 18, tapi sebenarnya itu cukup sederhana: jika kotak input path tidak terlihat, aktifkan di Lihat menu.
Pedi T.
3

Saya tidak setuju dengan klaim bahwa root selalu diperlukan untuk membuat koneksi cifs berjalan. Memang benar, selalu diperlukan untuk smbmount CLI, tetapi manajer file seperti nautilus memiliki kemampuan untuk me-mount berbagi cifs dan tidak perlu menjadi root.

Saya tidak menggunakan Gnome, tapi saya masih menginstal Nautilus. Jalankan ini di terminal untuk mencegahnya mencoba mengambil alih desktop

$ nautilus --no-desktop &

Di Ubuntu 16.04, menu pohon sisi kiri memiliki "Hubungkan ke Server" di bagian bawah. Klik itu, sarannya adalah ketik "seseorang: //foo.example.com". seseorang adalah kata lama untuk "cifs", dan jika Anda memasukkan server Anda dan berbagi dengan seseorang: // pada awalnya, koneksi tidak berfungsi! Saya berjanji. Jika bagian Anda adalah sesuatu yang bernama, diperlukan setelah garis miring, "smb: //foo.example.com/myshare".

Saya telah menggunakan manajer file lain dengan cara yang sama. Protokol haruslah "seseorang: //".

pauljohn32
sumber
3
  1. Anda dapat meletakkan semua detail itu di / etc / fstab sehingga Anda dapat memasang direktori pada startup sistem. Jika windows atau server SMB ada di alamat IP 192.168.1.1

    /etc/fstab
    //192.168.1.1/SharedFolder/    /mnt/linux_smb   cifs    username=winuser,password=TopSecret   0    0
    
  2. Buat direktori sebagai titik pemasangan linux

    mkdir /mnt/linux_smb
    chmod 755  /mnt/linux_smb
    
  3. Untuk pertama kalinya pasang ini secara manual

    mount -a
    
  4. Kesalahan akhirnya dapat ditemukan oleh

    dmesg | tail 
    
Amit Vujic
sumber
3
  1. Ada masalah khusus yang mungkin dan sangat membuat frustrasi untuk diselesaikan ketika versi CIF / SMB tidak kompatibel antara Linux dan Windows. Dalam hal ini Anda hanya dapat membuat chnage kecil di baris fstab menambahkan "vers = 2.1"

    Jadi, jika Windows atau SMB server ada di alamat IP 192.168.1.1

    /etc/fstab
    
    //192.168.1.1/SharedFolder/   /mnt/linux_smb   cifs   vers=2.1,username=winuser,password=TopSecret   0    0
    
  2. Langkah 2, 3 dan 4 tetap sama dengan jawaban sebelumnya.

Amit Vujic
sumber
1

Saya mengumpulkan sedikit skrip (dimaksudkan untuk Fedora) untuk me-mount sistem file CIFS dari baris perintah dan membuat / menghapus file uji. Mungkin bermanfaat:

#!/bin/bash
# Passes https://www.shellcheck.net/

set -o nounset

# See 
#   https://wiki.samba.org/index.php/Mounting_samba_shares_from_a_unix_client
#   https://access.redhat.com/solutions/448263
# and also
#   https://serverfault.com/questions/309429/mount-cifs-credentials-file-has-special-character

# One needs to run "yum install cifs-utils" to have the kernel module, man page
# and other stuff.

rpm --query cifs-utils > /dev/null

if [[ $? != 0 ]]; then
   echo "Package cifs-utils is not installed -- exiting" >&2
   exit 1
else 
   ver=$(rpm --query cifs-utils)
   echo "Package $ver exists ... good!" >&2
fi

# Where to find credentials? Use the "credential file" approach, which
# we call "authfile". Example content (w/o the leading #) below.
# Make sure there are no spaces around '=' (this is different than
# for "smbclient" which can deal with spaces around '='.)
# ----8<------8<----------------
# username=prisoner
# password=KAR120C
# domain=VILLAGE
# ----8<------8<----------------
# Trailing empty lines will lead to (harmless) error messages
# "Credential formatted incorrectly: (null)"

authfile='/etc/smb.passwd' # Make sure read permissions are restricted!!

# Server to contact.
# In the UNC path, we will use DNS name instead of the (more correct?)
# NetBIOS name.
# mount.cifs manpage says: "To mount using the cifs client, a tcp name
# (rather than netbios name) must be specified for the server."

server_dns=thedome.example.com

# The name of the connecting client, just to be sure (probably useless)

client_nbs=$(hostname --short | tr '[:lower:]' '[:upper]')

if [[ -z $client_nbs ]]; then
  client_nbs=UNKNOWN
fi

# Connect to a certain service (which is a fileservice)
# and then switch to the given directory.
# Instead of appending $directory to form the complete UNC
# (Uniform Naming Convention) path, one could also use the option 
# "prefixpath".
# If there is no need to mount a subdirectory of the service,
# the UNC would just be unc="//$server_dns/$service_name"

service_name='information'
directory='PERSONALDATA'

unc="//$server_dns/$service_name/$directory"

# Finally, we will mount the CIFS filesystem here (the
# permissions on that node are not directly of interest)

mntpoint=/mnt/portal

if [[ ! -d "$mntpoint" ]]; then
   mkdir "$mntpoint"
   if [[ $? != 0 ]]; then
      echo "Could not create mountpoint '$mntpoint' -- exiting" >&2
      exit 1
   fi
fi

# Only this user will be able to access the mounted CIFS filesystem

user=number6
group=number6

# Try to mount this so that only user "number6" can access it

mount -t cifs \
   "$unc" \
   "$mntpoint" \
   --read-write \
   --verbose \
   -o "credentials=$authfile,uid=$user,gid=$group,netbiosname=$client_nbs,file_mode=0660,dir_mode=0770"

res=$?

if [[ $res != 0 ]]; then
   echo "Mount failed!" >&2
   echo "Return code $res; more info may be in kernel log or daemon log" >&2
   echo "Try 'journalctl SYSLOG_FACILITY=0' or 'journalctl SYSLOG_FACILITY=3'" >&2
   echo "...exiting" >&2
   exit 1
fi

# Check permissions on the mount point

stat=$(stat --format="group=%G user=%U access=%A" "$mntpoint")
soll="group=$group user=$user access=drwxrwx---"

if [[ $stat != "$soll" ]]; then
   echo "Incorrect permissions on root of '$mntpoint'" >&2
   echo "Expected: $soll" >&2
   echo "Obtained: $stat" >&2
   echo "...exiting" >&2
   umount "$mntpoint"
   exit 1
fi

# CD to the mountpoint to be sure

cd "$mntpoint"

if [[ $? != 0 ]]; then
  echo "Could not cd to '$mntpoint'" >&2
  exit 1
fi

# CD to directory TEST which must exist (change as appropriate)

newcd="$mntpoint/TEST"

if [[ ! -d "$newcd" ]]; then
   echo "Directory '$newcd' not found - can't test!" >&2
   echo "...exiting" >&2
   exit 1
fi

cd "$newcd"

if [[ $? != 0 ]]; then
  echo "Could not cd to '$newcd'" >&2
  exit 1
fi

# Create a file and check the permissions

testfile=$(mktemp --tmpdir="$newcd")

if [[ $? != 0 ]]; then
   echo "Could not create temporary file in '$newcd'" >&2
   exit 1
fi

stat=$(stat --format="group=%G user=%U access=%A" "$testfile")
soll="group=$group user=$user access=-rw-rw----"

if [[ $stat != "$soll" ]]; then
   echo "Incorrect permissions on temporary file '$testfile'" >&2
   echo "Expected: $soll" >&2
   echo "Obtained: $stat" >&2
   echo "...exiting" >&2
   exit 1
fi

/bin/rm "$testfile"

echo "Mounted '$unc' on '$mntpoint'" >&2
David Tonhofer
sumber
1

cara kerja berbagai metode pemasangan telah habis, tetapi ada sesuatu yang mungkin ingin Anda pertimbangkan

jika Anda tidak ingin memasukkan kredensial Anda langsung ke / etc / fstab, Anda dapat menggunakan opsi mount sebagai gantinya: kredensial = / your / path / di sini / .credentials

ini harus mengandung username = msusername password = mspassword

Simpan file dan keluar dari editor pilihan Anda.

izin harus diubah ke chmod 600

jika Anda memiliki direktori home terenkripsi dan ingin mount Anda aktif saat boot pastikan untuk meletakkan file di luar direktori home Anda. di / etc / atau / media / mungkin tempat yang cocok dan mudah diingat.

amon san
sumber