SFTP: символьные ссылки файла в защищенном (chrooted) каталоге

22

Я пытаюсь настроить sftp так, чтобы несколько доверенных людей могли получить доступ / редактировать / создавать некоторые файлы. Я посадил пользователя в домашний каталог (/ home / name), но столкнулся с проблемой. Я хочу, чтобы они также имели доступ к другим частям VPS, потому что это также игровой сервер, веб-хостинг и т. Д., И я хочу, чтобы они имели полный контроль над файлами за пределами своего закрытого каталога.

Я попытался создать символическую ссылку (ln -s) на нужный каталог, но он не работает, как ожидалось. Я попытался (cp -rl) к файлам, к которым я хотел предоставить доступ, и это сработало - они могут редактировать файлы в своем каталоге, и это меняет тот, который хранится вне тюрьмы. НО они не могут создавать новые файлы (они могут, но это не будет обновляться за пределами тюрьмы). Я знаю, что, вероятно, я не делаю это "правильным образом", но что я могу сделать, чтобы делать то, что я хочу?

dukevin
источник

Ответы:

40

Символьные ссылки являются чисто символическими: они не содержат ничего, кроме пути, поэтому, когда вы открываете символическую ссылку, ОС считывает путь и использует его вместо этого. В среде chroot ссылки (особенно с абсолютными путями) обычно не указывают на то же место, на которое они указывали в обычной среде.

Если серверной ОС является Linux, лучше всего связать и смонтировать весь каталог где-нибудь внутри каталога chroot. При использовании этого важно помнить, что это не копия каталога, все удаленное здесь будет удалено из другого каталога (важно, если пользователь может mvфайлы или rm -rf). Сделать это:

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

Файлы в каталоге должны быть реальными файлами. Символьные ссылки здесь, вероятно, будут иметь те же проблемы, с которыми вы пытаетесь связать файлы в первую очередь.

DerfK
источник
Спасибо за Ваш ответ. Можете ли вы объяснить или указать мне учебник о том, как я могу заставить это работать? Я отключил ssh для гостей, поэтому у них есть только доступ по sftp. В какой файл я положил эту команду?
Dukevin
Хотя это не рекомендуется, вы также можете создавать жесткие ссылки на каталоги, что будет проще, но только если все файлы находятся на одном устройстве.
Сокол Момот
Какова команда для этого
Dukevin
@KevinDuke Это не то, что пользователи могут делать сами, только root может использовать mountэтот способ. Там может быть способ указать это, /etc/fstabтак что это делается автоматически при загрузке, но я не уверен, как
DerfK
1
Спасибо. Я прочитал несколько уроков и понял это. Ваш ответ действительно помог направить меня в правильном направлении. Благодарность! Для тех, кто хочет знать, это помогло: aplawrence.com/Linux/mount_bind.html freebsd.org/doc/en_US.ISO8859-1/books/handbook/… redbottledesign.com/…
dukevin