В Firefox для OpenBSD реализована поддержка изоляции файловой системы при помощи системного вызова unveil(). Необходимые патчи уже приняты в апстрим firefox и войдут в состав Firefox 72...Подробнее: https://www.opennet.dev/opennews/art.shtml?num=51890
> Ранее аналогичные возможности были добавлены в браузеры Chromium и Iridium.Гугловцы тоже ничего, потихоньку догоняют файрфокс. Молодцы.
Кто кого догоняет?
"Кто на ком стоял?" (Простите, не удержался :D )
> Гугловцы тоже ничего, потихоньку догоняют файрфокс. Молодцы.В хроме поддержка unveil() появилась раньше, чем в ff.
Авторы патчей в обоих случаях - разработчики OpenBSD/мэйнтейнеры портов.
А что вы хотели, для Мозиллы *BSD - второстепенные (в лучшем случе) ОС. Хотите фичи - пилите сами. Ну вот и результат.
> А что вы хотели, для Мозиллы *BSD - второстепенные (в лучшем случе) ОС. Хотите фичи - пилите сами. Ну вот и результат.1) Меня всё устраивает.
2) Не только для Мозиллы.
3) Ну так сами и пилят. Unveil/pledge в некоторой степени экспериментальные возможности, логично, что патчи идут от тех, кто ближе к их разработке.
А в линуксе как с этим? Есть что-то подобное?
AppArmor
в Linux нет единой системы, где всё от ядра до библиотек контролируется и собирается единым способом, поэтому в Linux - только внешние утилиты, изнутри это сделать принципиально невозможно.
Хм.. А Вы Gentoo видели?
а в gentoo есть единая система? наоборот, там можно использовать разные libc, разные не только версии ядер но и системы ядер, разный инит. как там синхронизировать все системные вызовы в ядре и библиотеках?
Ну я таки больше про то, что собирается там всё одинаково :). (Вот допекает то, что кажется FireFox в зависимостях тащит rust и ещё кто-то тащит Clang).
> в зависимостях тащит rust и ещё кто-то тащит Clang
> rust
> ещё кто-тои кто бы это мог быть...
> и кто бы это мог быть...Дада, вот и я теряюсь в догадках :D.
Еще Firefox в зависимостях тащит C++, поскорее бы уже начали чистку.
Что именноь невозможно? Использовать seccomp, если он доступен?
Теоретически, seccomp - это что-то подобное pledge (с существенными и принципиальными различиями в реализации). Про аналог unveil я не слышал.
Даже в случае с seccomp знаю лишь много вариантов со сторонними утилитами, а-ля firejail, в таком случае, все ограничения во имя безопасности устанавливаются до запуска программы и должны учитывать поиск ей разделяемых библиотек на диске и т.п. - как следствие, политики должны быть более разрешительные. Не уверен, что слышал о примерах, где seccomp вызвается в коде самой программы, а не в утилите-обёртке.
Pledge/Unveil - это не сорт MAC, а сорт сброса привилегий, т.е. программа инициализируется, подгружает всё необходимое и после этого, перед переходом в основной рабочий цикл "отказывается" от полномочий/доступа к частям ФС при помощи pledge/unveil, а не запускается изначально под ограничениями, установленными администраторами сбоку от логики работы программы.
Если на уровне приложения, то seccomp() позволяет на зайчаточном уровне ограничивать видимость. Если на уровне дистрибутива, то apparmor/selinux, но тут уж кто во что горазд.
Это что б никто не пробовал локальные файлы в браузере открывать? А как html документацию из пакетов репозитария открывать?
Насчёт ff пока точно не скажу, потому что ещё не тестировал, но в chromium/iridium в опёнке unveil пока не по-умолчанию и есть опция "--enable-unveil", без которой никаких ограничений нет.
Подозреваю, что в каком-то виде (скорее всего, в виде "--disable-unveil" в итоге) опция останется, как раз для таких вот кейсов.
В случае ff не знаю насчёт такой опции, но, с виду, можно разрешить необходимое через настройки в /etc/firefox/.
Как я понял, AppArmor профиль уже включен в Ubunte. Посмотрел, там похоже доступ к каталогам правда ограничен .firefox, Downloads, Public и прочие служебные. Но ведь сохранять в произвольный каталог можно и открывать и произвольного? Или нельзя?
Отвечаю себе ) firefox в списке disable. Так что в ubunte по умолчанию походу ничего подобного нет.
какой только неведомой херней мурзила не занята...Поддержки oss без пульсы и прочего трэша в *bsd, не смотря на работавший (когда-то, автор устал гнаться за уходящим паровозом) патч, разумеется, не дождемся.
Это ж не очередная "забота" путем анального огораживания, этак что случайно и для людей можно ж сделать.
> какой только неведомой херней мурзила не занята...Причём тут вообще мозилла? Патчи написаны участниками OpenBSD, "заслуга" мозиллы только в том, что она приняла эти патчи в апстрим. Всё.
В OpenBSD у меня звук в ff работает без всякого pulse, так что...
>> какой только неведомой херней мурзила не занята...
> Причём тут вообще мозилла? Патчи написаны участниками OpenBSD, "заслуга" мозиллы только
> в том, что она приняла эти патчи в апстрим. Всё.На самом деле, это уже не мало:
https://lwn.net/Articles/482858/
> Roughly 100 new lines of code were all that was required to use Capsicum in Chromium on FreeBSD, largely because the browser was written with privilege separation in mind.Это в 2012 году было. Гугл-апстрим патчи отклонил, типа "маргинальщина" (позже правда спортировав сам capsicum на пингвина), патчи через пару лет "протухли", все затихло - в итоге хромо-песочницы, емнип, на фре нема.
Вообще, "кросплатформенность" у гугла (вне восхвалений маркетологов) весьма хромает -- все, что не нацелено на OS X, Windows или WSL^W пингвинчика, апстримом зачастую игнорируется:
ls -l /usr/ports/www/chromium/files/|wc -l
756
cat /usr/ports/www/chromium/files/*|wc -l
19808grep -r "^+[^+]" /usr/ports/www/chromium/files/|wc -l
3920
Почему-то был уверен, что pledge+unveil уже влиты в апстрим хромого, а прочитал тебя и засомневался. Надо проверить. Ибо в патчах точно что-то про pledge/unveil есть.А про capsicum - я вообще не в курсе, как сейчас он развивается. Какие-то истории успеха значительные есть?
> Почему-то был уверен, что pledge+unveil уже влиты в апстрим хромого, а прочитал
> тебя и засомневался. Надо проверить. Ибо в патчах точно что-то про pledge/unveil есть.Гложут меня сомнения:
https://github.com/chromium/chromium/search?utf8=%E2...
(хотя поиск на гитхабе конечно не очень)> А про capsicum - я вообще не в курсе, как сейчас он
> развивается. Какие-то истории успеха значительные есть?Все тихо и стабильно, как в гроб^W пирамиде (хотя тулзы из базы потихоньку переводят на него):
https://wiki.freebsd.org/Capsicum
> Гложут меня сомненияЯ вполне мог ошибаться. Видимо, и ошибался.
Во FreeBSD Pulseaudio отсутствует в зависимостях Firefox, так что не надо проецировать страдания линуксоидов.
то есть вы и это ниасилили? (открывает консоль...опачки...закрывает консоль, чур меня, чур!)Я просто оставлю это здесь:
# pkg install -n firefox
Updating FreeBSD repository catalogue...
Fetching meta.txz: 100% 944 B 0.9kB/s 00:01
Fetching packagesite.txz: 100% 6 MiB 2.2MB/s 00:03
Processing entries: 0%
Processing entries: 100%
FreeBSD repository update completed. 32774 packages processed.
All repositories are up to date.
The following 121 package(s) will be affected (of 0 checked):New packages to be INSTALLED:
firefox: 70.0.1,1
startup-notification: 0.12_4
xcb-util: 0.4.0_2,1
libxcb: 1.13.1
libXdmcp: 1.1.3
[skip полный набор иксов - но этого им показалось мало!]
font-misc-ethiopic: 1.0.3_4
[чисто поржать]
wayland: 1.16.0_1
[иксов недостаточно, нам надо было собрать с вафляндом!]
dbus: 1.12.12
[конечно же]
tpm-emulator: 0.7.4_2
[это-то еще зачем?]
avahi-app: 0.7_2
[здравствуйте!]
gtk3: 3.24.10_1
[ну конечно]
gtk2: 2.24.32
[уп-с... а что, одного было мало?]
[ну и на сладкое, самое интересное]
alsa-plugins: 1.1.1_6
alsa-lib: 1.1.2_2Number of packages to be installed: 121
The process will require 902 MiB more space.
173 MiB to be downloaded.итого - гигабайт мусора, не включая, видимо, ниасиленный пщпщ, это я о вас был слишком хорошего мнения. Зато вот - нате на лопате - эмулятор линуксной альсы, напрочь отсутствующей во фре. Как это дружит с фуфлофоксиным сэндбоксингом - а догадайтесь.
Я вот вижу что вы не осилили пойти в порты и убрать галочки с Pulseaudio которая там за каким-то чёртом по умолчанию установлена.
Своё мнение о вас, кстати, я не только не изменил, но и упрочил ;)UPD. Только что заметил что OSS выпилили оттуда. Н-да...
> Я вот вижу что вы не осилили пойти в портыЯ вам продемонстрировал, что лежит в официальных пакетах. Это п-ц покруче тех, что в линуксах - те хоть два gtk не тащат.
Ваше мнение обо мне очень ценно, целый ломанный грош стоит. Продолжайте надувать щеки, тут таких любят - вы умеете убирать галочки, кто бы мог подумать.
> UPD. Только что заметил что OSS выпилили оттуда.
ну надо же.
Что ж это щеконадуватель ниасилил пойти в исходники и быстро впилить обратно?
За этой простынёй ещё не видно идущих в комплекте патченых-перепатченых библиотек!$ sed '/IUSE="/,/"/!d' /usr/portage/www-client/firefox/firefox-70.0.1.ebuild | egrep -o 'system-[^ ]+'
system-av1
system-harfbuzz
system-icu
system-jpeg
system-libevent
system-sqlite
system-libvpx
system-webpПри этом с системным cairo собраться нынче вообще невозможно без погружения в код.
> При этом с системным cairo собраться нынче вообще невозможно без погружения в
> код.ldd /usr/local/lib/firefox/libxul.so|grep cai
libcairo-gobject.so.2 => /usr/local/lib/libcairo-gobject.so.2 (0x809669000)
libcairo.so.2 => /usr/local/lib/libcairo.so.2 (0x809674000)ldd /usr/local/lib/firefox/libxul.so|grep eve
libevent-2.1.so.7 => /usr/local/lib/libevent-2.1.so.7 (0x8092de000)ldd /usr/local/lib/firefox/libxul.so|grep sql
libsqlite3.so.0 => /usr/local/lib/libsqlite3.so.0 (0x808e5c000)Но это esr (68).
> ldd /usr/local/lib/firefox/libxul.so|grep cai
> libcairo-gobject.so.2 => /usr/local/lib/libcairo-gobject.so.2 (0x809669000)
> libcairo.so.2 => /usr/local/lib/libcairo.so.2 (0x809674000)В системе сборки есть куча приседаний типа переименования символов, чтобы подружить системный cairo (который нужен gtk) со своим патченым (через который собственно страницы рисуют).
> Но это esr (68).
https://github.com/mozilla/gecko-dev/commit/2b0049a09ee48527... случился за год до этого релиза.
> итого - гигабайт мусора, не включая, видимо, ниасиленный пщпщ, это я о
> вас был слишком хорошего мнения. Зато вот - нате на лопате
> - эмулятор линуксной альсы, напрочь отсутствующей во фре. Как это дружит
> с фуфлофоксиным сэндбоксингом - а догадайтесь.
% pkg options firefox-esr
firefox-esr - ALSA: on
firefox-esr - CANBERRA: off
firefox-esr - DBUS: on
firefox-esr - DEBUG: off
firefox-esr - FFMPEG: on
firefox-esr - GCONF: on
firefox-esr - JACK: on
firefox-esr - LIBPROXY: off
firefox-esr - OPTIMIZED_CFLAGS: on
firefox-esr - PROFILE: on
firefox-esr - PULSEAUDIO: on
firefox-esr - SNDIO: on
firefox-esr - TEST: off
pkg info -d firefox-esr|grep -c pulse
0
% pkg info -d firefox-esr|grep -c way
0Держите нас и далее в курсе всех подозрений!
Кстати, теперь, вроде бы, достаточно в опциях будет оставить только SNDIO и не тащить всё это pulsealsa-тряхомудие. Сейчас опции отключу. Посмотрим как оно с следующим апдейтом соберётся.
> Посмотрим как оно с следующим апдейтом соберётся.главное - ни в коем случае не смотреть, работает ли в нем после этого звук.
типикал freebsd-др..ры. Зато у них "в зависимостях пульсаудио нет". (в config есть, в зависимостях - нет. Ну молодцы, чо.)
Действительно, странно что опция присутствует но ничего не делает.
Надо майнтайнера пнуть, что ли.
Впрочем, что тут перед хамом распинаться...
> Действительно, странно что опция присутствует но ничего не делает.
> Надо майнтайнера пнуть, что ли.Не недо!
Его уже пинали, чтобы выпилил пульсу из зависимостей - в опциях указаны поддерживаемые бэкэнды, см. pkg-message пакета:> ## Audio backend
> To select non-default audio backend open `about:config` page and
> create `media.cubeb.backend` preference. Supported values are: `alsa`,
> `jack`, `pulse`, `pulse-rust`, `sndio`. Currently used backend can be inspected on `about:support` page.Любители пульсы могут поставить отдельно (вернее, она у них уже и так наверняка есть) и "наслаждаться".
> Любители пульсы могут поставить отдельно (вернее, она у них уже и так наверняка есть) иа нелюбители работы через двойную прослойку эмуляторов - не могут (разьве что самостоятельно пересобирать).
> "наслаждаться".
чем пульса хуже работы через эмулятор альсы? Ее не любят именно за то что это совершенно ненужная в большинстве случаев лишняя сущность между программой и звуковым драйвером.
Здесь вы гордо заменили одну ненужно на другую ненужно. С вариантом использования вместо них третьего ненужно - sndio, плохого косплея все того же пщпщ, но от правильных пацанов.А прямой поддержки native звукового интерфейса фри - у вас как не было, так и нет.
Ну, действительно, не беспокоить же этим уважаемых разработчиков из мурзилы.