Quando instalo um programa como o GIMP ou o LibreOffice no Linux, nunca me perguntam sobre permissões. Ao instalar um programa no Ubuntu, concedo explicitamente permissão total para esse programa ler / gravar em qualquer lugar da minha unidade e ter acesso total à Internet?
Teoricamente, o GIMP poderia ler ou excluir qualquer diretório da minha unidade, sem exigir uma senha do tipo sudo?
Só estou curioso se é tecnicamente possível, não se é provável ou não. Claro, eu sei que não é provável.
permissions
security
software-installation
stackinator
fonte
fonte
Respostas:
Há duas coisas aqui:
quando você instala um programa por meios padrão (instalador de sistema como o apt / apt-get no Ubuntu), ele geralmente é instalado em algum diretório em que está disponível para todos os usuários (/ usr / bin ...). Esse diretório requer que privilégios sejam gravados para que você precise de privilégios especiais durante a instalação.
Quando você usa o programa, ele roda com o seu ID de usuário e só pode ler ou gravar onde os programas executados com o seu ID puderem ler ou gravar. No caso do Gimp, você descobrirá, por exemplo, que não pode editar recursos padrão, como pincéis, porque eles estão no compartilhamento
/usr/share/gimp/
e que você deve copiá-los primeiro. Isso também mostraEdit>Preferences>Folders
onde a maioria das pastas vem em pares, um sistema que é somente leitura e um usuário que pode ser gravado.fonte
rm -rf ~/
. Se você instalar a partir de outras fontes, precisará tomar cuidado (ou instalar a partir da fonte, após uma inspeção de código).Sim, se você usar
sudo
ou equivalente, você está dando ao instalador permissão total para ler / gravar em qualquer lugar da sua unidade. Isso é basicamente a mesma coisa. Há também um sinalizador que o instalador pode definir, chamado setuid, que também fará com que o programa tenha permissões completas após a instalação.Mesmo se ignorarmos o instalador e se o programa não for setuid (é muito raro os programas usarem setuid), quando você executa o programa, ele tem acesso total a qualquer coisa que sua conta possa acessar. Por exemplo, se você estiver conectado ao seu banco on-line, poderá enviar todos os seus fundos para a Nigéria.
O modelo de segurança - que significa a maneira como 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. Portanto, o sistema de segurança foi projetado para proteger os usuários um do outro, não para proteger os usuários dos programas que executam.
Hoje em dia está 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. Não sei o que o iOS usa. Esforços como o Flatpak estão atualmente tentando trazer o mesmo tipo de coisa para a área de trabalho do Linux.
fonte
O que você deseja está sendo fornecido pelos aplicativos Flatpack. Isso equivale a aplicativos iOS, Android ou Windows Store.
Eu não os usei, portanto, não sei se eles implementaram a GUI ainda, para ver as permissões exigidas por cada aplicativo quando ele estiver instalado.
https://blogs.gnome.org/alexl/2017/01/20/the-flatpak-security-model-part-2-who-needs-sandboxing-anyway/
Também não usei a alternativa do Ubuntu, Snappy, para saber se ele fornece esse recurso visível na GUI.
fonte
É tecnicamente possível e as soluções incluem
apparmor
,selinux
efirejail
ou mesmo recipientes cheios gostoLXC
ou uma máquina virtual completo (por exemploVirtualBox
,kvm
ouvmware
). Para redes, existeopensnitch
um clone dolittlesnitch
programa da OSX.As razões pelas quais não existe um modelo de segurança generalizado com permissões concedidas pelo usuário é que tradicionalmente você é cuidadoso com o que executa no seu PC. 90% do que está nas lojas 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 o facebook, o google analytics e as redes de publicidade como malware no PC. O ecossistema móvel é como uma reinicialização completa da computação quando se trata dessas coisas. Todo mundo empacota adware, apenas porque é fácil e adiciona análises, apenas porque ele é curioso. Os efeitos colaterais são diminuição da privacidade e segurança. A parte de segurança é explicada pelo modelo de sandbox, a parte de privacidade ainda é um problema em aberto.
Outro motivo 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 PCs mais antigos há algum tempo e exigiram mais engenharia para algo que tinha pouca vantagem.
Hoje, vemos tentativas de usar o sandboxing em novos formatos de pacote, como snap e flatpak, e os navegadores também o usam para suas extensões. O Chromium usa um modelo de permissão desde o início e o Firefox usa um para todas as extensões da web (desde 57, as únicas extensões que você pode instalar). Isso é bastante razoável, porque as pessoas instalam extensões de navegador de autores desconhecidos, assim como aplicativos de pessoas que nunca ouviram falar, pensando que não são mais perigosas do que um site visitado, o que é um equívoco fatal quando não há sandbox para protegê-las.
fonte
O Android usa um modelo de segurança de "mercado": aplicativos diferentes vêm de diferentes fornecedores (semi-confiáveis) e devem ser isolados de recursos protegidos e entre si. A maioria dos aplicativos é distribuída com fins lucrativos: eles são vendidos (payware), mostram publicidade paga ou "monetizam" seus usuários vendendo seus dados a terceiros. Existe uma grande motivação para se envolver no acesso ilícito a dados, mesmo que sejam pegos.
A maioria das aplicações no Debian, Red Hat e distribuições Linux "clássicas" similares são distribuídas na forma de código-fonte: depois que um aplicativo de código-fonte aberto ganha bastante tração, é escolhido manualmente para inclusão pelos mantenedores de distribuição. Há pouca motivação para realizar acesso ilícito a dados - ganhos potenciais não justificam esforços.
Vale ressaltar, que o modelo de segurança avançado do Android é uma das razões pelas quais ganhou tanta força, superando facilmente o iOS nos mercados móveis. As distribuições modernas de Linux para desktop não são apenas "diferentes"; elas estão muito atrasadas em termos de modelos de segurança e distribuição.
Algumas distribuições Linux estão apresentando melhorias em seu sistema de distribuição de software: repositórios de software centralizados (AUR), formatos de pacotes especializados para distribuição de software de terceiros (AppImage, Snappy, Flatpack), sistemas de repositórios secundários (Docker). Infelizmente, essas melhorias ganham muito pouca força com o tempo: o AppImage foi inventado em 2004, a primeira versão do AUR foi lançada em 2005, mas nenhuma das distribuições modernas de Linux adotou oficialmente seus recursos após> 10 anos.
fonte
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 para alterar.
Nas distros comuns configuradas para uso em desktop, o único usuário inicialmente configurado durante a instalação geralmente possui direitos de administrador. Tudo o que eles normalmente precisam é 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. É tudo o que é necessário.
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 possui certos direitos e os grupos aos quais sua conta pertence, direitos específicos. O direito a 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 o sudo, você não obtém todos os direitos.
As contas de usuário normal normalmente têm acesso aos recursos de que eles precisam, como a Internet.
Qualquer diretório ou arquivo que você, como usuário, tenha direitos de acesso, pode ser acessado pelo aplicativo que você inicia, pois normalmente herda seus direitos. Um usuário logado normalmente não tem, por padrão, normalmente o direito de alterar a maioria dos arquivos críticos do sistema ou compartilhados.
Lembre-se de que a maioria dos usuários normalmente instala aplicativos de repositórios bem policiados e o risco de código hostil é baixo.
Eu provavelmente sugeriria algumas leituras adicionais para entender as permissões do Linux.
Uma introdução às permissões do Linux
Noções básicas sobre permissões de arquivo Linux
O modelo de segurança do Android está evoluindo para atender às necessidades dos usuários que não apenas geralmente não entendem nada sobre o modelo de segurança subjacente do sistema operacional, mas dificilmente entendem algo sobre computadores.
O modelo Linux (que sinceramente gosto mais) foi projetado para permitir que os usuários (e os administradores em particular) exerçam mais controle sobre a segurança no sistema (dentro dos limites das permissões permitidas).
Eu acho que, do ponto de vista do usuário, é melhor descrita como a diferença entre controle totalmente automático e semi-automático ou manual. Os consumidores modernos querem automóvel completo. Linux tem semi-automático e manual. Atualmente, a maioria dos usuários de Linux nunca precisa saber sobre o modelo de segurança, mas o controle existe se você precisar ou quiser.
fonte
Quando você instala alguns programas, é capaz de instalá-los no seu próprio espaço de usuário (ou seja, independente do diretório inicial) e não em todo o sistema. Como tal, você não está recebendo 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 não seria capaz de acessar arquivos não concedidos à permissão "membros que não pertencem ao grupo não podem ler essa" permissão, sem uma escalação de privilégios.
fonte