У меня есть пользователи sftp, привязанные к / var / www, и я хотел бы, чтобы они автоматически перемещались в их каталог. Я нашел этот ответ, который мне очень помог: Chroot SFTP - можно разрешить пользователю писать в текущий (chroot) каталог. Но я хочу вместо этого переместить пользователя в его или ее домашний каталог (= / = имя пользователя) (который является подкаталогом var / www). Я попытался:
Match Group sftpusers
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /var/www
ForceCommand internal-sftp -d %h
Но я получаю fatal: percent_expand: unknown key %h [postauth]
.
РЕДАКТИРОВАТЬ: я нашел это %d
- это каталог пользователя, но он, похоже, не работает, потому что ищет его на основе / var / www.
Насколько я понимаю, проблема, с которой вы столкнулись, заключается в том, что вызов internal-sftp происходит после того, как chroot установлен, поэтому% h (а также попытка% d) расширяется внутри chroot. Даже если ваши пользователи живут в /var/www/$USERNAME
, использование% d естественным образом проинструктирует internal-sftp об исчерпании /var/www/var/www/$USERNAME
.
% u должен обойти эту проблему:
Match Group sftpusers
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory /var/www
ForceCommand internal-sftp -d /%u
Таким образом, внутреннему sftp будет сказано, что нужно выйти из каталога с именем /$USERNAME
. Поскольку этот вызов происходит после установки chroot, он должен разыменовать /var/www/$USERNAME
вне chroot.
Как обсуждалось в комментариях, поскольку ваши имена пользователей и имена домашних серверов расходятся, обходным путем было бы использовать указанную выше конфигурацию, затем создать / var / www / USERNAME для каждого пользователя и привязать mount / var / www / USERNAME к / var / www / CURRENT_HOMEDIR_NAME, например: mkdir /var/www/USERNAME; mount -o bind /var/www/USERNAME /var/www/CURRENT_HOMEDIR_NAME
.
Теперь у вас будет два каталога в / var / www для каждого имени пользователя, но один будет просто указывать на другой - тогда internal-sftp будет работать, как ожидалось, и все, что у вас есть, для доступа к домашним каталогам как / var / www / CURRENT_NAME не сломается.