CIFS 공유를 어떻게 마운트합니까?


64

우분투 11.10을 사용하고 있으며 프리 나스 서버를 마운트하려고합니다. 운 좋게 cifsnfs 로 공유하도록 서버를 설정했습니다 .

나는 시도했다 smbmount //192.168.1.### /mnt/

나는 Ubuntu를 처음 사용하지는 않지만 고급 사용자 근처에는 없기 때문에 가능한 경우 GUI 옵션을 선호합니다.

11.10에서 cifs 공유를 어떻게 마운트 합니까?

답변:


88

pyNeighborhood 다운로드 소프트웨어 센터에서 삼바 공유 및 사용할 수를 장착하기위한 GUI입니다.

여기 에 설치 및 사용 방법 대한 좋은 기사가 있습니다 .

먼저 cifs 유틸리티를 설치하십시오.

sudo apt-get install cifs-utils

또는 기본 터미널 명령은 다음과 같습니다.

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

노틸러스에서 마운트를 보려면 / media / USERNAME /에서 먼저 하위 폴더를 만드는 것이 좋습니다.

mkdir /media/paul/cifsShare

또한 mount 명령에서 암호를 생략 할 수 있습니다 (예 : 파일 / 폴더 모드도 표시).

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

이 경우 장착 순간에 암호 (실제로 2 개의 암호)를 묻는 메시지가 표시됩니다.

여기Samba 문서를 읽어보고 시작하는 등에 올바르게 장착하도록 설정하십시오.


2
1) 암호를 하드 코딩하고 2) 루트가 아닌 삼바 공유를 마운트하는 방법이 있습니까?
mcExchange

1
@mcExchange root가 필요하며 smb 자격 증명 파일을 사용하여 자격 증명을 보호 할 수 있습니다
adampski

4
또한 다음을 cifs-utils설치 했는지 확인하십시오 sudo apt-get install cifs-utils.. 자세한 내용은 이 우분투 도움말 문서 가 훌륭합니다.
Marco Pashkov

1
pyNeighborhood는 우분투 14.04에서 ssh를 통해 시작했을 때 분할 오류를 발생
시킵니다.

1
@MarcoPashkov cifs-utils는 나를 일으켰 습니다. 이 중 어느 것도 달리 작동하지 않습니다. 이것은 답변에 직접 포함되어야합니다.
rubynorails

13

map7이 말했듯이 드라이브에서 파일을 변경할 때마다 루트 권한을 사용하지 않으려면 사용자 폴더에 마운트하고 gid 및 uid가 사용자 이름으로 설정되어 있는지 확인하십시오 .

명령 설정 :

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

참고 mnt폴더에 생성 된 ~/mnt/share대신 /mnt/share.

또한 명령에 암호를 입력하는 대신 프롬프트를 표시하려는 경우 password = PASSWD를 생략하여 쉘 기록에 저장할 수 있습니다.

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

1
몇 가지 예를 들어 좀 더 완전한 답변을 드리겠습니다. :)
storm

5

1) 내 삼바 공유는 Caja (우분투 16.04“탐색기”)에서

smb://thinkpad/ddrive/

이것은 좋은 리무스 테스트이며 연결 / 경로 문제가 없습니다.

( 주의 : caja에서 Windows 컴퓨터의 암호 자격 증명에 대해 묻는 메시지가 표시되면 Domain을 WORKGROUP에서 컴퓨터 이름 (예 : 'thinkpad')으로 전환 할 수 있습니다. 그러면 드라이브의 로컬 로그인 자격 증명이 필요합니다.)

2) 작동하면 다음 명령이 제공됩니다.

sudo mount -t cifs -o username=frank //thinkpad/ddrive /mnt/ddrive
  • 미리 / mnt / ddrive가 빈 디렉토리로 존재하는지 확인하십시오.
  • 또한 ,password=supersecretusername = 뒤에 직접 (공백 없음)을 추가 하지만 명령을 입력 할 때 프롬프트가 표시 될 때까지 기다릴 수도 있습니다.

2
Nemo / Linux Mint 18에서 smb : // .... 경로를 입력 할 수있는 곳을 알아내는 데 약간의 시간이 걸렸지 만 실제로는 매우 간단합니다. 경로 입력 상자가 표시되지 않으면 보기 메뉴.
Pedi T.

3

나는 cifs 연결을 만들기 위해 루트가 항상 필요하다는 주장에 동의하지 않습니다. CLI smbmount에는 항상 필요하지만 nautilus와 같은 파일 관리자는 cifs 공유를 마운트 할 수 있으며 루트 일 필요는 없습니다.

나는 그놈을 사용하지 않지만 여전히 노틸러스가 설치되어 있습니다. 터미널에서 이것을 실행하여 데스크탑을 인계받지 못하게하십시오.

$ nautilus --no-desktop &

Ubuntu 16.04에서 왼쪽 트리 메뉴의 맨 아래에는 "서버에 연결"이 있습니다. 클릭 제안은 "smb : //foo.example.com"유형입니다. smb는 "cifs"의 오래된 단어이며 서버를 넣고 처음에 smb : //와 공유하면 연결이 작동합니다! 약속합니다. 공유가 명명 된 것이라면 "smb : //foo.example.com/myshare"슬래시 다음에 필요합니다.

다른 파일 관리자를 같은 방식으로 사용했습니다. 프로토콜은 "smb : //"여야합니다.


3
  1. 시스템 시작시 디렉토리를 마운트 할 수 있도록 모든 세부 사항을 / etc / fstab에 넣을 수 있습니다. Windows 또는 SMB 서버가 IP 주소 192.168.1.1에있는 경우

    /etc/fstab
    //192.168.1.1/SharedFolder/    /mnt/linux_smb   cifs    username=winuser,password=TopSecret   0    0
    
  2. 리눅스 마운트 포인트로 디렉토리 만들기

    mkdir /mnt/linux_smb
    chmod 755  /mnt/linux_smb
    
  3. 처음으로 이것을 수동으로 마운트하십시오

    mount -a
    
  4. 최종 오류는 다음과 같이 찾을 수 있습니다.

    dmesg | tail 
    

3
  1. CIF / SMB 버전이 Linux와 Windows간에 호환되지 않는 경우 특정 문제가 해결되고 매우 실망 스럽습니다. 이 경우 fstab 줄에 "vers = 2.1"을 추가하여 약간의 chnage를 만들 수 있습니다

    따라서 Windows 또는 SMB 서버가 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. 2, 3, 4 단계는 이전 답변과 동일합니다.


1

명령 행에서 CIFS 파일 시스템을 마운트하고 테스트 파일을 작성 / 삭제하는 작은 스크립트 (Fedora 용)를 작성했습니다. 일부 사용 가능할 수 있습니다.

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

다양한 마운팅 방법이 소진되었지만 고려할만한 것이 있습니다.

자격 증명을 / etc / fstab에 직접 입력하지 않으려면 mount 옵션을 대신 사용할 수 있습니다. credentials = / your / path / here / .credentials

여기에는 username = msusername password = mspassword가 포함되어야합니다

파일을 저장하고 선택 편집기를 종료하십시오.

chmod 600으로 권한을 변경해야합니다

암호화 된 홈 디렉토리가 있고 부팅시 마운트를 시작하려면 파일을 홈 디렉토리 외부에 배치하십시오. / etc / 또는 / media /에서 적절하고 쉽게 기억할 수있는 장소 일 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.