Come monto una condivisione CIFS?

56

Sto usando Ubuntu 11.10 e sto provando a montare un server freenas. Ho il server impostato per condividere in cifs e nfs senza fortuna.

Ho provato smbmount //192.168.1.### /mnt/

Non sono nuovo di Ubuntu ma non sono vicino a un utente esperto, quindi preferirei l'opzione GUI se disponibile.

Come monto una condivisione cifs in 11.10?

    
posta KYLE 03.02.2012 - 07:58

8 risposte

69

C'è pyNeighborhood che è una GUI per il montaggio di condivisioni samba e disponibile nel centro software per il download.

C'è un buon articolo che si trova qui su come impostarlo e usarlo.

Prima installazione di cifs utils

sudo apt-get install cifs-utils

In alternativa, il comando di base del terminale è:

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

Se vuoi vedere la tua montatura in Nautilus, sarebbe opportuno creare prima una sottocartella in / media / USERNAME / ad esempio:

mkdir /media/paul/cifsShare

inoltre, la password potrebbe essere omessa nel comando mount, ad esempio (mostrerà anche le modalità file / cartella):

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

in questo caso ti verrà chiesta la password (in realtà per 2 password) nel momento di montaggio.

Leggi attentamente la documentazione di Samba su come eseguirla e configurala correttamente per il montaggio su start up ecc.

    
risposta data map7 03.02.2012 - 08:33
9

È come dice map7, ma se non vuoi usare i permessi di root ogni volta che cambi un file sull'unità, allora devi montare su una cartella utente e assicurarti che gid e uid siano impostati al tuo nome utente.

Il comando che li imposta:

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

Tieni presente che la cartella mnt è stata creata in ~/mnt/share anziché /mnt/share .

Inoltre puoi lasciare fuori password = PASSWD se vuoi che ti venga richiesto invece di averlo nel comando, che è potenzialmente memorizzato nella cronologia della tua shell:

mount -t cifs -o username=USERNAME,uid=$USER,gid=$USER //192.168.1.88/shares ~/mnt/share
    
risposta data binamenator 21.12.2016 - 15:37
4

1) La mia condivisione di samba mostra in Caja (l'ubuntu 16.04 "explorer") come

smb://thinkpad/ddrive/

Questo è un buon test di lithmus, non ci sono problemi di connessione / percorso.

( avvertenza : se ti viene chiesto da caja in merito alle credenziali della password dalla tua macchina Windows, potresti voler cambiare Dominio da WORKGROUP al nome della macchina, ad esempio "thinkpad". le credenziali di accesso locali dell'unità devono essere eseguite.)

2) Se funziona, ecco il comando:

sudo mount -t cifs -o username=frank //thinkpad/ddrive /mnt/ddrive
  • Assicurati prima che / mnt / ddrive esista come una directory vuota.
  • Il freddo aggiunge anche un ,password=supersecret direttamente (senza spazio) dopo username =, ma puoi anche aspettare che venga richiesto, quando inserisci il comando.
risposta data Frank Nocke 10.11.2016 - 16:50
3

Non sono d'accordo con l'affermazione che root sia sempre necessario per far andare le connessioni di cifs. È vero, è sempre necessario per smbmount CLI, ma un file manager come nautilus ha la possibilità di montare una quota cifs e non è necessario essere root.

Non uso Gnome, ma ho ancora installato Nautilus. Esegui questo in un terminale per evitare che provi a prendere il controllo del desktop

$ nautilus --no-desktop &

In Ubuntu 16.04, il menu dell'albero di sinistra ha "Connetti al server" in basso. Fai clic qui, il suggerimento è di tipo "smb: //foo.example.com". smb è una vecchia parola per "cifs" e se inserisci il tuo server e condividi smb: // all'inizio, la connessione funziona! Lo prometto. Se la tua condivisione è una cosa denominata, è richiesta dopo una barra, "smb: //foo.example.com/myshare".

Ho usato altri file manager nello stesso modo. Il protocollo deve essere "smb: //".

    
risposta data pauljohn32 15.07.2016 - 04:59
3
  1. Puoi mettere tutti questi dettagli in / etc / fstab in modo che tu possa avere le directory montate all'avvio del sistema. Se il server Windows o SMB si trova sull'indirizzo IP 192.168.1.1

    /etc/fstab
    //192.168.1.1/SharedFolder/    /mnt/linux_smb   cifs    username=winuser,password=TopSecret   0    0
    
  2. Crea directory come punto di montaggio linux

    mkdir /mnt/linux_smb
    chmod 755  /mnt/linux_smb
    
  3. Per la prima volta monta questo manualmente

    mount -a
    
  4. Eventuali errori possono essere trovati da

    dmesg | tail 
    
risposta data Amit Vujic 15.09.2017 - 14:36
2
  1. C'è un problema specifico possibile e molto frustrante da risolvere quando le versioni di CIF / SMB non sono compatibili tra Linux e Windows. In tal caso puoi solo eseguire un piccolo chnage nella riga fstab aggiungendo "vers = 2.1"

    Quindi, se il server Windows o SMB è sull'indirizzo 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. I passaggi 2, 3 e 4 rimangono gli stessi della risposta precedente.

risposta data Amit Vujic 01.11.2017 - 13:30
1

Ho creato un piccolo script (pensato per Fedora) per montare il filesystem CIFS dalla riga di comando e creare / eliminare un file di test. Può essere di qualche utilità:

#!/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
    
risposta data David Tonhofer 04.12.2017 - 16:43
0

come funzionano i diversi metodi di montaggio, ma c'è qualcosa che potresti prendere in considerazione

se non vuoi inserire le tue credenziali direttamente in / etc / fstab puoi usare invece un'opzione di mount: credentials = / vostro / path / qui / .credentials

questo dovrebbe contenere username = msusername password = mspassword

Salva il file e esci dall'editor di scelta.

le autorizzazioni dovrebbero essere cambiate in chmod 600

se hai una directory home criptata e vuoi che il tuo mount sia attivo all'avvio, assicurati di posizionare il file fuori dalla tua home directory. in / etc / or / media / potrebbe essere un luogo adatto e facilmente memorizzabile.

    
risposta data amon san 29.04.2018 - 16:47

Leggi altre domande sui tag