Pull to refresh

Comments 75

Интересно, а на других системах оно такой же фигней занимается? Если да, то хороший повод перейти на какой нить owncloud или что-то подобное…
Самая полезная ссылка, отвечающая на все вопросы из статьи. И всего 1 плюс…
Дата публикации: 26 мая 2016.

Автор статьи говорит, что заметил это поведение 10 месяцев назад — за пол-года до Dropbox Infinite.


А самая полезная ссылка — в самом низу комментариев. Там они, собственно, извиняются

Так вот почему нет официального клиента в App Store.
Если сначала дать ей пароль, потом сменить пароль пользователя системы и убрать галочку. Будет исправно работать?
P.S.: Dropbox'ом не пользуюсь.
Работает и ставит ту галочку. С момента установки как минимум трижды менял пароль. Жесть.

Смена пароля не поможет, т. к. Dropbox не запоминает пароль пользователя.


Он распаковывают в папку /Library/DropboxHelperTools/ набор мелких утилит (которые выполняют операции по добавлению Dropbox'а в список Accessibility и др.) и устанавливают им бит suid. С этого момента эти утилиты периодически запускаются Dropbox'ом и отрабатывают с правами суперпользователя.


Смена пароля не снимет suid-бит, и, соответственно, не отберет у Dropbox'а права.


Примеры файлов с suid-битами
ulltor@orion /Library/DropboxHelperTools/Dropbox_u501 $ ls -l
total 528
drwxr-xr-x  4 root  wheel     136 Sep 19  2014 DropboxBundle.bundle
-r-s--x--x  1 root  wheel  139220 Sep 15 16:50 FinderLoadBundle
-r-s--x--x  1 root  wheel    9632 Sep 15 16:50 dbaccessperm
-r-s--x--x  1 root  wheel  116668 Sep 15 16:50 dbfseventsd
drwxr-xr-x  4 root  wheel     136 Sep 15 16:50 mach_inject_bundle_stub.bundle
А что аппловская система установки позволяет любым приложениям ставить себе suid бит?
Запущенным от рута? Отчего бы и нет.

А система, типа SELinux или AppArmor, там есть?

Вообще есть штатная песочница для приложений. Только софт типа скайпа или сабжа там сомневаюсь что будет работать. Я как-то пробовал скайп запихать туда — он просто отваливается если ему где-то отказывают (причем более ранние версии там успешно запускали).

Если бы они могли работать в песочнице — опубликовались бы в App Store.


Песочница — одно из главных требований для App Store-приложений

А что такого принципиально неработающего в песочнице есть (должно быть) в сабже? Это же клиент для сервиса хранения файлов, не виртмашина какая, и не драйвер железячный.
Как мне кажется, тут все дело в желании разработчиков и прочих ответственных.
А что такого принципиально неработающего есть в сабже?

Амбиции разработчиков в песочницу не влазят.


Их конкуренты (и альтернативные клиенты) сидят в App Store и не сильно хуже работают, принципиальных проблем тут нет

UFO just landed and posted this here
А зачем запускать от рута установочные скрипты? Я всегда думал, что нормальный пакетный менеджер работает так: есть специальный пользователь с ограниченными правами, от имени которого производится установка. Ему подсовывают специальную чистую директорию (можно просто монтировать поверх корневой системы, сейчас overlayfs уже в ядре). Он туда ставится. А потом уже пакетный менеджер с правами рута переносит файлы из специального загона на системную файловую систему. Попутно составляет список установленных файлов, чтобы потом удалять проще было. И заодно проверяет, можно ли писать в такую-то директорию, не защищена ли она от установки? И в рамках похожей проверки проверяет suid биты, ибо nosuid — популярнейшая опция в системном софте.
В демонстрационном видео показали, что десктопный клиент Dropbox предоставляет прямой доступ к облачному хранилищу файлов на уровне файловой системы, без необходимости запускать браузер. Локальный диск «увеличивается» на размер облачного хранилища, файлы доступны напрямую. Облачное хранилище может быть больше по размеру, чем локальный диск.

Dropbox Infinite интегрируется на уровне ядра.

https://habrahabr.ru/company/rootwelt/blog/301826/
Дата публикации: 26 мая 2016.

Автор статьи говорит, что обратил внимание на это поведение 10 месяцев назад — за пол-года до Dropbox Infinite

Для монтирования удаленного диска в папку не нужно столько прав.
Скорее всего, там не просто монтирование в папку. Потому что в Windows для этой цели ими аж драйвер применяется (в папке с установленной программой лежит).
Снёс (давно хотел, но руки не доходили).

Кстати, деинсталлятора у dropbox нет, а после ручного удаления (в корзину) папка /Library/DropboxHelperTools остаётся (по очевидным причинам). Её тоже снёс.
Никогда не пользовался дропбоксом, потому что не нравится сама модель его функционирования.

И что касается «они — большая компания [...] вы допускаете две ошибки»
Хочу добавить третью — именно большие компании более всего жаждут выкачать из вас персональных данных, потому что у них есть достаточно ресурсов, чтобы их обработать и как-то монетизировать.
Если я маленький частный сайт, то даже если я соберу каким-то образом со своих клиентов персональные данные, то не очень-то и понятно, как мне их использовать (при условии, что явный и заведомый криминал отбрасываем)? Продать кому-то статистику я не могу, потому что жалкие несколько тысяч клиентов мало кому интересны.
Или, например, я могу через приложение следить за всеми перемещениями своих пользователей. И дальше что? Чтобы всё это хранить и обрабатывать, нужны куча ресурсов, сервера, трудоемкая разработка анализирующего софта и так далее.
А у больших компаний это есть.

После удаления DropboxHelperTools не работает сохраниеие скриншотов в облако, видимо, действительно именно для этой фичи всё и замутили.

Дополнительные меры защиты:


sudo touch /Library/DropboxHelperTools
sudo chflags schg /Library/DropboxHelperTools
sudo chflags hidden /Library/DropboxHelperTools
Только что по инструкции удалил DropboxHelperTools.

После запуска Dropbox ожидаемо попросил больше прав, я отказался.
Сделал скриншот — он залился в облако и скопировал мне ссылку в буфер обмена.

Кстати да, теперь заработало вдруг и у меня. Тогда совсем непонятна цель изощрений. На всякий случай пароль учётки тоже сменил. =)

