Iceweasel права на загруженные файлы (помогите разобраться)

Firefox, Opera, Chromium и прочее.

Модератор: /dev/random

Ответить
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Iceweasel права на загруженные файлы

Сообщение Hephaestus »

Система GNU/Linux Debian Squeeze 6.0.7 amd64
Версия браузера: 10.0.12.

Для запуска Iceweasel создан отдельный интернет-пользователь без пароля и с оболочкой /bin/false.
Для просмотра онлайн-видео и печати из браузера этот пользователь добавлен в соответствующие группы.
Браузер запускается через sudo от имени этого пользователя. Для доступа к файлам реальные пользователи включены в группу интернет-пользователя. И всё прекрасно работает.
Но файлы, которые сохраняются через браузер имеют права 0644 и принадлежат, естественно интернет-пользователю. Таким образом реальные пользователи не могут ничего поделать со скачанными файлами.
Приходится от рута менять права либо владельца. Сами понимаете, это неудобно.

Попробовал выставить umask, но браузер плевать на него хотел и всё равно ставит права 0644.
Сохранять файлы пробовал как в папку /tmp, так и в домашнюю папку интернет-пользователя - результат одинаковый.

По результатам поиска это либо баг браузера, либо 0644 жестко прописано в коде - я так и не понял.
Но эта информация 4-5-летней давности. Новее не нашёл.

Вопрос: Можно ли настроить права при сохранении файлов браузером?
Возможно, я не умею готовить umask. Прошу помочь.

ПыСы. На буржуйском мозилловском форуме видел подобную проблему, но с правами на папку, создаваемую из диалога Save - по сути то же самое. Там спросили, используется ли "gtk file picker" или "xul file picker".
Типа если "gtk file picker", то мы это не контролируем. Ну, хорошо, допустим будет "xul file picker", но что дальше - опять же не понятно.

Принимаются любые (гениальные и не очень) идеи и рекомендации по сабжу.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
Hephaestus
Сообщения: 3729
Статус: Многоуважаемый джинн...
ОС: Slackware64-14.1/14.2
Контактная информация:

Re: Iceweasel права на загруженные файлы

Сообщение Hephaestus »

Проверил, изменил umask и запустил браузер от текущего пользователя. Сработало.
Стало быть, umask браузером не игнорируется.

Для интернет-пользователя я пытался редактировать файлы профиля. В этом была моя ошибка.
Поскольку пользователь без права логина, то файлы .bashrc .profile и т.п. не обрабатываются.
Нужно было использовать pam_umask.

Задача решена.
Пускай скрипят мои конечности.
Я - повелитель бесконечности...
Мой блог
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -
Контактная информация:

Re: Iceweasel права на загруженные файлы

Сообщение sgfault »

Вот мне не очень понятно, как конкретно у вас работает эта схема? Назовем интернет-пользователя, от которого работает фаерфокс, ff-user с одноименной группой. Тогда я тут вижу два варианта:
1. У пользователя ff-user отдельная домашняя папка - /home/ff-user, и, соответственно, конфиг firefox-а находится в ней. Но это означает, что конфиги _всех_ пользователей, которые запускают ff через `sudo -u ff-user firefox` будут находиться в /home/ff-user. И, тк чтобы читать скачанные файлы, все пользователи должны быть членами группы 'ff-user', то любой пользователь может, как минимум, посмотреть профиль любого другого. А заодно и историю, и незашифрованные сохраненные пароли, и много всего интересного )
2. Конфиг фаерфокса, даже запущенного пользователем vasya через `sudo -u ff-user firefox`, все равно находится в папке /home/vasya. Наверно, фаерфоксу какими-то опциями можно сказать, где искать конфиг. Но, как я понимаю, чтобы это сработало, пользователь 'ff-user' должен быть в состоянии дойти до чего-то вродe '/home/vasya/.mozilla'. Другими словами, папка /home/vasya должна либо принадлежать группе 'ff-user' и иметь 'x' для группы, либо иметь 'x' для other. Оба этих способа при неудачном umask открывают доступ (как минимум, на чтение) либо для всех членов группы 'ff-user', либо вообще для всех ко всем файлам пользователя vasya, на которых он забыл _вручную_ поменять права. Неудачное umask для первого варианта (когда /home/vasya принадлежит группе 'ff-user') - это не содержащее 070, для второго - не содержащее 07. Вариант с группой, мне кажется, хуже, чем с 'x' для other. Хотя бы потому, что если появляется еще один сервис, данные которого хранятся в /home/vasya и которому надо к ним как-то пройти, то либо он тоже должен быть членом группы 'ff-user' (при этом смысл такой группы просто теряется), либо /home/vasya все равно должно иметь 'x' для other. Пример такого сервиса: Апач и папка '~/public_html' для mod_userdir + mod_suexec.

