chroot 외부의 디렉토리에 어떻게 액세스 할 수 있습니까?


33

홈 디렉토리에 chroot 된 사용자가 있지만에서 파일을 관리 할 수 ​​있기를 바랍니다 /var/www. 따라서 다음을 수행했습니다.

root@server:/home/username# ln -s /var/www www
root@server:/home/username# cd www
root@server:/home/username/www# chown username:username *

그러나 /wwwFileZilla 로 열려고 하면 "그러한 파일이나 디렉토리가 없습니다"가 반환됩니다. 연결된 디렉토리를 볼 수 있지만 액세스 할 수 없습니다. 내가 무엇을 잘못하고 있지?

답변:


52

그것은이있는 파일을 찾고 있기 때문에 심볼릭 링크는 기본적으로 다른 파일에 단지 포인터하면 chroot 바깥 뭔가를 가리 수없는 이름 ( /var/www는 chroot 내부에 존재하지 않습니다). 반면에 하드 링크는 inode에 대한 포인터입니다. 따라서 그렇게하려면을 생략하여 하드 링크를 사용해야합니다 -s. 그러나 다양한 이유로 Linux에서 디렉토리 ( .및 이외의 디렉토리)를 하드 링크 할 수 없습니다 ..(주로 파일 시스템이 DAG 임).

아마도 가장 좋은 방법은 바인드 마운트를 사용하는 것입니다. 이 시도:

mount --bind /var/www /home/username/www

ln: '/var/www': hard link not allowed for directory
Doc

7
@Doc-디렉토리는 Linux에서 하드 링크 될 수 없습니다. 바인드 마운트가 작동해야합니다.
Chris Down

1
이것을 fstab에 추가하여 영구적으로 만들 수 있습니까?
Kornel

디렉토리를 통해 재귀하고 하드 링크로 트리를 복제 할 수 있습니까? 예 경우 부모가 /foo/a.txt그리고 /foo/bar/b.txt당신은 할 수 mkdir -p ./chroot/foo/; mkdir -p ./chroot/foo/bar; ln /foo/a.txt ./chroot/foo/a.txt; ln /foo/bar/b.txt ./chroot/foo/bar/b.txt? 아니면 어떤 이유로 여전히 작동하지 않습니까? (이것은 직접 작성하는 대신 스크립트를 작성하는 것입니다).
shadowtalker 2018

1
@Kornel 옵션 none과 함께이 모드를 사용할 수 있습니다 bind: serverfault.com/questions/613179/…
Yvan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.