Во второй статье приводится ответ Dropbox на вопрос на похожую тему:


we need to request all the permissions we need or even may need in the future.

(выделение моё).


То есть — возможно — когда-то это стало не нужно, но код оставили и просят пароль просто на будущее.


Ниже пишут, что права могут быть нужны в некоторых случаях конфликтов (конечно, всё остальное это не оправдывает)

TeamViewer на Windows (клиент, та часть из которой управляют) поступает так же грязно, запрашивая эскалацию прав, хотя прекрасно запускается и выполняет свои функции и при отказе. Ну и да, при положительном ответе на запрос внедряет свою службу.
Не очень прекрасно — без прав невозможно запускать программы требующие этих самых прав.
А может ли PS без этого доступа работать? Можно ли ему доверять?

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


Совершенно ожидаемо просит разрешить это — но, надеюсь, явно просит, без пароля и установки backdoor-а

Да, просит без пароля, данным окошком. Спасибо за уточнение механизма.
UFO just landed and posted this here
я про клиент — ему достаточно прав для передачи команд управления серверной стороне
Всегда считал, что TeamViewer нужны админские права для управления службой (которая постоянно в фоне висит и обновляет программу до актуальной версии). По-моему, так и должно быть, разве нет?

Определённо, нет:


Установкой и обновлением программ должна заниматься единая системная служба от разработчиков ОС (не обязательно от них, но крайне желательно. Главное, чтобы она была единой).
Обновления всех программ должны идти по единому сценарию, и, возможно, из единого репозитория. Так было устроено в Linux примерно всегда, и так устроены почти все современные ОС.

Разумеется, Вы правы, так и должно быть в идеальном мире. Но я имел ввиду, что это нормально для Windows на данный момент. Как это осуществить иначе для программы (той же TeamViewer) не из магазина?

Тоже не обязательно.


В Макоси далеко не весь софт в магазине (особенно туда не пускают opensource). Остальные программы (большинство) при каждом запуске скачивают appcast, загружают обновление (если есть), и только после этого просят эскалацию прав для установки (если она нужна).


У автора статьи главное правило ИБ было приведено только наполовину. Полностью оно звучит так:


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

Конечно, для ожидания в фоне и загрузки appcast-ов каждые сутки не нужны права суперпользователя. Они нужны только для установки.

Через Task Scheduler это было бы наиболее оптимально. Есть единая служба Task Scheduler, она расходует фиксированное кол-во системных ресурсов и вызывает по расписанию программы. Среди них могла бы быть задача периодического обновления софта.

