SFTP : jailed (chrooted) 디렉토리의 파일 심볼릭 링크


22

일부 신뢰할 수있는 사람들이 일부 파일에 액세스 / 편집 / 만들 수 있도록 sftp를 설정하려고합니다. 사용자를 홈 디렉토리 (/ home / name)에 투옥했지만 문제가 발생했습니다. 또한 게임 서버, 웹 호스트 등의 이유로 VPS의 다른 부분에도 액세스 할 수 있기를 원하며 jailed 디렉토리 외부의 파일을 완전히 제어 할 수 있기를 원합니다.

원하는 디렉토리에 symlink (ln -s)를 만들려고 시도했지만 예상대로 작동하지 않습니다. 액세스 권한을 부여하려는 파일에 (cp -rl) 시도하고 작동했습니다. 파일을 디렉토리에서 편집 할 수 있으며 감옥 외부에 저장된 파일을 변경합니다. 그러나 그들은 새로운 파일을 만들 수 없습니다 (그들은 할 수는 있지만 감옥 밖에서는 업데이트되지 않습니다). 나는 이것이 "올바른 방법"을하고 있지 않다는 것을 알고 있지만, 내가 원하는 것을하기 위해 무엇을 할 수 있는가?

답변:


40

심볼릭 링크는 순전히 상징적입니다. 심볼릭 경로는 아무것도 포함하지 않으므로 심볼릭 링크를 열면 OS가 경로를 읽고 대신 사용합니다. chroot 환경에서 링크 (특히 절대 경로가있는 링크)는 일반적으로 일반 환경에서 가리키는 것과 동일한 위치를 가리 키지 않습니다.

서버 OS가 Linux 인 경우 chroot 디렉토리 내부의 전체 디렉토리를 바인드 마운트하는 것이 가장 좋습니다. 이것을 사용할 때, 이것이 디렉토리의 사본이 아니라는 것을 기억하는 것이 중요합니다. 여기서 삭제 된 것은 다른 디렉토리에서 제거됩니다 (사용자가 mv파일을 작성할 수있는 경우 중요 rm -rf). 이것을하기 위해:

mount --bind /some/directory /somewhere/else

디렉토리의 파일은 실제 파일이어야합니다. 여기의 심볼릭 링크는 처음에 파일에 연결하려고 시도했을 때와 같은 문제가있을 것입니다.


답변 주셔서 감사합니다. 이 작업을 수행하는 방법에 대한 자습서를 설명하거나 알려주시겠습니까? 손님을 위해 ssh를 비활성화 했으므로 sftp 액세스 만 가능합니다. 이 명령을 어떤 파일에 넣습니까?
dukevin

널리 권장되는 것은 아니지만 모든 파일이 동일한 장치에있는 경우에만 디렉토리 하드 링크를 만들 수 있습니다.
Falcon Momot


@KevinDuke 이것은 사용자가 스스로 할 수있는 것이 아니며 루트 만이 mount방법을 사용할 수 있습니다 . /etc/fstab부팅시 자동으로 수행되도록 지정하는 방법이있을 수 있지만 확실하지 않습니다.
DerfK

1
고맙습니다. 몇 가지 튜토리얼을 읽고 알아 냈습니다. 당신의 대답은 정말로 올바른 방향으로 나를 가리켜주었습니다. 감사! 노하우를 원하는 사람들을 위해, 이러한 도움 : aplawrence.com/Linux/mount_bind.html freebsd.org/doc/en_US.ISO8859-1/books/handbook/...의 redbottledesign.com/...을
dukevin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.