Мне нужна установка, в которой я могу поместить содержимое нескольких пользовательских папок на сервер DMZ, откуда внешние клиенты могут его загрузить, протокол SFTP, Linux, OpenSSH. Чтобы упростить администрирование, мы хотим использовать для загрузки одного пользователя.
Что работает, так это определять ChrootDirectory /home/sftp/
в sshd_config установите соответствующих владельцев и режимы и определите домашний каталог в passwd
чтобы рабочий каталог пользователя подходил. Это моя структура:
/home/sftp/uploader/user1/file1.txt
/user2/file2.txt
Пользователь-загрузчик может написать file1.txt
и file2.txt
в соответствующие папки и настроив папки пользователя (user1, user2) на основную группу пользователей + установив SETGUID для папок, пользователи могут даже удалять файлы (что необходимо).
Единственная проблема: потому что /home/sftp/
- это базовый каталог chroot, в котором пользователи могут изменять Updir и просматривать папки других пользователей, но не могут изменить их из-за прав доступа.
Требование: Мы хотим запретить пользователям переходить в / home / sftp / uploader / и видеть папки других пользователей. Мои требования - использовать SFTP, иметь одного пользователя загрузки, и каждый пользователь должен иметь доступ на запись в свой домашний каталог.
Очевидно, это не вариант использовать что-то вроде ChrootDirectory %h
потому что каждый компонент пути chroot-пути должен иметь ограниченные права доступа, поэтому, насколько я понимаю, это не работает.
Насколько я понимаю, я должен использовать Match user для каждого пользователя отдельно в sshd_config
Match user user1
ChrootDirectory /srv/sftp/user1
Match user user2
ChrootDirectory /srv/sftp/user2
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
Я решил это, введя другой уровень каталогов:
/srv/sftp/user1/data/file1.txt ^^^^^ ^^^^ | +- user homedir +------- chroot target
OpenSSH теперь настроен для chroot в каталог «user1», предотвращая выход пользователя из своего собственного каталога. Домашний адрес пользователя установлен в "/ data", так что рабочий каталог пользователя становится этим сразу после входа в систему SFTP.
«user1» имеет ограниченные права доступа, как того требует OpenSSH, пользователь не имеет права записи в этот каталог.
«данные», с другой стороны, принадлежат пользователю и имеют его основную группу вместе с SETGUID, так что пользователь может записывать в этот каталог, а файлы, которые записываются пользователем загрузки, принадлежат правильной группе.