Но каждый разработчик под винду желает повесить свою резидентную службу (а лучше — не одну, а десяток), чтобы они постоянно крутились в системе и отжирали память. И отдельная служба следила бы за тем, что пользователь вручную поудалял или позапрещал ненужные иму процессы, и восстанавливала их.
Вы винду выкинули из современных ОС.
Тут такого механизма (достаточно развитого), по сути, нет.
Отсюда, например, mozilla maintenance service болтается в службах.
Если ставить её с админскими правами.
Решает проблему обновления фаерфокса глобально по операционке из под учётки без админских прав.
Увы, тут само построение системы такое.
Вы винду выкинули из современных ОС.
Тут такого механизма (достаточно развитого), по сути, нет.

Есть Windows Store, NuGet / chocolatey, и система развёртывания софта через Active Directory — что ещё для счастья надо?


Увы, тут само построение системы такое.

А как Google Chrome справляется? Он знаменит был тем, что ставился без доп. привилегий, из-под простого пользователя, даже когда прав нет вообще. И, наверняка, без всяких прав и сервисов обновляется

UFO just landed and posted this here
Запрашивать эскалацию прав — это не грязно. Даже если они не нужны.
Это плохое решение, но не более того(тем более TV права таки нужны).
Грязно — это захватывать права тайком от пользователя. Нужны они или не нужны — тут вообще вторично.
У меня есть смутные подозрения, что это все вызвано некими особенностями OSX, с которыми столкнулись разработчики клиента Dropbox.
Вообще не вижу других причин тратить столько сил.
UFO just landed and posted this here
чтоб узнать, как они добавляют значок синхронизации на папки в Finder, ну зеленая галка/синий кружок.

Потом подебажить и пофиксить все тормоза с ними.

> это диалоговое окно врёт, когда говорит, что Dropbox не будет правильно функционировать
Здесь автор допускает логическую ошибку в словах, ведь Dropbox ничего не говорит, что не дав пароль, программа не будет функционировать. Значит, окно не «врёт».
Далее, разбирая непосредственно слова из окна: «чтобы правильно функционировала» — это определение весьма расплавчато. Для нас правильное функционирование означает обычные базовые функции, а для них(dropbox) это может означать вовсе другое. В данном конкретном случае — не дав пароль, программа каждый раз запрашивает заново пароль. Это ли не «неправильное функционирование»? Вполне попадает под это, так-что окно в целом, не врёт.

Другое дело, конечно, что ни в статье, ни сама компания Dropbox(что очень печально с их стороны) не раскрывают, зачем ей всё-же нужен доступ к таким функциям.
Где-то, кажется, была статья на хабре, кажется от mail.ru с их облаком, или я.диск — так вот, там была тема, что на макось им не хватает нормальных доступов для стабильной работы, и чтобы не перегружать систему, они устанавливаются глубже в систему, чтобы отслеживать изменения на жестком диске в обход ОС. Сорри, статью найти не могу, но была в этом году.

upd: нашел: https://habrahabr.ru/company/mailru/blog/307412/ «Особенности файловых систем, с которыми мы столкнулись при разработке механизма синхронизации Облака Mail.Ru»
> Дело в том, что под macOS нельзя с уверенностью сказать, какое именно событие пришло от файловой системы. Поэтому приходится использовать дополнительные механизмы проверки событий для понимания, что именно произошло с файлом или директорией.

раньше на странице вакансий у них была эта картинка
Как мы уже выяснили, это диалоговое окно врёт (всё ещё верите большой серьёзной фирме?), когда говорит, что Dropbox не будет правильно функционировать;

Как это определяется? На своем форуме (по ссылке в статье) они говорят, что это нужно для спорных ситуаций с расшареными файлами, когда прав может не хватать. Вы пробовали именно эти сценарии?

но главный обман в том, что это не то окно, которое должна показывать программа, желающая доступ к Accessibility API.

Окошко на скриншоте выше этого текста вроде про accessibility и не говорит, просто спрашивает пароль. То, что он на основании него добавился в ac. список — частность.
Вы пробовали именно эти сценарии?

Если вам хочется это узнать, стоит спросить в комментариях статьи-оригинала.


Я (переводчик) замечал эту галочку раньше, снимал, и не мог через месяц понять, как она возвращается. Теперь узнал. Поставил альтернативный клиент, и в нём всё работает без доп. привилегий и без потерь данных.


То, что он на основании него добавился в ac. список — частность.

Похоже, существенная частность: продолжение статьи посвящено целиком тому, как Dropbox смог туда попасть. Им нужно было решить парадокс: даже root не может попасть в список Accesibility — для этого нужно щёлкнуть мышкой по нужным окнам, а, чтобы щёлкать, нужен Accessibility API

А какой именно альтернативный клиент установили?

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


