Можно ли использовать SFTP в Linux и ограничить учетную запись пользователя ОДНИМ каталогом, чтобы нельзя было получить другой список каталогов? Да, я должен использовать SFTP, FTP используется только людьми, которые любят быть взломанными.
Например, я хочу, чтобы кто-то изменил файлы в / var / www / code /, но я не хочу, чтобы они могли изменять что-либо еще. Я даже не хочу, чтобы они видели содержимое / tmp /.
(Я приму «быстрое и грязное» решение, если оно безопасный.)
Из справочной страницы sshd_config:
ChrootDirectory Specifies a path to chroot(2) to after authentication. This path, and all its components, must be root-owned directories that are not writable by any other user or group. After the chroot, sshd(8) changes the working directory to the user's home directo- ry. The path may contain the following tokens that are expanded at runtime once the connecting user has been authenticated: %% is replaced by a literal '%', %h is replaced by the home directory of the user being authenticated, and %u is replaced by the user- name of that user. The ChrootDirectory must contain the necessary files and directo- ries to support the user's session. For an interactive session this requires at least a shell, typically sh(1), and basic /dev nodes such as null(4), zero(4), stdin(4), stdout(4), stderr(4), arandom(4) and tty(4) devices. For file transfer sessions using ``sftp'', no additional configuration of the environment is nec- essary if the in-process sftp server is used, though sessions which use logging do require /dev/log inside the chroot directory (see sftp-server(8) for details). The default is not to chroot(2).
Другой альтернативой может быть замена их оболочки на MySecureShell, которая дает вам такие функции, как Chroot, ограничение пропускной способности, ограничение соединения и т. Д. И т. Д.
http://mysecureshell.sourceforge.net/
В настоящее время использую его в среде веб-хостинга, и, надо сказать, он неплохо сработал.
http://pizzashack.org/rssh/ позволяет настроить ограниченный ssh, чтобы запускались только SFTP / SCP; это также помогает настроить chroot.
Как указывает CarpeNoctem, иногда FTPS является лучшим решением. ssh, SFTP, scp - очень "низкоуровневые", FTPS (как и небезопасный FTP) обычно более высокоуровневые (виртуальные каталоги, виртуальные пользователи и т. д.).
Я думаю, что для описанного вами сценария оба подхода будут работать.
SFTP НЕ является многофункциональным решением, сравнимым с FTP-сервером, таким как vsftpd. Он не поддерживает chroot; что вы ищете. FTPS (не SFTP) будет лучшим решением, поскольку он поддерживает шифрование, chroot и т. Д. Vsftpd поддерживает это и его легко настроить.
Кроме того, не забудьте воспользоваться модулем pam_listfile, чтобы явно указать, каким пользователям разрешено входить в систему через ftps.
Я бы использовал эту конфигурацию: http://www.debian-administration.org/articles/590
Затем для функции chroot: http://www.howtoforge.com/chrooted-ssh-sftp-tutorial-debian-lenny