Bir CIFS paylaşımını nasıl bağlarım?


64

Ubuntu 11.10 kullanıyorum ve bir freenas sunucusu bağlamaya çalışıyorum. Ben paylaşmak için sunucu kümesine sahip cifs ve NFS hiç şansım.

denedim smbmount //192.168.1.### /mnt/

Ubuntu'da yeni değilim ama bir uzman kullanıcının yanında değildim, bu nedenle varsa bir GUI seçeneğini tercih ederim.

11.10'da bir cif hissesini nasıl kurarım ?

Yanıtlar:


88

Orada pyNeighborhood indirmek için yazılım merkezinde samba paylarını ve kullanılabilir monte etmek için bir gui'dir.

Burada nasıl kurulup kullanılacağına dair iyi bir makale var.

İlk kurulum cifs utils

sudo apt-get install cifs-utils

Alternatif olarak, temel terminal komutu şudur:

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

Bağlantınızı Nautilus'ta görmek isterseniz, önce / media / USERNAME / içinde bir alt klasör oluşturmak iyi olur:

mkdir /media/paul/cifsShare

ayrıca, örneğin mount komutunda parola bırakılabilir (dosya / klasör modlarını da gösterir):

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

Bu durumda, montaj anındaki parolayı (aslında 2 parola için) istenir.

Samba belgelerini buradan nasıl okuyacağınızı ve başlangıçta vb.


2
samba paylaşımını 1) şifrelemeyi zorlaştırmadan ve 2) root olmak zorunda kalmadan bir yol var mı?
mcExchange

1
@mcExchange kök gereklidir ve kimlik bilgilerinizi korumak için smb kimlik bilgileri dosyasını kullanabilirsiniz
adampski

4
Ayrıca emin olun cifs-utilsyüklü: sudo apt-get install cifs-utils. Daha fazla bilgi için bu ubuntu yardım doktoru harika.
Marco Pashkov

1
pyNeighborhood ubuntu 14.04 de ssh üzerinden başladığında bana arızayı segmentasyon verir
Pavel Niedoba

1
@MarcoPashkov cifs-utilsbeni uyandıran ve giden şey. Bunların hiçbiri başka türlü işe yaramaz. Bu doğrudan cevaba dahil edilmelidir.
rubynorails

13

Map7'nin dediği gibi, ancak sürücüdeki bir dosyayı her değiştirdiğinizde kök izinlerini kullanmak istemiyorsanız, bir kullanıcı klasörüne bağlanmanız ve gid ve uid'nin kullanıcı adınıza ayarlandığından emin olmanız gerekir. .

Onları ayarlayan komut:

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

Bunun yerine mntklasörün oluşturulduğunu unutmayın .~/mnt/share/mnt/share

Ayrıca, kabuğunuzun geçmişinde potansiyel olarak depolanan komutta sizden istemeyi isteyip istemediğinizi sorarsanız parola = PASSWD komutunu bırakabilirsiniz:

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

1
Bazı örneklerle daha eksiksiz bir cevap verin, ben oyum olsun :)
fırtına

5

1) Samba payım Caja'da (ubuntu 16.04 „explorer“)

smb://thinkpad/ddrive/

Bu iyi bir lithmus testidir, bağlantı / yol sorunu yoktur.

( uyarı : caja'dan windows makinenizdeki şifre kimlik bilgileri hakkında sorularınız varsa, Domain'i WORKGROUP'tan makinenin adına, yani 'thinkpad' e değiştirmek isteyebilirsiniz.

2) Bu işe yararsa, işte komut geliyor:

sudo mount -t cifs -o username=frank //thinkpad/ddrive /mnt/ddrive
  • Önceden, / mnt / ddrive'ın boş bir dizin olduğundan emin olun.
  • ,password=supersecretÜstelik, username = 'den sonra da doğrudan (boşluksuz) eklersiniz , ancak komutu girdiğinizde sizden istenmesini de bekleyebilirsiniz.

2
Nemo / Linux Nane 18'deki smb: // .... yolunu nereye yazabileceğimi bulmam biraz zaman aldı, ancak aslında oldukça basit: eğer yol giriş kutusu görünmüyorsa, Görünüm menüsü
Pedi T.

3

Cif bağlantılarını yapmak için her zaman kök gerekli olduğu iddiasına katılmıyorum. Doğrudur, her zaman CLI için yeterlidir, ancak nautilus gibi bir dosya yöneticisi cif paylaşımına sahip olabilir ve kök olmak zorunda değildir.

Gnome kullanmıyorum ama hala Nautilus'u yükledim. Masaüstünü ele geçirmeye çalışmasını önlemek için bunu bir terminalde çalıştırın

$ nautilus --no-desktop &

Ubuntu 16.04'te sol taraftaki ağaç menüsünde alt kısımda "Sunucuya Bağlan" var. Tıklayın, öneri "smb: //foo.example.com" şeklindedir. smb "cifs" için eski bir kelimedir ve sunucunuza yerleştirirseniz ve başlangıçta smb: // ile paylaşırsanız, bağlantı çalışır! Söz veriyorum. Payınız adlandırılmış bir şeyse, "smb: //foo.example.com/myshare" adlı bir eğik çizgiden sonra gereklidir.

Diğer dosya yöneticilerini de aynı şekilde kullandım. Protokol "smb: //" olmalı.


3
  1. Tüm bu ayrıntıları / etc / fstab içine koyabilirsiniz, böylece sistem başlangıcında dizinleri kurabilirsiniz. Windows veya SMB sunucusu IP adresinde ise 192.168.1.1

    /etc/fstab
    //192.168.1.1/SharedFolder/    /mnt/linux_smb   cifs    username=winuser,password=TopSecret   0    0
    
  2. Linux bağlama noktası olarak dizin oluştur

    mkdir /mnt/linux_smb
    chmod 755  /mnt/linux_smb
    
  3. İlk defa bunu elle monte et

    mount -a
    
  4. Olası hatalar şurada bulunabilir:

    dmesg | tail 
    

3
  1. CIF / SMB sürümleri Linux ve Windows arasında uyumlu olmadığında çözülmesi muhtemel ve çok sinir bozucu bir sorun var. Bu durumda "vers = 2.1" ekleyerek fstab satırında sadece küçük chnage yapabilirsiniz.

    Öyleyse, eğer Windows veya SMB sunucusu IP adresinde ise 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. Adım 2, 3 ve 4 önceki cevaptakiyle aynı kalır.


1

CIFS dosya sistemini komut satırına monte etmek ve bir test dosyası oluşturmak / silmek için küçük bir senaryo hazırladım. Bazı kullanım olabilir:

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

1

farklı montaj yöntemlerinin nasıl çalıştığı, ancak düşünmek isteyebileceğiniz bir şey var.

Kimlik bilgilerinizi doğrudan / etc / fstab içine girmek istemiyorsanız bunun yerine bir takma seçeneği kullanabilirsiniz: credentials = / your / path / here / .credentials

bu kullanıcı adı içermelidir = msusername password = mspassword

Dosyayı kaydedin ve seçim editörünüzden çıkın.

izinler chmod 600 olarak değiştirilmelidir

şifreli bir giriş dizininiz varsa ve bağlayıcınızın önyükleme sırasında açılmasını istiyorsanız, dosyayı giriş dizininizin dışına yerleştirdiğinizden emin olun. / etc / veya / media / içerisinde uygun ve kolay unutulmaz bir yer olabilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.