2010-12-15 2 views
3

내 웹 응용 프로그램 사용자가 rsync를 통해 디렉토리의 내용을 업로드 할 수있게하고 싶습니다. 이들은 온라인으로 가입 한 사용자 일 뿐이므로 영구 유닉스 계정을 만들고 싶지는 않으며 업로드하는 파일이 자신의 계정과 관련된 디렉토리 아래에만 내 서버에 저장되도록하고 싶습니다. 이상적으로, 흐름이 같은 것입니다 :rsync를 통해 최종 사용자로부터 안전하게 파일을받는 방법

  1. 사용자가 인증 웹 UI를 통해 "나는 rsync를 내 파일을 업데이트하고 싶습니다"라고
  2. 서버 말한다 "OK, 실행하십시오 : rsync에/경로 /로/yourfiles uploaduser123abc의 @ MyServer를 :/"
  3. 클라이언트는
    • 업로드 위치는 chroot에있다 서버 또는 뭔가에 변경된 어떤 파일을 업데이트하는 것을 실행 - 우리는 고객을 위해 원하는 것은 단지에 지정된 디렉토리에 파일에 기록 서버
    • 이상적으로 클라이언트는 비밀 번호를 입력하십시오 - 사용자 이름의 123abc는이 하나의 rsync 트랜잭션을 안전하게 유지하기위한 비밀 토큰으로 충분하며 트랜잭션 후에는이 토큰이 삭제됩니다. 새로운 단계 1이 발생할 때까지 더 이상의 rsync가 발생하지 않습니다.
  4. 서버에 업데이트 된 사용자 파일 집합이 있습니다.

Google AppEngine을 사용했다면 원하는 동작은 "업데이트"명령과 비슷합니다. 변경된 파일 만 호스팅을 위해 appengine에 보냅니다.

이런 식으로 구현하는 최선의 방법은 무엇입니까? 일회용 사용자를 만든 다음 해당 계정으로 chroot jail에서 rsync 데몬을 실행하는 것이 좋습니까? 이와 비슷한 것을 할 수있는 라이브러리 (선호하는 Python) 또는 스크립트가 있습니까?

답변

0

ssh jailrooted와 rsync를 정상적으로 실행할 수 있습니다. PAM을 사용하여 "대체"authdb에 인증합니다.

+0

소리가 적당합니다. SSH를 jailrooted로 실행하고 PAM으로 임시 대체 DB를 설정하는 방법에 대한 예제를 제안 할 수 있습니까? –

+0

아마 이전에 대한 안내서를 찾을 수 있습니다 서버 오류 및 후자의 경우 데이터베이스 기반 PAM 및 NSS 모듈을 사용하고 적절한대로 항목을 추가/제거합니다. –