8

Я запутался в этой настройке, которую я пытаюсь развернуть. Я надеюсь, что кто-то из вас, ребята, может помочь мне: очень ценится.

Справочная информация

Сервер Debian 6.0, ext3, с Apache2/SSL и Nginx спереди в качестве обратного прокси. Мне нужно предоставить sftp доступ к корневому каталогу Apache (/var/www), чтобы убедиться, что пользователь sftp привязан к этому пути с разрешениями RWX.

Все это без изменения каких-либо разрешений по умолчанию в /var /www.

drwxr-xr-x  9 root root  4096 Nov  4 22:46 www

Внутри /var /www

-rw-r----- 1 www-data www-data     177 Mar 11  2012 file1
drwxr-x--- 6 www-data www-data    4096 Sep 10  2012 dir1
drwxr-xr-x 7 www-data www-data    4096 Sep 28  2012 dir2
-rw------- 1 root     root          19 Apr  6  2012 file2
-rw------- 1 root     root     3548528 Sep 28  2012 file3
drwxr-x--- 6 www-data www-data    4096 Aug 22 00:11 dir3
drwxr-x--- 5 www-data www-data    4096 Jul 15  2012 dir4
drwxr-x--- 2 www-data www-data  536576 Nov 24  2012 dir5
drwxr-x--- 2 www-data www-data    4096 Nov  5 00:00 dir6
drwxr-x--- 2 www-data www-data    4096 Nov  4 13:24 dir7

Что я пробовал

  1. создал новую группу secureftp
  2. создал нового пользователя sftp , присоединился к группам secureftp и www-data также с оболочкой nologin . Homedir is /
  3. отредактировал sshd_config с
Subsystem sftp internal-sftp 
AllowTcpForwarding no 
Match Group <secureftp> 
      ChrootDirectory /var/www 
      ForceCommand internal-sftp

Я могу войти с пользователем sftp, перечислить файлы, но действие записи не разрешено. Пользователь Sftp находится в группе www-data, но разрешения для /var /www читаются / читаются +x для бита группы, так что ... Не работает

Я также пробовал с ACL, но, поскольку я применяю права доступа ACL RWX для пользователя sftp к /var /www (каталоги и файлы рекурсивно), это также изменит разрешения unix, чего я не хочу.

Что я могу сделать здесь?

Я думал, что смогу включить пользовательские www-данные для входа в систему как sftp, чтобы он мог изменять файлы / каталоги, которыми владеют www-данные в / var / www. Но по некоторым причинам я думаю, что это было бы глупо с точки зрения безопасности.

1 ответ1

12

Это, вероятно, было бы больше вопросом Serverfault, но в любом случае.

Что я сделал, так это привязал моих пользователей к их домашним каталогам, а затем использовал mount --bind чтобы создать ссылку на него в своих домашних каталогах. Затем я использовал setfacl чтобы убедиться, что www-data maintans разрешает запись для новых файлов в каталоге. Этот эффект будет повторяться в /var/www , что вы и хотите сделать.

Установив g+s для каталога, все новые файлы и каталоги, созданные в нем, будут наследовать владение группой от своего родителя.

useradd someuser
mkdir -p /home/someuser/www
mount --bind /var/www /home/someuser/www
chmod g+s /home/someuser/www
chown -R someuser:www-data /home/someuser/www
setfacl -d -m g::rwx /home/someuser/www

Это должно делать свое дело.

Сделайте ваши крепления постоянными

Очевидно, что вы хотите, чтобы ваши монтировки все еще были при перезагрузке сервера. Это так же просто, как добавить монтирование в ваш /etc/fstab . Не все провайдеры позволяют вам трогать этот файл, но большинство делают. Просто добавьте такие строки:

/var/www        /home/someuser/www        none        bind        0        0

Вы можете перезагрузить компьютер, чтобы убедиться, что он работает.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .