%20%D0%BA%D0%B0%D1%82%D0%B0%D0%BB%D0%BE%D0%B3%D0%B5.png)
Я пытаюсь настроить sftp так, чтобы несколько доверенных людей могли получать доступ/редактировать/создавать некоторые файлы. Я запер пользователя в его домашнем каталоге (/home/name), но столкнулся с проблемой. Я хочу, чтобы они также могли получать доступ к другим частям VPS, поскольку это также игровой сервер, веб-хостинг и т. д., и я хочу, чтобы они могли иметь полный контроль над файлами за пределами их запертого каталога.
Я попробовал сделать символическую ссылку (ln -s) на нужный каталог, но она не работает, как и ожидалось. Я попробовал (cp -rl) на файлы, к которым я хотел предоставить доступ, и это сработало — они могут редактировать файлы в своем каталоге, и это изменяет тот, который хранится вне тюрьмы. НО они не могут создавать новые файлы (могут, но они не будут обновляться вне тюрьмы). Я знаю, что я, вероятно, делаю это не «правильным способом», но что я могу сделать, чтобы сделать то, что я хочу?
решение1
Символические ссылки являются чисто символическими: они не содержат ничего, кроме пути, поэтому, когда вы открываете символическую ссылку, ОС считывает путь и использует его вместо этого. В среде chroot ссылки (особенно с абсолютными путями) обычно не указывают на то же место, на которое они указывали в обычной среде.
Если ОС сервера — Linux, то лучше всего смонтировать весь каталог где-нибудь внутри каталога chroot с помощью bind-mount. При использовании этого важно помнить, что это не копия каталога, все, что удалено здесь, будет удалено из другого каталога (важно, если пользователь может mv
файлы или rm -rf
). Чтобы сделать это:
mount --bind /some/directory /somewhere/else
Файлы в каталоге должны быть реальными файлами. Символические ссылки здесь, вероятно, будут иметь те же проблемы, что и при попытке сослаться на файлы в первую очередь.