Por que não há permissões como Android ou iOS?

25

Quando eu instalo um programa como o GIMP ou o LibreOffice no Linux, nunca me perguntam sobre permissões. Ao instalar um programa no Ubuntu, estou explicitamente dando a esse programa permissão total para ler / escrever em qualquer lugar do meu disco e acesso total à Internet?

Teoricamente, o GIMP poderia ler ou excluir qualquer diretório da minha unidade, não exigindo uma senha do tipo sudo?

Só estou curioso se for tecnicamente possível, não se for provável ou não. Claro, eu sei que não é provável.

    
por stackinator 26.03.2018 / 17:36

7 respostas

31

Existem duas coisas aqui:

  • quando você instala um programa por meios padrão (instalador do sistema, como apt / apt-get no Ubuntu), ele geralmente é instalado em algum diretório onde esteja disponível para todos os usuários (/ usr / bin ...) . Este diretório requer que os privilégios sejam gravados para que você precise de privilégios especiais durante a instalação.

  • quando você usa o programa, ele é executado com seu ID de usuário e só pode ler ou escrever onde os programas executados com o seu ID podem ler ou gravar. No caso do Gimp, você descobrirá, por exemplo, que não é possível editar recursos padrão, como pincéis, porque eles estão no /usr/share/gimp/ compartilhado e que você deve copiá-los primeiro. Isso também mostra em Edit>Preferences>Folders onde a maioria das pastas vem em pares, um sistema que é somente leitura e um usuário que pode ser gravado em.

por 26.03.2018 / 17:54
20

By installing a program on Ubuntu am I explicitly giving that program full permission to read/write anywhere on my drive and full access to the internet?

Sim, se você usa sudo ou o equivalente, você está dando permissão total ao instalador para ler / escrever em qualquer lugar da sua unidade. Isso é basicamente a mesma coisa. Há também um sinalizador que o instalador pode definir, chamado setuid, que fará com que o programa tenha permissões completas após a instalação também.

Mesmo se ignorarmos o instalador e se o programa não for setuid (é muito raro que os programas usem o setuid), quando você executar o programa, ele terá acesso total a qualquer coisa que sua conta possa acessar. Por exemplo, se você estiver conectado ao seu banco on-line, ele poderia hipoteticamente enviar todos os seus fundos para a Nigéria.

Why no permissions like Android or iOS?

O modelo de segurança - isso significa que o sistema de segurança é projetado - no Linux é muito antigo. É herdado do Unix, que remonta à década de 1960. Naquela época, não havia Internet, e a maioria das pessoas em um departamento usava o mesmo computador. A maioria dos seus programas veio de grandes empresas confiáveis. Assim, o sistema de segurança foi projetado para proteger os usuários uns dos outros, não para proteger os usuários dos programas que eles executam.

Hoje em dia é bastante desatualizado. O Android é baseado no Linux, mas funciona criando uma "conta de usuário" separada para cada aplicativo, em vez de para cada usuário. Eu não sei o que o iOS usa. Esforços como o Flatpak estão tentando trazer o mesmo tipo de coisa para o desktop Linux.

    
por 27.03.2018 / 02:34
9

O que você deseja está sendo fornecido pelos aplicativos Flatpack. Estes são bem equivalentes aos aplicativos iOS, Android ou Windows Store.

Eu não os usei, então não sei se eles já implementaram a GUI para ver as permissões exigidas por cada aplicativo quando ele é instalado.

link

Every flatpak application contains a manifest, called metadata. This file describes the details of the application, like its identity (app-id) and what runtime it uses. It also lists the permissions that the application requires.

By default, once installed, an application gets all the permissions that it requested. However, you can override the permissions each time you call flatpak run or globally on a per-application basis by using flatpak override (see manpages for flatpak-run and flatpak-override for details). The handling of application permissions are currently somewhat hidden in the interface, but the long term plan is to show permissions during installation and make it easier to override them.

Eu também não usei a alternativa do Ubuntu, o Snappy, para saber se ele fornece esse recurso visível na GUI.

    
por 26.03.2018 / 17:48
6

É tecnicamente possível e as soluções incluem apparmor , selinux e firejail ou até mesmo recipientes completos como LXC ou uma máquina virtual completa (por exemplo, VirtualBox , kvm ou vmware ). Para redes, há opensnitch , que é um clone do programa littlesnitch do OSX.

As razões pelas quais não existe um modelo de segurança generalizado com permissões dadas pelo usuário é que tradicionalmente você é cuidadoso com o que você executa no seu pc. 90% do que está nos aplicativos de sistemas móveis seria considerado malware nos PCs.

Existem scanners para adware (ou seja, adaware ou Spybot D & D) que classificariam comportamentos como conectar redes de facebook, google analytics e publicidade como malware no PC. O ecossistema móvel é como uma reinicialização completa da computação quando se trata dessas coisas. Todos agrupam adware, apenas porque é fácil e adiciona análises, apenas porque ele é curioso. Os efeitos colaterais são a diminuição da privacidade e segurança. A parte de segurança é contabilizada pelo modelo sandbox, a parte de privacidade ainda é um problema em aberto.

Outra razão para não ter isso no PC por muito tempo é a complexidade de um sandbox, o que significa que ambos podem ser muito lentos para computadores mais antigos há algum tempo e exigiam mais engenharia para algo que tinha pouca vantagem na época.

