2009-07-16 9 views
3

좋습니다. 설정이 약간 복잡합니다. 나를 비난하지 마라, 나는 시스템 관리자가 아니다.SSHFS를 사용하여 원격 파일 시스템을 마운트하십시오.

여기 상황이 있습니다. 네트워크 외부에서 SSH로 연결할 수있는 시스템이 하나 있습니다. 내 개인 키를 사용하여 루트 권한으로 만 원격으로 연결할 수 있습니다 (네, 들었습니다). 사용자로 로그인 한 다음 권한을 높이는 것이 더 일반적이라는 것을 알고 있습니다. 그러나이 경우에는 그 반대입니다.

파일 시스템을 원격으로 마운트하려면 SSHFS를 사용하고 싶습니다. 나는 이것을 완벽하게 작동시킨다. 그러나, 나는 루트 권한을 반영하도록 모든 파일을 원하지 않습니다. 내가 먼저 de-elevate (su는 사용자 계정으로)하고 싶습니다.

누구나 내가 SSHFS로 이것을 할 수있는 방법을 알고 있습니까?

+0

내가 올바르게 이해한다면 원격 시스템의 루트로 sshfs 할 수 있지만 (sysadmin, 루트이기도 함) sshfs를 덜 권한있는 계정으로 만들 수 없습니까? – Inshallah

+1

serverfault.com? – liori

+0

비슷한 문제가있어서 편집하려는 폴더가 실제로 심볼릭 링크였습니다. 이제는 폴더로 직접 sshfs (실제 경로, 심볼 링크를 따르지 않음). 이것은 나를 위해 일했다. – Richard

답변

8

스크립트를 작성하여 원격 시스템에서 sftp 서브 시스템에 대한 호출을 가로 챌 수 있습니다. /의 말을하자 루트/빈/sftp_intercept, 원격 서버에 어딘가에서 다음 스크립트를 넣어 :

#!/bin/sh 
exec sudo -u less_privileged_user /usr/lib/openssh/sftp-server 

을 다음과 같이 호출합니다

sshfs [email protected]:dir mountpoint -o sftp_server=/root/bin/sftp_intercept 

다음 원하는 결과를 제공한다.

암호를 묻지 않고 sudo를 작동 시키려면 "sudoers"항목이 필요합니다. "chmod 755 ~/bin/sftp_intercept"를 잊지 마십시오.

또한/usr/lib/openssh/sftp-server가 실제로 sftp-server에 대한 경로인지 확인하십시오. 그렇지 않으면 아마도/usr/lib/sftp-server입니다.

+1

'sudo' 이후 아무도'su' anymor을 기억하지 못합니까? 'su less-privileged_user -c '/ usr/lib/openssh/sftp-server''는 일반적으로 root에서 암호를 요구하지 않아야합니다. – ephemient

+1

고마워 ... sudo는 알 수없는 몇 가지 이유 때문에 문제를 일으켰다 ... -o sftp_server = "su user -c 'exec/usr/libexec/openssh/sftp-server'" –

1

SSHFS 맨은 SSHFS 호출에

-o uid=$YOURUID -o gid=$YOURGID

을 전달하는 것은 당신이 그 UID/GID로 만들 파일의 사용자/그룹을 설정해야합니다 제안합니다. 원격 시스템에서 이들을 찾아야합니다.

+0

이 옵션은 원격 컴퓨터의 파일이 아닌 로컬 파일에만 영향을줍니다. 이 질문에서 그것이 그것이 필요한 것인지 완전히 명확하지는 않다. 필자는 그가 소유권을 변경하고자하는 원격 시스템의 파일 일 수 있다고 생각합니다. – Inshallah