Я ищу, чтобы полностью вывести мой сервис SMBA и заменить его сервисом WebDav.
Все поиски в Google до сих пор указывали мне на использование Apache / Webdav. Это близко к тому, что мне нужно, но, поскольку я читаю, требуется, чтобы у Apache был доступ к файлам моего пользователя и хуже; если он создает файл, новый файл будет принадлежать Apache (а не пользователю). Обратите внимание, что наличие файлов с правильными владельцами и разрешениями Unix является обязательным, поскольку некоторые пользователи имеют прямой доступ по SSH.
Поэтому я довольно просто ищу способ заставить Apache / Webdav «правильно» работать с несколькими пользователями (то есть сменить пользователя unix на пользователя, вошедшего в систему, прежде чем пытаться обслуживать файл ) или найти полную альтернативу Apache / Webdav.
Пока что поиски ничего не нашли.
AssignUserIDExpr
, примет ли авторизованный пользователь. Это может не с тех пор, какAssignUserID
кажется, вступает в силу, прежде чем пользователь аутентифицируетсяОтветы:
Если у вас есть имя пользователя и / или uid, вы можете сделать это с помощью nginx + lua + luarocks ljsyscall
В системе Debian, настроенной как:
И nginx настроил так:
Это будет выполнять setfsuid для каждого запроса, обслуживаемого работником nginx. К сожалению, похоже, что вы должны запустить nginx от имени root, чтобы это работало прямо сейчас. Я полагаю, что это возможно для работы с другим пользователем, при условии, что процесс запущен от имени пользователя root, прерван для другого пользователя с сохраненным CAP_SETUID (см. Документацию
capsh
), аuser
директива отсутствует в файле конфигурации nginx.Возможно, вам также может понадобиться установить идентификаторы группы.
См. «Влияние изменений идентификатора пользователя на возможности» в http://man7.org/linux/man-pages/man7/capabilities.7.html.
источник
Это может стоить прочитать: Другой вход: несколько пользовательских папок и одна общая папка http://hexeract.wordpress.com/2011/02/25/configure-a-webdav-enabled-webserver-for-multiple-user-folders и-один-разделяемой папке /
источник
Я использовал это в качестве руководства для настройки webdav: http://bernaerts.dyndns.org/linux/75-debian/62-debian-webdav-share
да, Apache - это группа (www-data под Debian), но вы можете добавить пользователей в эту группу, поэтому я добавил одного пользователя. Не проверял, почему вы не можете добавлять других пользователей .... Сервер webdav, использующий в принципе эту настройку, теперь работает в течение 3 лет у меня и у моих сыновей (так что 2 идентичных сервера для работы моего сына). Debian 6 уже несколько месяцев является версией LTS (до февраля 2016 года).
По сравнению с Bernaerts я адаптировал в файле Apache: / etc / apache2 / sites-available / default эту часть конфигурации.
Таким образом, мои файлы больше не находятся под www, а находятся в / data / webdav1 (через псевдоним webdav1 для краткости). Для каждого жесткого диска, который я создал, такой раздел и webdav1 становится webdav2 для второго жесткого диска в этом разделе. Мы можем встроить до 10 жестких дисков на этих серверах, так что 10 из этих разделов в этом файле конфигурации. Я добавил пользователя в www-data, davfs2 и davfs, чтобы пользователь мог получить доступ к папкам (папкам) webdav. Таким образом, пользователь должен войти в систему и будет предложено ввести имя пользователя и пароль. В fstab перечислены все диски с данными webdav, поэтому монтирование происходит автоматически. Эта часть fstab:
источник
Вы пробовали OwnCloud ? Все еще просто тестирую сам, но похоже, что он отвечает вашим требованиям: webdav работает "из коробки".
источник
Долго искав, я просто не смог найти. Есть много многопользовательских серверов, но я не смог найти тот, который выполнялся как системный пользователь.
Так что я написал один сам. Это только проверено, насколько я могу проверить это сам. Но для чего он стоит, исходный код здесь:
https://github.com/couling/WebDAV-Daemon
источник
Hy,
Я искал то же самое, и я наконец-то собрал решение, используя apache2. Я попробовал решение узлов с помощью npm webdav-server и обнаружил, что не все работает так же хорошо, как при использовании модуля apache. Затем я попробовал dav-сервер npm, основанный на jsDAV, который мог бы работать лучше и мог бы стать решением, но, поскольку мне приходилось иметь дело с паршивым соединением 3g, я предпочел apache и узнал о сценариях с несколькими экземплярами.
Вот и я делюсь своим опытом.
http://helpcenter.epages.com/Doc/doc/apache2/README.multiple-instances
Я запускаю экземпляр для каждого пользователя webdav ... не очень масштабируемый, но для работы в небольшой команде это достаточно хорошо.
Замените myUser вашим пользователем.
На Ubuntu 14.04
Поэтому я запускаю процесс apache как пользователь myUser, определенный в / etc / apache2-myUser / envars
Редактировать ports.conf
Я не смог заставить работать PAM-аутентификацию на Ubuntu 14.04, поэтому мне нужно работать с базовой аутентификацией, так как я затем обертываю его в https с помощью nginx
Затем /etc/apache2-myUser/sites-available/000-default.conf
тогда у прокси nginx есть хитрость с заголовком. Папка с иконками прохождения назначения позволяет webdav понизить версию в браузерах
Нет необходимости использовать nginx в качестве прокси-сервера, apache вполне может выполнить https, но, столкнувшись с проблемой назначения прокси, я почувствовал, что стоит упомянуть об этом.
источник
Я также ищу подобное решение.
Решение 1. В вашей среде рабочего стола (Gnome, KDE) могут быть виджеты, которые открывают определенную папку с помощью WebDAV. Это будет работать до тех пор, пока ваша рабочая среда работает и не является решением демона.
Решение 2. Ничто не мешает вам запускать Apache под собственной привязкой пользователя на непривилегированных портах выше 1024. Просто напишите файл конфигурации или скопируйте файлы, включенные в ваш дистрибутив, в ваш $ HOME / etc / httpd (просто пример), добавьте DAV- связанный конфиг и запустите его от имени своего пользователя без полномочий root, например:
$ httpd -f $ HOME / etc / httpd
Запуск от имени ваших пользователей гарантирует, что Apache будет создавать файлы как вы.
источник