Hoje, vemos tentativas de usar o sandbox em novos formatos de pacote, como snap e flatpak, e os navegadores também os usam para as extensões. O Chromium usa um modelo de permissão desde o início e o Firefox usa um para todas as extensões de web (desde as 57 únicas extensões que você pode instalar). Isso é bastante razoável, porque as pessoas instalam extensões de navegador de autores desconhecidos como aplicativos de pessoas que nunca ouviram falar, achando que não são mais perigosas do que um site que visitam, o que é um equívoco fatal quando não há sandbox para protegê-los. / p>     

por 27.03.2018 / 11:18
3

O Android usa um modelo de segurança "marketplace": diferentes aplicativos vêm de fornecedores diferentes (semiconfiáveis) e devem ser isolados de recursos protegidos e uns dos outros. A maioria dos aplicativos é distribuída com fins lucrativos: eles são vendidos (payware), exibem publicidade paga ou "monetizam" seus usuários vendendo seus dados para terceiros. Há uma grande motivação para se envolver no acesso a dados ilícitos, mesmo que eles sejam pegos.

A maioria das aplicações no Debian, Red Hat e distribuições Linux "clássicas" similares são distribuídas em forma de fonte: depois que um aplicativo de código aberto ganha tração suficiente, ele é escolhido manualmente para inclusão pelos mantenedores de distribuição. Há pouca motivação para realizar o acesso a dados ilícitos, - ganhos potenciais não justificam esforços.

Vale a pena notar que o modelo avançado de segurança do Android é uma das razões pelas quais ele ganhou tanta tração, ultrapassando facilmente o iOS nos mercados de dispositivos móveis. As distribuições modernas de desktop Linux não são apenas "diferentes" - elas estão bem atrasadas em termos de segurança e modelos de distribuição.

Algumas distribuições Linux estão desenvolvendo melhorias em seu sistema de distribuição de software: repositórios de software de terceiros centralizados (AUR), formatos de pacotes especializados para distribuir software de terceiros (AppImage, Snappy, Flatpack), sistemas secundários de repositório (Docker) . Infelizmente, essas melhorias ganham muito pouco tempo: o AppImage foi inventado em 2004, a primeira versão do AUR foi lançada em 2005, mas nenhuma das distribuições Linux modernas adotou oficialmente seus recursos depois de > 10 anos.

    
por 28.03.2018 / 05:04
3

When I install a program like GIMP or LibreOffice on Linux I'm never asked about permissions.

Esses aplicativos são instalados em uma parte privilegiada do sistema de arquivos que você e a maioria dos usuários normalmente não têm acesso a alterações.

Em distros tradicionais configurados para desktop, o usuário único configurado inicialmente durante a instalação normalmente terá direitos de administrador. Tudo o que eles normalmente pedem é a sua própria senha de login para instalar o software, e nem sempre isso.

Uma vez instalado, o software será, por padrão, configurado para ser executável por usuários normais e permitir que os arquivos de dados sejam lidos. Isso é tudo que é necessário.

By installing a program on Ubuntu, am I explicitly giving that program full permission to read/write anywhere on my drive and full access to the internet?

Não é o programa. O que acontece é que a conta do usuário pertence a diferentes grupos e os diferentes grupos concedem acesso a diferentes recursos.

O modelo de segurança no Linux é que sua conta de usuário tem certos direitos e os grupos aos quais sua conta pertence têm direitos específicos. Para a direita para qualquer parte do sistema de arquivos requer privilégios de root, que normalmente não são concedidos aos usuários. Mesmo quando você usa sudo você não recebe todos os direitos.

As contas de usuário normais geralmente têm acesso aos recursos que seriam necessários, como a Internet.

Theoretically, could GIMP read or delete any directory on my drive, not requiring a sudo-type password?

Qualquer diretório ou arquivo que você, como usuário, tenha direitos de acesso, pode ser acessado pelo aplicativo que você inicia, pois ele geralmente herda seus direitos. Um usuário normalmente logado normalmente não terá o direito de alterar a maioria dos arquivos críticos do sistema ou arquivos compartilhados.

I'm only curious if it's technically possible, not if it's likely or not. Of course, I know it's not likely.

Lembre-se de que a maioria dos usuários geralmente instala aplicativos de repositórios bem controlados e o risco de códigos hostis é baixo.

Eu provavelmente sugeriria alguma leitura adicional para se familiarizar com as permissões do Linux.

O modelo de segurança do Android está evoluindo para atender às necessidades dos usuários que não apenas não entendem nada sobre o modelo de segurança subjacente do sistema operacional, mas dificilmente entendem qualquer coisa sobre computadores.

O modelo Linux (que eu gosto mais) é projetado para permitir que usuários (e administradores em particular) exerçam mais controle sobre a segurança no sistema (dentro dos limites, se suas permissões forem permitidas).

Acho que, do ponto de vista do usuário, é melhor descrito como a diferença entre controle totalmente automático e semi-automático ou manual. Os consumidores modernos querem automóveis completos. O Linux tem semi-automático e manual. A maioria dos usuários de Linux nunca precisa saber sobre o modelo de segurança atualmente, mas o controle está lá se você precisar ou quiser.

    
por 28.03.2018 / 07:52
2

Quando você instala alguns programas, você pode instalá-los em seu próprio espaço de usuário (ou seja, auto-contido em seu diretório pessoal) e não em todo o sistema. Como tal, você não está sendo solicitado para privilégios de superusuário porque não precisa deles para instalar um programa para uso próprio de um usuário. Um programa assim instalado, de fato, não poderá acessar arquivos que não receberam a permissão "não proprietário do não-membro do grupo pode ler este" sem escalação de privilégio.

    
por 26.03.2018 / 17:40