DEV_EASY_NOTES Telegram 138
В предыдущем посте мы затронули тему планировщика процессов. Давайте пройдемся поглубже.

Значитса процесс – сущность операционной системы. Процесс это черный ящик, которому ОС накидывает ресурсы, это мы уже поняли. Каждый процесс обособлен, и ничего не знает про других. Почему сделано именно так? Тупо из-за безопасности. Вот у нас банковское приложение которое работает с данными карты пользователя. Никому бы не понравилось, если какой-то левый процесс, залез в нашу память и украл все данные.

Тут можно затронуть тему отличия потока и процесса. Поток в некотором смысле это легковесный процесс. Суть очень похожа, несколько потоков также могут выполняться на разных процессорах параллельно. Разница в том, что потоки работают в рамках одного процесса или адресного пространства. Это значит что потоки могут довольно просто использовать общую память. В коде можно насоздавать потоков, которые работают с одной переменной. Процессы так не могут.

Механизм, который отвечает за безопасность, другими словами запрещающий процессам лезть в чужую память и файлы, а также пытаться прочитать данные пользователя без разрешения называется Application Sandbox. Application Sandbox не относится к самому Android, он работает на уровне ядра Linux.

Если вы работали с Linux вам должно совсем просто. Если нет, то вот как это работает. Каждому приложению выдается уникальный user Id или UID. Другими словами каждому приложению выдается свой пользователь. Это не реальный пользователь, а просто абстракция для системы упрощающая работу с правами. Каждый user id входит в какую-то группу. У каждой группы также есть уникальный id (GID). При установке приложения ему выдается UID и GID. При установке GID назначается первичный, т.е группа в которую входит user приложения при создании. Group это что-то вроде клуба. Каждый участник клуба может входить в несколько клубов. Group нужны для раздачи прав. Назначаем какие права конкретной группе и все участники получают эти права.

Естественно у UID которые выдаются обычным приложениям нет админских прав, значит они не могут сделать все что им вздумается. Системным приложения, такие как например контакты назначается привилегированный пользователь, т.е UID который изначально входит в специальную Group. Эдакий клуб джентельменов в который левых не берут. Когда пользователь выдает какие-то права приложению, например локацию. UID этого приложения помещается в Group, которой локация доступна. Далее когда ваше приложение через системный сервис пытается получить локацию, этот сервис проверяет UID этого приложение на наличие нужных прав, пытаясь найти этот UID в нужной Group.

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

Жесткая аналогия, но я ничего не могу с собой поделать она мне нравится. Рутовать свое устройство это как брить яйца бритвой цирюльника. Да бритье более качественное, но есть риск того, что у вас довольно на долго упадет настроение.
👍24😁7🔥5



tgoop.com/dev_easy_notes/138
Create:
Last Update:

В предыдущем посте мы затронули тему планировщика процессов. Давайте пройдемся поглубже.

Значитса процесс – сущность операционной системы. Процесс это черный ящик, которому ОС накидывает ресурсы, это мы уже поняли. Каждый процесс обособлен, и ничего не знает про других. Почему сделано именно так? Тупо из-за безопасности. Вот у нас банковское приложение которое работает с данными карты пользователя. Никому бы не понравилось, если какой-то левый процесс, залез в нашу память и украл все данные.

Тут можно затронуть тему отличия потока и процесса. Поток в некотором смысле это легковесный процесс. Суть очень похожа, несколько потоков также могут выполняться на разных процессорах параллельно. Разница в том, что потоки работают в рамках одного процесса или адресного пространства. Это значит что потоки могут довольно просто использовать общую память. В коде можно насоздавать потоков, которые работают с одной переменной. Процессы так не могут.

Механизм, который отвечает за безопасность, другими словами запрещающий процессам лезть в чужую память и файлы, а также пытаться прочитать данные пользователя без разрешения называется Application Sandbox. Application Sandbox не относится к самому Android, он работает на уровне ядра Linux.

Если вы работали с Linux вам должно совсем просто. Если нет, то вот как это работает. Каждому приложению выдается уникальный user Id или UID. Другими словами каждому приложению выдается свой пользователь. Это не реальный пользователь, а просто абстракция для системы упрощающая работу с правами. Каждый user id входит в какую-то группу. У каждой группы также есть уникальный id (GID). При установке приложения ему выдается UID и GID. При установке GID назначается первичный, т.е группа в которую входит user приложения при создании. Group это что-то вроде клуба. Каждый участник клуба может входить в несколько клубов. Group нужны для раздачи прав. Назначаем какие права конкретной группе и все участники получают эти права.

Естественно у UID которые выдаются обычным приложениям нет админских прав, значит они не могут сделать все что им вздумается. Системным приложения, такие как например контакты назначается привилегированный пользователь, т.е UID который изначально входит в специальную Group. Эдакий клуб джентельменов в который левых не берут. Когда пользователь выдает какие-то права приложению, например локацию. UID этого приложения помещается в Group, которой локация доступна. Далее когда ваше приложение через системный сервис пытается получить локацию, этот сервис проверяет UID этого приложение на наличие нужных прав, пытаясь найти этот UID в нужной Group.

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

Жесткая аналогия, но я ничего не могу с собой поделать она мне нравится. Рутовать свое устройство это как брить яйца бритвой цирюльника. Да бритье более качественное, но есть риск того, что у вас довольно на долго упадет настроение.

BY Dev Easy Notes


Share with your friend now:
tgoop.com/dev_easy_notes/138

View MORE
Open in Telegram


Telegram News

Date: |

Image: Telegram. Just at this time, Bitcoin and the broader crypto market have dropped to new 2022 lows. The Bitcoin price has tanked 10 percent dropping to $20,000. On the other hand, the altcoin space is witnessing even more brutal correction. Bitcoin has dropped nearly 60 percent year-to-date and more than 70 percent since its all-time high in November 2021. Activate up to 20 bots Among the requests, the Brazilian electoral Court wanted to know if they could obtain data on the origins of malicious content posted on the platform. According to the TSE, this would enable the authorities to track false content and identify the user responsible for publishing it in the first place.
from us


Telegram Dev Easy Notes
FROM American