Como eu monto um compartilhamento CIFS?

55

Estou usando o Ubuntu 11.10 e estou tentando montar um servidor freenas. Eu tenho o servidor configurado para compartilhar em cifs e nfs sem sorte.

Eu tentei smbmount //192.168.1.### /mnt/

Eu não sou novo no Ubuntu, mas não sou nem de longe um usuário experiente, então prefiro uma opção de GUI, se disponível.

Como faço para montar um compartilhamento cifs no 11.10?

    
por KYLE 03.02.2012 / 07:58

8 respostas

67

Existe pyNeighborhood , que é um guia para a montagem de compartilhamentos de samba e está disponível no centro de software para download.

Há um bom artigo localizado aqui sobre como configurá-lo e usá-lo.

Primeiro instale o cifs utils

sudo apt-get install cifs-utils

Como alternativa, o comando básico do terminal é:

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

Se você gostaria de ver sua montagem no Nautilus, seria bom criar uma subpasta primeiro em / media / USERNAME / por exemplo:

mkdir /media/paul/cifsShare

também, a senha pode ser omitida no comando mount, por exemplo (também demonstrará modos de arquivo / pasta):

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

neste caso, você será perguntado pela senha (na verdade, para 2 senhas) no momento da montagem.

Faça uma leitura da documentação do Samba aqui sobre como fazer isso e configure-a corretamente para montar arranque, etc.

    
por map7 03.02.2012 / 08:33
9

É como o map7 disse, mas se você não quiser usar permissões de root toda vez que alterar um arquivo na unidade, terá de montar uma pasta de usuário e verificar se o gid e o uid estão definidos para o seu nome de usuário.

O comando que os define:

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

Observe que a pasta mnt foi criada em ~/mnt/share em vez de /mnt/share .

Além disso, você pode deixar a senha = PASSWD se você quiser que ela seja solicitada em vez de você tê-la no comando, que é potencialmente armazenado no histórico do seu shell:

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

1) Meu compartilhamento de samba é exibido no Caja (o ubuntu 16.04 „explorer“) como

smb://thinkpad/ddrive/

Este é um bom teste de litmus, não há problemas de conexão / caminho.

( ressalva : Se você for perguntado pelo caja sobre as credenciais de senha da sua máquina Windows, você pode querer mudar o Domain do WORKGROUP para o nome da máquina, ou seja, 'thinkpad'. as credenciais de login locais da sua unidade devem ser feitas.)

2) Se isso funciona, aqui vem o comando:

sudo mount -t cifs -o username=frank //thinkpad/ddrive /mnt/ddrive
  • Certifique-se de antemão, / mnt / ddrive existe como um diretório vazio.
  • Você também adiciona um ,password=supersecret diretamente (sem espaço) depois do nome de usuário =, mas também pode aguardar a solicitação, quando digitar o comando.
por Frank Nocke 10.11.2016 / 16:50
3

Eu não concordo com a alegação de que o root é sempre necessário para fazer conexões cifs. É verdade, é sempre necessário para o smbmount do CLI, mas um gerenciador de arquivos como o nautilus tem a capacidade de montar um compartilhamento cifs e não é necessário ser root.

Eu não uso o Gnome, mas ainda tenho o Nautilus instalado. Execute isso em um terminal para evitar que ele tente assumir a área de trabalho

$ nautilus --no-desktop &

No Ubuntu 16.04, o menu da árvore do lado esquerdo tem "Connect to Server" na parte inferior. Clique nisso, a sugestão é do tipo "smb: //foo.example.com". smb é uma palavra antiga para "cifs", e se você colocar em seu servidor e compartilhar com smb: // no começo, a conexão funciona! Eu prometo. Se a sua parte é uma coisa com nome, é necessária após uma barra, "smb: //foo.example.com/myshare".

Eu usei outros gerenciadores de arquivos da mesma maneira. Protocolo tem que ser "smb: //".

    
por pauljohn32 15.07.2016 / 04:59
3
  1. Você pode colocar todos esses detalhes em / etc / fstab para ter diretórios montados na inicialização do sistema. Se o Windows ou o servidor SMB estiverem no endereço IP 192.168.1.1

    /etc/fstab
    //192.168.1.1/SharedFolder/    /mnt/linux_smb   cifs    username=winuser,password=TopSecret   0    0
    
  2. Crie um diretório como o ponto de montagem do linux

    mkdir /mnt/linux_smb
    chmod 755  /mnt/linux_smb
    
  3. Pela primeira vez, monte isso manualmente

    mount -a
    
  4. Eventuais erros podem ser encontrados por

    dmesg | tail 
    
por Amit Vujic 15.09.2017 / 14:36
2
  1. Existe um problema específico possível e muito frustrante para resolver quando as versões do CIF / SMB não são compatíveis entre o Linux e o Windows. Nesse caso você pode apenas fazer pequenas alterações na linha fstab adicionando "vers = 2.1"

    Assim, se o servidor Windows ou SMB estiver no endereço 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. Os passos 2, 3 e 4 permanecem os mesmos da resposta anterior.

por Amit Vujic 01.11.2017 / 13:30
1

Eu montei um pequeno script (para o Fedora, no entanto) para montar o sistema de arquivos CIFS a partir da linha de comando e criar / excluir um arquivo de teste. Pode ser de alguma utilidade:

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

como os diferentes métodos de montagem funcionam, mas há algo que você pode querer considerar

se você não quiser inserir suas credenciais diretamente no / etc / fstab, você pode usar uma opção de montagem: credenciais = / your / path / here / .credentials

isso deve conter nome de usuário = msusername password = mspassword

Salve o arquivo e saia do seu editor de opções.

as permissões devem ser alteradas para chmod 600

Se você tiver um diretório pessoal criptografado e quiser que sua montagem esteja ativa na inicialização, certifique-se de colocar o arquivo fora do seu diretório pessoal. em / etc / ou / media / pode ser um lugar adequado e facilmente memorável.

    
por amon san 29.04.2018 / 16:47