И, наконец, третье неудобство заключается в том, что все файлы фаерфокса при такой схеме фактически не принадлежат их владельцу (в примере выше это пользователь vasya) - они принадлежат этому ff-user-у. Даже если umask оставит 'w' для группы и vasya сможет их и изменять, и удалять, все равно изменить права он не сможет, а, чтобы изменить владельца, файлы придется копировать.

В результате, первый способ мне кажется вообще неприемлимым, тк, получая сомнительную безопасность за счет запуска фаерфокса от отдельного пользователя, пользователь, фактически, открывает весь свой профиль фаерфокса для всех. Второй способ с 'x' для other на /home/vasya "условно пригоден", хотя этот 'x' мне все равно не нравится. И, наконец, замечание насчет владельца все еще в силе.

Одним словом, не могли бы вы рассказать, как это сделано у вас, и как вы решили описанные выше проблемы.

ЗЫ. Да, и еще: установка для всех umask, не содержащую 2 для группы (те разрешающую запись группе), мне тоже кажется плохой идеей.
Спасибо сказали:
Аватара пользователя
sgfault
Сообщения: 586
Статус: -
Контактная информация:

Re: Iceweasel права на загруженные файлы

Сообщение sgfault »

И, в любом случае, вот еще что хотел бы добавить. Как я понимаю, идея запуска фф из-под другого пользователя заключается в том, что если злоумышленник заставит фф выполнить какой-то свой код, то, тк фф запущен от другого пользователя, максимум, что этот код сможет уничтожить, - это профиль фф.

Но, если обобщить мой предыдущий пост, то вот именно здесь и обаруживается общий недостаток этого решения (запуска под другим пользователем). Если все пользователи с данного компьютера запускают фф из-под одного и того же аккаунта 'ff-user', то как только злоумышленник сможет выполнить какой-то код из-под этого аккаунта, он сможет уничтожить профили фаерфокса _всех_ пользователей, тк 'ff-user' так или иначе (в зависимости от конкретной реализации) имеет доступ к профилям всех пользователей.

Другими словами, как я это понимаю, вы меняете угрозу для _всех_ данных _одного_ пользователя (в "стандартном" случае, когда все программы пользователя работают из-под одного аккаунта) на угрозу для всех _профилей_ фф _всех_ пользователей (в случае, когда фф работает из-под отдельного пользователя). На мой взгляд, это очень сомнительный обмен. Ну, самым простым и очевидным решением этого, видимо, будет создание отдельного аккаунтадля фф для каждого пользователя (те vasya-ff, masha-ff и тд), но, если предположить, что таких сервисов может быть несколько, то количество таких "служебных" аккаунтов, как мне кажется, будет слишком велико.

Те вне зависимости от реализации, мне кажется сомнительной эта идея вообще. Ну, впрочем, обсуждение "этой идеи вообще" уже явный оффтопик. Поэтому, на всякий случай, для сомневающихся: я догадываюсь, что идея. наверно, такая же древняя, как сам линукс, и обсуждалась уже бесчисленное количество раз, и гугл знает обо всех ее преимуществах, недостатках и немыслимых реализациях весьма много, - так вот, я этого все _не_ читал и пока что _не_ собираюсь. Я просто написал случайно заблудшую ко мне мысль, которая, формально, даже и не по теме. Так, just for lulz.
Спасибо сказали:
Ответить