Тут важнее психологический момент: без Dropbox вполне можно жить, и другие системы (хуже, но) не сильно хуже. И — он поддерживает несколько сервисов; можно, не меняя программу-клиент, свалить на Яндекс-диск (например), или купить себе Amazon S3, или уже посмотреть на opensource (Syncthing, Owncloud)


Загляните в App Store (там есть несколько систем / клинетов, и там точно никаких грязных трюков), посмотрите на Alternativeto.net, или на штатный iCloud — он не так плох, как все привыкли думать (смайлик), особенно в macOS 10.12

ODrive — они же всё делают через собственный сервер, т.е. добавляется ещё одно слабое звено.

Соединения со службами, как утверждают, напрямую.


Но, согласен, это штука, с которой тоже надо поскорее валить на что-нибудь своё.

EncFS + FUSE, и можно безопасно хранить свои файлы даже и в чужих облаках.
UFO just landed and posted this here
Вот почему клиенты не нужны. Только доступ по webdavfs
А есть удобный webdav-клиент для OS X?
OS X тянет файлы с webdav-сервера напрямую, что очень медленно и неудобно.
Хотелось бы полную локальную копию всех файлов иметь, как это сделано в Dropbox.
> А есть удобный webdav-клиент для OS X?

Если нет user space webdavfs в макоси — значит его нужно сделать.

> Хотелось бы полную локальную копию всех файлов иметь, как это сделано в Dropbox.

rsync вам в помощь.
>rsync вам в помощь.
Это вообще другое. rsync не пробьет NAT каскады, в отличии от dropbox'а и иже с ним.
У вас webdav примонитрован локально. Какие ещё каскады?
Не так понял ваш комментарий. Так нормально, да.
Я сам пользуюсь маком уже много лет и каждая программа на нем ориентирована в первую очередь на удобство пользователя.
Человек, который устанавливает программу не из appStore должен дважды подумать — почему ее там нет.
Хочешь безопасности и паранойи — ставь arch и запускай все программы в контейнере, закриптовав при этом все дериктории и разрешив файрволу только 2 порта на вход — 80 и 443, а остальные запретить. Ну и конечно же VPN по отпечатку пальца.
Странно, но у меня Dropbox работает нормально, но в списке универсального доступа не присутствует.
Да, при установке спросил пароль, мне и в голову не пришло, что это не системный запрос. Синхронизация работает, в боковом меню файндера присутствует, скриншоты снимаются.
Единственное отличие, которое вижу — версия ОС — у меня 10,12 sierra, и ставил ее с нуля.
Перестал пользоваться Dropbox'ом, как только появился BTSync. Потом BTSync оскотинился и я перелез на Syncthing. Ныне сижу на нем и горя не знаю. Ну да, облака, все дела… Но у меня домашний сервер крутится 24/7 и никакие облака мне особо и не нужны.
Да… Стыдно признаться, но после майских указовстатьи подумал, что Dropbox — крупная контора, не будут же они заниматься ерундой. Занимаются и судя по всему, заниматься будут. Если не дырявая винда, а хваленый Apple (Apple, Карл!) такое позволяет с собой сделать… С мая работали параллельно Dropbox и Owncloud, теперь только Owncloud. Надеюсь, хоть этот, хоть годик-другой, но поработает без сюрпризов. Так пойдет, глядишь, все начнут себе малинки ставить и вручную команды вводить в сеансах ftp, как когда-то модемы укрощали…
В вашей статье нет ссылок на первоисточники.
Вот например этот твит был сделан 6 дней назад.
Показывает как именно Dropbox «включает» универсальный доступ для себя.
Команда покажет запрос к базе который использует Dropbox для манипуляций
sudo strings /Library/DropboxHelperTools/Dropbox_u501/dbaccessperm | grep INSERT

А тут 5 дней назад написали объяснение как отключить только «фичу» авто включения универсального доступа, и оставить сервис мониторинга файловой системы рабочим.
Remove executable and suid bits and lock dbaccessperm file.

cd /Library/DropboxHelperTools/Dropbox_u502
sudo chmod -sx dbaccessperm
sudo chflags uchg dbaccessperm


Remove (just uncheck) accessibility permission for Dropbox via System Settings.

А тут ответы от Dropbox/

Это статья-перевод (плашка сверху и ссылка на первоисточник снизу).
Первоисточник написан в конце июля.


А вот ответ Dropbox — это просто сокровище! Спасибо

Спасибо, не заметил плашку.
Поправили: теперь явно запрашивают доступ и не восстанавливают, если он был отозван.

Sign up to leave a comment.

Articles