web-dev-qa-db-fra.com

Comment monter un partage CIFS?

J'utilise Ubuntu 11.10 et j'essaie de monter un serveur Freenas. Le serveur est configuré pour partager cifs et nfs sans aucune chance.

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 une action cifs dans 11.10?

62
KYLE

Il existe pyNeighborhood qui est un outil graphique pour monter des partages Samba et 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 attentivement le documentation Samba ici pour savoir comment le faire et configurez-le correctement pour monter au démarrage, etc.

84
map7

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 le dossier mnt a été créé dans ~/mnt/share au lieu de /mnt/share.

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

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

1) Mon partage de samba s'affiche à 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.

(caveat: Si caja vous interroge sur les identifiants de mot de passe de votre machine Windows, vous voudrez peut-être passer du domaine de WORKGROUP au nom de la machine, c'est-à-dire 'thinkpad'. Ensuite, les identifiants de connexion véritablement locaux de votre lecteur devrait faire.)

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 un ,password=supersecret directement (sans espace) après username =, mais vous pouvez également attendre que l’invite vous le demande lorsque vous entrez la commande.
5
Frank Nocke

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: //".

3
pauljohn32
  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 Windows ou le serveur 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.

3
Amit Vujic
  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 
    
3
Amit Vujic

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
1
David Tonhofer

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.

1
amon san