samba와 공유 할 수 있도록 sshfs 마운트 지점에 대한 올바른 권한을 설정하십시오.


12

SSH를 통한 액세스를 제공하는 도메인 호스트가 있습니다.

내 플랫폼은 다음과 같습니다

  • 젠투 2.6.36-R5
  • 윈도우 (XP / Vista / 7)

나는 Windows에서 작업하고 Gentoo를 사용하여 Windows가 할 수없는 모든 마법을 수행합니다.

따라서 sshfs를 사용하여 도메인의 원격 공용 디렉토리를 /mnt/mydomain.com에 마운트합니다. 인증은 키를 통해 수행되므로 게으른 암호를 입력 할 필요가 없습니다.

Windows에서 코딩을 수행하고 변경된 파일을 항상 업로드 / 다운로드하고 싶지 않기 때문에 samba 공유를 통해 /mnt/mydomain.com에 액세스하고 싶습니다.

그래서 삼바에서 / mnt를 공유했습니다. mydomain.com을 제외한 모든 마운트는 Windows 탐색기에 표시됩니다.

내 이론은 다음과 같습니다

  1. sshfs 는 마운트 지점 uid / gid를 삼바가 예상하는 것으로 설정하지 않습니다.
  2. samba/mnt/mydomain.com 이 설정 되어있는 uid / gid를 포함해야한다는 것을 모릅니다 .
  3. 위의 모든 것이 잘못되었으며 모르겠습니다.

다음은 콘솔의 구성 및 출력입니다. 알려주세요. 또한이 문제와 관련이 있음을 알리는 오류 또는 경고는 없지만 잘못되었을 수 있습니다.

gentoo ~ # ls -lah /mnt
total 20K
drwxr-xr-x  9 root  root  4.0K Mar 26 16:15 .
drwxr-xr-x 18 root  root  4.0K Mar 26  2011 ..
-rw-r--r--  1 root  root     0 Feb  1 16:12 .keep
drwxr-xr-x  1 root  root     0 Mar 18 12:09 buffer
drwxr-s--x  1 68591 68591 4.0K Feb 16 15:43 mydomain.com
drwx------  2 root  root  4.0K Feb  1 16:12 cdrom
drwx------  2 root  root  4.0K Feb  1 16:12 floppy
drwxr-xr-x  1 root  root     0 Sep  1  2009 services
drwxr-xr-x  1 root  root     0 Feb 10 15:08 www

/etc/samba/smb.conf

[mnt]
comment = Mount points
writable = yes
writeable = yes
browseable = yes
browsable = yes
path = /mnt

/ etc / fstab

sshfs#myusername@mywebhotel.com:/home/to/pub/dir/ /mnt/mydomain.com/ fuse comment=sshfs,noauto,users,exec,uid=0,gid=0,allow_other,reconnect,follow_symlinks,transform_symlinks,idmap=none,SSHOPT=HostBasedAuthentication 0 0

쉽게 읽을 수 있도록 :

  • myusername@mywebhotel.com
  • / home / to / pub / dir /
  • /mnt/mydomain.com/

옵션 :

  • comment = sshfs
  • noauto
  • 사용자
  • exec
  • uid = 0
  • gid = 0
  • allow_other
  • 다시 연결
  • follow_symlinks
  • transform_symlinks
  • idmap = 없음
  • SSHOPT = 호스트 기반 인증

도움!


IIRC HostbasedAuthentication는 사용을 권장하지 않습니다 (사용자 기반 PubkeyAuthentication이 바람직 함)
user1686

SSHFS version 2.8 fuse: unknown option 'SSHOPT=HostBasedAuthentication'
Tom Hale

답변:


11

sshfs은 FUSE 기반 파일 시스템이며 FUSE 계층은 보안 목적으로 기본적으로 다른 사용자가 마운트에 액세스 할 수 없습니다. 당신은이 allow_other옵션에서뿐 아니라 편집 때까지 무시됩니다 /etc/fuse.conf포함 user_allow_other.


1
"ps aux"를 실행할 때 왼쪽 열은 sshfs 및 smbd 프로세스의 루트를 나타냅니다. 둘 다 동일한 권한으로 실행되므로이 ​​"구문 분석"합니다. ls -lah 출력에서 ​​uid가 루트가 아니며이 uid가 sshfs에 의해 설정되었지만 옵션에서 uid / gid를 변경하지 않아도 설정할 수는 없습니다. 나는 삼바가 어떻게 uid / gid 68591을 가진 특정 디렉토리를 배제해야한다고 생각한다. (나의 혼란을 없애려고 노력한다.)
CS01

@ CS01 : "마스터"smbd는 루트로 실행되지만 연결 처리기에는 해당되지 않습니다. SMB를 통해 "jim"으로 로그인하면 smbd 프로세스도 "jim"의 UID로 전환됩니다.
user1686

1
또한 uid = <UID>, gid = <GID> 옵션을 통해 UID 및 / 또는 GID를 원하는 사용자에게 매핑해야합니다.
sweisgerber.dev

답변 주셔서 감사합니다. 최신 버전의 Ubuntu에서 테스트 한 후 요약하면 다음과 같습니다. 1. update /etc/fuse.conf; 2. THREE sshfs 명령 옵션 ( -o allow_other -o uid=<UID> -o gid=<GID>)을 지정하십시오 . 다시 시작할 필요가없는 것 같습니다 smbd(그러나 다시 시작한 이후 확실하지 않습니다 smbd).
Bruin입니다

2

왜 sshfs를 Windows에서 직접 마운트하지 않습니까?
이를위한 몇 가지 무료 솔루션이 있습니다 (자세한 내용은 여기여기 참조 ).


1
와,이 도구는 훌륭합니다!
CS01

그들은 매우 유망 해 보이지 않으며 적어도 3 년 후에 지금 중단됩니다 :) 당신은 그들과 안정성 경험이 있습니까?
sweisgerber.dev

0

일반적인 smb 공유가 작동함에 따라 Samba 구성에 관한 단어를 잃어 버리지 않습니다. 왜냐하면 일반 폴더를 공유하는 것처럼 sshfs 마운트를 sahre 할 수 있기 때문입니다. 그러나 sshfs를 통해 SSH 공유를 마운트하는 것은 로컬 시스템 액세스 전용과 비교하여 특별합니다.

fstab을 통해 공유를 마운트하기 위해이 행을 / etc / fstab에 넣고 공유를 요청시 마운트 할 수 있습니다. c & p 명령 줄 명령보다 편리합니다.

일반 etc / fstab 줄 :

**<USERNAME>**@<SERVER>:<REMOTE_PATH> /MOUNT/POINT fuse.sshfs noauto,users,idmap=user,IdentityFile=/path/to/.ssh/id_rsa,allow_other,reconnect,port=22,uid=<UID>,gid=<GID> 0 0

noauto :mount /MOUNT/POINT / etc / fstab의이 줄에서 가져온 다른 모든 정보 를 통해 마운트해야합니다.

users : 일반 사용자가이 마운트 항목을 마운트 할 수 있습니다

다시 연결 : 대기 후 ahre를 다시 연결 / 재 장착

uid = / gid = : 원격 uid / gid를이 로컬 uid / gid에 매핑

예:

foo@example.org:/home/foo/music ~/foos_music fuse.sshfs noauto,users,idmap=user,IdentityFile=/home/foo/.ssh/id_rsa,allow_other,reconnect,port=22,uid=foo,gid=users 0 0

sshfs 마운트에 대해 알아야 할 모든 것 [ https://wiki.archlinux.org/index.php/Sshfs]

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