Чего не хватает в моей настройке sftp chroot?

Чего не хватает в моей настройке sftp chroot?

Я следовал полудюжине различных руководств по настройке 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, чтобы изменить Subsystem 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 принадлежит гостю:root с правами 755.

Используя клиент Transmit sftp на моем Mac, я вошел в систему как гостевой пользователь. По умолчанию открывается домашний каталог пользователя, но затем я могу перемещаться по уровням каталогов и просматривать другие каталоги на сервере.

В некоторых руководствах говорится, что /var/www/uploads должен иметь режим 700 или 750. Если я это сделаю, я все равно смогу войти в систему как гостевой пользователь, но по умолчанию буду видеть корневой каталог сервера и смогу просматривать все остальные каталоги.

В других руководствах говорится, что мне следует изменить оболочку гостевого пользователя на /bin/false; если я это сделаю, я вообще не смогу войти как гостевой пользователь. Transmit говорит: «Имя пользователя или пароль не были приняты сервером», а клиент командной строки sftp говорит: «Соединение закрыто» после того, как я ввожу пароль.

Думаю, я перепробовал все — может кто-нибудь увидит, чего не хватает?

решение1

Похоже, ChrootDirectory должен указывать на уровень ВЫШЕ домашнего каталога.

Итак, поскольку дом гостя —/var/www/uploads/гость, тоChrootDirectoryдолжен указывать на/var/www/загрузки

Это МОЖЕТ БЫТЬ... Мне пришла в голову еще одна мысль:

Вы вручную установили новую версию openssh, вы удалили старую версию? Где была установлена ​​новая версия? иногда, если вы не будете осторожны, в систему будут установлены новые вещи/usr/локальный/вместо/usr, что означает, что сервер с поддержкой sftp считывает свои файлы конфигурации с/usr/local/etc/ssh/...вместо ожидаемого/etc/ssh/...

По крайней мере, нужно что-то проверить.

решение2

Я столкнулся с точно такой же проблемой, но решил ее, настроив chrooted-каталога также все родительские каталогисо следующими разрешениями

1) Изменение владельца на root:

sudo chown root [directory]

2) Удаление всех разрешений на запись для группы:

sudo chmod 755 [directory]

К сожалению, я думаю, что это означает, что вы не сможете напрямую перейти к папке, не принадлежащей пользователю root, но буду рад услышать, если кто-нибудь сможет меня поправить!

Связанный контент