У меня проблемы с chrooted окружением в Ubuntu 12.04.
Задача
Настройте FTP / SFTP-сервер, на котором пользователи, входящие в новую группу sftp, могут использовать sftp и ftp в одном каталоге.
Настройка ProFTP
Настройка ProFTP - это базовая сборка Ubuntu, и она работает должным образом. Пользователь test1 может войти на сервер через ftp на tcp 21 и будет привязан к своему каталогу / home / test1 / ftproot.
в /etc/proftpd/proftpd.conf
# Use this to jail all users in their homes
DefaultRoot ~/ftproot
Когда пользователь test1 входит в систему через ftp, он видит только / (это то, что я хочу).
Но когда тот же пользователь входит в систему через sftp и правильно chrootted с помощью sshd_config, поскольку каталог / home / test1 ДОЛЖЕН принадлежать пользователю root, пользователь входит в систему через sftp и видит:
/
/ftproot
/.bashrc
Это означает, что пользователь НЕ попадает в тот же каталог / ftproot. test1 по умолчанию окажется в его домашнем каталоге / home / test1, который фактически принадлежит пользователю root. Следовательно, он не может ничего писать через sftp, пока не изменит каталоги на / ftproot.
Как мне настроить sftp-сервер так, чтобы по умолчанию он находился в том же каталоге?
Вот мои соответствующие настройки sshd_config:
#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp -f AUTH -1 VERBOSE
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
#AllowTcpForwarding No
ChrootDirectory% h / ftproot не работает.
Теперь, когда proftpd
имеет собственную реализацию SFTP через mod_sftp
модуль, используя его для ваших нужд SFTP (а не OpenSSH), можно аккуратно решить эту проблему.
Вам нужно изменить папку, в которую пользователь test1 приходит с SSH. Посмотрите ответ на этот вопрос: https://stackoverflow.com/questions/3530433/putty-change-default-ssh-login-directory;
Добавить cd subdir/subdir
в ~ / .bashrc или ~ / .bash_profile, или
изменить домашний каталог пользователя.
Чтобы изменить домашний каталог пользователя: usermod -d /path/to/dir/ username