Я выполнил полдюжины различных уроков по настройке chroot для пользователей sftp, но мои заключенные в тюрьму пользователи все еще могут просматривать родительские каталоги. Я подозреваю, что мои разрешения не настроены правильно, потому что эта часть больше всего меняется в разных уроках. Вот что я сделал до сих пор:
1) Я использую CentOS 5.6, где по умолчанию OpenSSH - версия 4.3, поэтому я вручную установил последнюю версию 5.x. Запуск sshd -v теперь возвращает OpenSSH_5.9p1, OpenSSL 0.9.8e-fips-rhel5.
2) Я отредактировал /etc /ssh /sshd_config, чтобы изменить подсистему sftp на internal-sftp, и добавил:
Match user guest
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
3) Перезапустил sshd.
4) Создан пользователь "гость" с домашним каталогом /var /www /uploads /guest.
5) /var /www /uploads принадлежит root:root с режимом 755.
6) /var /www /uploads /guest принадлежит guest:root с режимом 755.
Используя клиент Transmit sftp на моем Mac, я вошел в систему с гостевым пользователем. По умолчанию он открывает домашний каталог пользователя, но затем я могу перемещаться вверх по уровням каталогов и просматривать другие каталоги на сервере.
В некоторых руководствах говорится, что /var /www /uploads должен иметь режим 700 или 750; если я сделаю это, я все еще могу войти в систему как гость, но по умолчанию вижу корневой каталог сервера и могу просматривать все остальные каталоги.
Другие учебники говорят, что я должен изменить оболочку гостевого пользователя на /bin /false; если я сделаю это, я вообще не смогу войти как гость. Transmit сообщает "Имя пользователя или пароль не были приняты сервером", а клиент sftp из командной строки сообщает "Соединение закрыто" после ввода пароля.
Я думаю, что я все перепробовал - кто-то может увидеть, чего не хватает?