Назад | Перейти на главную страницу

Настройка Chroot для пользователей SFTP

Я пытаюсь настроить SFTP-сервер для автоматического резервного копирования. Я настроил сервер Ubuntu 14.04 и добился частичного успеха. Идея, которую я хочу реализовать, такова:

  1. Пользователь будет создан для каждой конкретной системы для резервного копирования. Только SFTP.
  2. Пользователь будет Chrooted и не сможет читать и писать вне своего домашнего каталога.
  3. После входа в систему пользовательский дом будет «корнем».
  4. Пользователь сможет загружать файлы в корень. (Вот где я застрял.)

Я использовал следующий фрагмент для создания Chroot в sshd_config следующим образом:

Match Group sftpbackup
   ChrootDirectory /srv/sftpbackup/%u
   X11Forwarding no
   AllowTcpForwarding no
   ForceCommand internal-sftp

Затем я установил разрешения для / srv / sftpbackup в соответствии с требованиями.

# ls -l
total 4
drwxr-x--- 3 root sftpbackup 4096 Jan  5 15:29 user1
# 

Теперь пользователь может войти в систему, но не может загружать файлы (в разрешении отказано). Если я изменю владельца каталога, чтобы он выглядел так:

# ls -l
total 4
drwxrwx--- 3 user1 sftpbackup 4096 Jan  5 15:29 user1
# 

Затем пользователь не может войти в систему из auth.log:

sshd[14835]: fatal: bad ownership or modes for chroot directory "/srv/sftpbackup/user1"

Похоже, что если домашний каталог пользователя является chroot SFTP, root должен владеть каталогом, поэтому необходимо создать подкаталог, чтобы пользователь мог писать в него.

Есть ли способ сделать корень доступным для записи? Глядя на различные веб-сайты, кажется, что нет способа добиться того, чего я хочу. Я не совсем понимаю, в чем разница между возможностью записи в chroot-каталог пользователем и записываемым подкаталогом. Понимание будет оценено.

Примечание. Моя цель - создать сервер, на котором резервные копии могут храниться на различных устройствах. Устройства будут настроены сторонним поставщиком, поэтому я стараюсь, чтобы все было как можно проще (одно имя пользователя на устройство, все файлы попадают в «корень» после входа в систему) и безопасным (созданные пользователи будут иметь минимальные права на сервер) по возможности. Извиняюсь, если мои желания немного жесткие.

Internal-sftp требует, чтобы chrooted пользовательский дом находился в корневом каталоге:

/some/path/root-owned/user-dir1
                     /user-dir2

У корневого каталога должно быть 555 разрешений, а пользовательские каталоги должны создаваться пользователем root и принадлежать конкретному пользователю. Внутри подкаталогов пользователь может делать все, что угодно, но он не может удалять или переименовывать каталог-пользователя [12].

Это внутренние ограничения sftp.