Comment monter un partage CIFS?

64

J'utilise Ubuntu 11.10 et j'essaie de monter un serveur Freenas. Le serveur est configuré pour partager des fichiers cifs et nfs sans succès .

j'ai essayé smbmount //192.168.1.### /mnt/

Je ne suis pas nouveau dans Ubuntu, mais je ne suis pas près d'un utilisateur expérimenté. Je préférerais donc une option d'interface graphique, le cas échéant.

Comment monter un partage cifs dans 11.10?

KYLE
la source

Réponses:

88

Il existe pyNeighborhood, un outil pour le montage des partages Samba, disponible dans le centre de logiciel pour le téléchargement.

Il y a un bon article situé ici sur la façon de le configurer et de l'utiliser.

Commencez par installer cifs utils

sudo apt-get install cifs-utils

Alternativement, la commande de base du terminal est:

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

Si vous souhaitez voir votre montage dans Nautilus, il serait bon de créer un sous-dossier d'abord dans / media / USERNAME / par exemple:

mkdir /media/paul/cifsShare

de plus, mot de passe pourrait être omis dans la commande mount par exemple (montrera également les modes fichier / dossier):

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

Dans ce cas, le mot de passe vous sera demandé (en fait, pour 2 mots de passe) lors du montage.

Lisez ici la documentation de Samba pour savoir comment le faire et configurez-la correctement pour monter au démarrage, etc.

map7
la source
2
existe-t-il un moyen de monter le partage samba sans 1) coder en dur le mot de passe et 2) être en mode root?
mcExchange le
1
@mcExchange root est nécessaire et vous pouvez utiliser le fichier de références de smb pour protéger vos références
adampski
4
également vous assurer que vous avez cifs-utilsinstallé: sudo apt-get install cifs-utils. Pour plus d'informations, cette aide doc d'ubuntu est géniale.
Marco Pashkov
1
pyNeighborhood me donne la faute de segmentation quand commencé sur SSH dans Ubuntu 14.04
Pavel Niedoba
1
@MarcoPashkov cifs-utilsest ce qui m'a fait monter et partir. Rien de tout cela ne fonctionnerait autrement. Cela devrait être directement inclus dans la réponse.
rubynorails
13

C'est comme map7 a dit, mais si vous ne voulez pas utiliser les autorisations root à chaque fois que vous modifiez un fichier sur le lecteur, vous devrez alors monter dans un dossier utilisateur et vous assurer que les identifiants gid et uid sont définis avec votre nom d'utilisateur. .

La commande les plaçant:

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

Notez que ce mntdossier a été créé dans ~/mnt/shareau lieu de /mnt/share.

Aussi, vous pouvez omettre password = PASSWD si vous souhaitez qu'il vous le demande au lieu de l'avoir dans la commande, ce qui est potentiellement stocké dans l'historique de votre shell:

mount -t cifs -o username=USERNAME,uid=$USER,gid=$USER //192.168.1.88/shares ~/mnt/share
binamenator
la source
1
Faites une réponse plus complète, avec quelques exemples et je vais passer au vote suivant :)
Tempête
5

1) Mon partage de samba se déroule à Caja (Ubuntu 16.04 „explorer“) en tant que

smb://thinkpad/ddrive/

C'est un bon test lithmus, il n'y a pas de problèmes de connexion / chemin.

( Mise en garde : si caja vous demande si les informations de mot de passe de votre machine Windows vous concernent, vous voudrez peut-être passer de Domain de WORKGROUP au nom de la machine, c'est-à-dire 'thinkpad'. Les informations de connexion véritablement locales de votre lecteur devraient alors suffire.)

2) Si cela fonctionne, voici la commande:

sudo mount -t cifs -o username=frank //thinkpad/ddrive /mnt/ddrive
  • Assurez-vous au préalable que / mnt / ddrive existe en tant que répertoire vide.
  • Vous pouvez également ajouter ,password=supersecretdirectement (pas d’espace) après username =, mais vous pouvez également attendre que l’on vous le demande, lorsque vous entrez la commande.
Frank Nocke
la source
2
Il m'a fallu un peu de temps pour savoir où je peux taper le chemin smb: // .... dans Nemo / Linux Mint 18, mais en réalité c'est assez simple: si la zone de saisie du chemin n'est pas visible, activez-la dans le dossier Voir le menu.
Pedi T.
3

Je ne suis pas d'accord avec l'affirmation selon laquelle root est toujours nécessaire pour que les connexions cifs disparaissent. C’est vrai, c’est toujours nécessaire pour smbmount CLI, mais un gestionnaire de fichiers tel que Nautilus est capable de monter un partage cifs et il n’est pas nécessaire d’être root.

Je n'utilise pas Gnome, mais j'ai toujours Nautilus installé. Exécutez ceci dans un terminal pour éviter de l’essayer de prendre le contrôle du bureau.

$ nautilus --no-desktop &

Dans Ubuntu 16.04, le menu de gauche dans l'arborescence a "Connect to Server" en bas. Cliquez dessus, la suggestion est de type "smb: //foo.example.com". smb est un ancien mot pour "cifs", et si vous mettez dans votre serveur et partagez avec smb: // au début, la connexion fonctionne! Je promets. Si votre partage est nommé, il est obligatoire après une barre oblique, "smb: //foo.example.com/myshare".

J'ai utilisé d'autres gestionnaires de fichiers de la même manière. Le protocole doit être "smb: //".

pauljohn32
la source
3
  1. Vous pouvez mettre tous ces détails dans / etc / fstab pour que les répertoires soient montés au démarrage du système. Si le serveur Windows ou SMB est sur l'adresse IP 192.168.1.1

    /etc/fstab
    //192.168.1.1/SharedFolder/    /mnt/linux_smb   cifs    username=winuser,password=TopSecret   0    0
    
  2. Créer un répertoire en tant que point de montage linux

    mkdir /mnt/linux_smb
    chmod 755  /mnt/linux_smb
    
  3. Pour la première fois, montez-le manuellement

    mount -a
    
  4. Les erreurs éventuelles peuvent être trouvées par

    dmesg | tail 
    
Amit Vujic
la source
3
  1. Il existe un problème spécifique possible et très frustrant à résoudre lorsque les versions de CIF / SMB ne sont pas compatibles entre Linux et Windows. Dans ce cas, vous pouvez simplement faire un changement mineur dans la ligne fstab en ajoutant "vers = 2.1"

    Donc, si le serveur Windows ou SMB est sur l'adresse 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. Les étapes 2, 3 et 4 restent les mêmes que dans la réponse précédente.

Amit Vujic
la source
1

J'ai mis en place un petit script (destiné à Fedora cependant) pour monter le système de fichiers CIFS à partir de la ligne de commande et créer / supprimer un fichier de test. Peut être utile:

#!/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
la source
1

le fonctionnement des différentes méthodes de montage a été épuisé, mais il y a quelque chose que vous voudrez peut-être envisager

si vous ne souhaitez pas saisir vos informations d'identification directement dans / etc / fstab, vous pouvez utiliser une option de montage: credentials = / votre / chemin / ici / .credentials

cela devrait contenir username = msusername password = mspassword

Enregistrez le fichier et quittez l'éditeur de choix.

les autorisations doivent être changées en chmod 600

Si vous avez un répertoire personnel crypté et que vous voulez que votre montage soit opérationnel, assurez-vous de placer le fichier en dehors de votre répertoire personnel. dans / etc / ou / media / pourrait être un endroit approprié et facilement mémorable.

Amon San
la source