Назад | Перейти на главную страницу

Как указать дом пользователя в sshd_config?

У меня есть пользователи 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 не сломается.