Я создал новую учетную запись для SFTP, только указав оболочку /bin/false
, и стал членом stfp_only
группа. Затем я отредактировал свой /etc/ssh/sshd_config
как указано в многочисленных руководствах, которые я читал так
Subsystem sftp internal-sftp
Match Group sftp_only
ChrootDirectory /srv/uploads/%u
AllowTcpForwarding no
ForceCommand internal-sftp
X11Forwarding no
Все идет нормально. Я могу загружать файлы, и все, по большей части, заблокировано, за исключением того, что пользователь все еще может mkdir
, rmdir
, и изменить права доступа к файлам, которые я не хочу разрешать по соображениям безопасности. Я пытался заставить черный список работать как
ForceCommand internal-sftp -P mkdir,rmdir
Однако похоже, что, хотя эти параметры белого / черного списка доступны на OpenBSD, версия sftp-server
на Centos позволяет только вести журнал и параметры маски файла
usage: sftp-server [-he] [-l log_level] [-f log_facility] [-u umask]
[-m force_file_perms]
Есть ли другой способ, кроме попытки скомпилировать исходный код версии BSD? Что-то с ограничениями ACL, разрешающими только файлы, без папок, символических ссылок и т. Д.? Запретить изменение прав доступа к файлам?
Если бы существовал способ, чтобы загружаемые пользователями файлы создавались как root:sftp_only 664
то, по крайней мере, они могут изменять / удалять свои собственные файлы с помощью групповой записи, но не изменять права доступа, поскольку они не владеют ими.
Использование: CentOS версии 6.10, OpenSSH_5.3p1
CentOS 6 поставляется со слишком старой версией OpenSSH. Вы можете попробовать установить свою собственную версию, но тогда вам придется поддерживать ее, я бы предпочел полагаться на Red Hat / CentOS, чтобы она оставалась исправленной.
При обновлении до CentOS 7 будет поставляться версия OpenSSH 7.4p1, которая поддерживает -P
флаг вам нужен.