E_user 19.02.2012 04:10

Есть проблема!Настройка прав на медиасервере, и прочие издержки

Доброе время суток,

у меня есть домашний медиа сервер, при настройки которого я столкнулся я с проблемой совместимости прав доступа в одну и туже папку разными программами и пользователями.
Ниже привожу таблицу желаемой настройки. Если предпочитаемые мной ностройки кому-то покажутся не подходящими для такой задачи, прошу написать об этом.
Речь идет о директории /home/public и её поддиректориях:

  • /home/public/dl

  • /home/public/music

  • /home/public/video

  • /home/public/pictures

  • /home/public/*


Таблица прав доступа
FTP – тут все просто, у всех есть дома доступ в публичную папку /home/public, где хранятся общие данные.

XBMC &Chromium; – на сервере стоит XBMC для просмотра фото/видео. Через него я так-же запускаяется Chromium, который в свою очередь записывает файлы в /home/public/dl. Если не пропишу ему права, он туда не качает.

Samba – открыта «публичная» шара, диретория которой опять /home/public.

Transmission – у этой программы вроде никаких проблем с правами нет, т.к. она запускается как root. Честно говоря, мне не особо нравится что программа, которая по природе своей работает с инетом имеет такие права. Нормально ли это? Или сэтим что-то можно сделать? Создать ей отдельного пользоватя? Как решить проблему? Если это проблема...

MiniDLNA – опять, главная директория /home/public/*. Вообще я впервые буду устанавливать программу такого характера. С радостью откажусь от этой программы, если мне ктонибудь порекомендует софт для UPnP и DLNA под Archlinux.


Больше всего конфликтуют FTP, DLNA и Chromium.
Я менял права с помощью chown -R ... но открывая права одной программе, закрываю другой. Думаю я бы настроил как нибудь "костыльно", но лучше найти более правильное решение.

Прошу помочь настроить/разобраться. Как бы Вы сделали такое?



Спасибо
_______________________



Ладно, пойду читать маны. =) Как настрою, отпишусь.


Тэги: arch DLNA media permissions upnp
+ 0 -
Похожие Поделиться

cppmm 19.02.2012 06:32 #
Обычно, когда необходимо дать доступ нескольким сервисам в одну общую директорию, используя групповые права. Т.е. каждую программу надо запускать от какого-либо своего пользователя(или одного, специально для этого созданного) и всех этих пользователей добавить в общую группу. На директорию, с которой они работают, выставляется бит SGID(таким образом, все файлы, созданные в этой директории будут принадлежать к группе, которая этой директории назначена; подробности в man chmod). Далее нужно отредактировать параметры umask для всех этих пользователей, чтобы они создавали файлы с разрешением чтения и записи для группы. Таким образом в этой общей директории будут создаваться файлы, которые все сервисы из общей группы смогут просматривать, изменять или удалять. Разумеется, директорий и групп может быть несколько - тут уж вам надо смотреть по потребностям.
Я использую подобную схему на тестовом web-сервере. Там у меня есть директория /var/www/
В ней находятся тестовые сайты. Она принадлежит пользователю www-data и группе www-data. Апач и нгинкс работают от этого пользователя. Туда же есть доступ по ftp. Каждый, кто идёт на сервер по ftp, пишет файлы от своего пользователя, но все они состоят в группе www-data. Ну и мой собственный системный логин на сервере тоже имеет туда такой же доступ. Для продакшена это, конечно, не безопасно, но для теста или дома - вполне.
Что касается прав на запуск - можно опять же подправить umask для тех, кому это право необходимо, но мне не совсем ясно, зачем кому-то на файлопомойке нужно что-то запускать.
И наконец, transmission. Читайте маны по нему или просто запускайте его от отдельного пользователя. Ни один сервис не должен работать от имени рута, если он смотрит в сеть.
cppmm 19.02.2012 06:34 #
Да. А ещё есть расширенные права доступа, но это уже тема для отдельной немаленькой статьи. Можно гуглить по ключевой фразе Access Control List. Правда, дома городить это я бы не стал. Я лично их использую только на одном из боевых серверов и то, лишь частично.
magist3r 19.02.2012 10:05 #
Зря так на ACL. Ничего там городить не надо. Вот простой пример.
1) Даем пользователю xbmc права на папку /home/public/dl:
1
2
setfacl -R -m u:xbmc:rw- /home/puplic/dl
setfacl -d -R -m u:xbmc:rw- /home/puplic/dl


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

По поводу miniDLNA: отлично работает, настраивается за полминуты, видео на двух самсунгах показывает без проблем.

По поводу transmission: попробуйте rtorrent+rutorrent. Он погеморнее с настройкой, но фичастее и запускается от обычного юзера.
E_user 20.02.2012 13:04 #
Ознакомился с ACL. Хорошо, конечно, что оно есть. Но в книге из которой я черпал постоянно добавлялась доля скептицизма на этот счет. Запугивали, дескать могут возникнуть проблемы с dump или fsch. Не приятно как то. А так, он в арче устанавливается сам. Только прописать в fstab ключ acl и можно применять.
magist3r 19.02.2012 10:10 #
По мне так решение с отдельной группой и добавлением пользователей в нее как раз и называется "огород городить". ACL для этого и придумали.
E_user 19.02.2012 12:39 #
Почитаю, попробую, отпишусь о результате.
cppmm 20.02.2012 18:24 #
Это штатный способ разделения прав со времён UNIX. ACL для более хитрых задач.
E_user 19.02.2012 12:38 #
А шелл у Вашего пользователя www-data валидный или false? В смысле я вот думаю, нужен ли валидный шелл такому пользователю?
cppmm 19.02.2012 15:09 #
У всех системных пользователей я ставлю шелл false.