답변:
이 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 개의 암호)를 묻는 메시지가 표시됩니다.
cifs-utils
는 나를 일으켰 습니다. 이 중 어느 것도 달리 작동하지 않습니다. 이것은 답변에 직접 포함되어야합니다.
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) 내 삼바 공유는 Caja (우분투 16.04“탐색기”)에서
smb://thinkpad/ddrive/
이것은 좋은 리무스 테스트이며 연결 / 경로 문제가 없습니다.
( 주의 : caja에서 Windows 컴퓨터의 암호 자격 증명에 대해 묻는 메시지가 표시되면 Domain을 WORKGROUP에서 컴퓨터 이름 (예 : 'thinkpad')으로 전환 할 수 있습니다. 그러면 드라이브의 로컬 로그인 자격 증명이 필요합니다.)
2) 작동하면 다음 명령이 제공됩니다.
sudo mount -t cifs -o username=frank //thinkpad/ddrive /mnt/ddrive
,password=supersecret
username = 뒤에 직접 (공백 없음)을 추가 하지만 명령을 입력 할 때 프롬프트가 표시 될 때까지 기다릴 수도 있습니다.나는 cifs 연결을 만들기 위해 루트가 항상 필요하다는 주장에 동의하지 않습니다. CLI smbmount에는 항상 필요하지만 nautilus와 같은 파일 관리자는 cifs 공유를 마운트 할 수 있으며 루트 일 필요는 없습니다.
나는 그놈을 사용하지 않지만 여전히 노틸러스가 설치되어 있습니다. 터미널에서 이것을 실행하여 데스크탑을 인계받지 못하게하십시오.
$ nautilus --no-desktop &
Ubuntu 16.04에서 왼쪽 트리 메뉴의 맨 아래에는 "서버에 연결"이 있습니다. 클릭 제안은 "smb : //foo.example.com"유형입니다. smb는 "cifs"의 오래된 단어이며 서버를 넣고 처음에 smb : //와 공유하면 연결이 작동합니다! 약속합니다. 공유가 명명 된 것이라면 "smb : //foo.example.com/myshare"슬래시 다음에 필요합니다.
다른 파일 관리자를 같은 방식으로 사용했습니다. 프로토콜은 "smb : //"여야합니다.
시스템 시작시 디렉토리를 마운트 할 수 있도록 모든 세부 사항을 / 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
리눅스 마운트 포인트로 디렉토리 만들기
mkdir /mnt/linux_smb
chmod 755 /mnt/linux_smb
처음으로 이것을 수동으로 마운트하십시오
mount -a
최종 오류는 다음과 같이 찾을 수 있습니다.
dmesg | tail
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, 3, 4 단계는 이전 답변과 동일합니다.
명령 행에서 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
다양한 마운팅 방법이 소진되었지만 고려할만한 것이 있습니다.
자격 증명을 / etc / fstab에 직접 입력하지 않으려면 mount 옵션을 대신 사용할 수 있습니다. credentials = / your / path / here / .credentials
여기에는 username = msusername password = mspassword가 포함되어야합니다
파일을 저장하고 선택 편집기를 종료하십시오.
chmod 600으로 권한을 변경해야합니다
암호화 된 홈 디렉토리가 있고 부팅시 마운트를 시작하려면 파일을 홈 디렉토리 외부에 배치하십시오. / etc / 또는 / media /에서 적절하고 쉽게 기억할 수있는 장소 일 수 있습니다.