Estou tentando aprender um pouco mais sobre segurança no Linux e estou com dificuldades para entender a diferença em permissões e acesso para um aplicativo instalado via sudo, em vez de executar um aplicativo via sudo. Tenho algumas perguntas sobre isso:
- Ao instalar um aplicativo usando sudo, isso dá ao aplicativo permissão total para fazer o que quiser no meu sistema? Ou há restrições sobre o que isso permite?
- Se um aplicativo foi instalado usando sudo, há alguma diferença em acesso/permissões se o aplicativo for executado com/sem o uso do comando sudo? (por exemplo, sudo pluma)
- Se um programa não foi instalado usando sudo, há diferença nas permissões se ele for executado com o comando sudo?
Obrigado
O
sudo
comando executa um comando com permissões de root. Se você instalar um aplicativo com sudo, o instalador terá permissões de root. Se você executar o aplicativo com sudo, ele terá permissões de root.O instalador, quando executado como root, pode modificar o sistema, instalar serviços que são executados como qualquer usuário e iniciados automaticamente, e atribuir permissões ao aplicativo. Ele pode ter opções para dar permissões elevadas ao aplicativo, mas geralmente não tem. Por exemplo, o comando sudo em si pode ser instalado com um gerenciador de pacotes... e instalar o apache normalmente o configurará para iniciar como boot como o usuário apache. Instaladores para aplicativos normais provavelmente não atribuiriam nenhuma permissão especial.
Observe que alguns instaladores (por exemplo, snap) podem realmente instalar o aplicativo para que ele seja executado com permissões reduzidas dentro de um contêiner.
Se o instalador não conceder permissões adicionais ao aplicativo ou instalá-lo em um contêiner para reduzir as permissões, depois que o aplicativo for instalado, quando estiver sendo executado normalmente sem sudo, ele terá as permissões do usuário que o executou.
Se você instalar um aplicativo sem sudo, presumivelmente você o está instalando em seu diretório home. Como tal, você possui todos os arquivos no aplicativo e ele está em seu ambiente que presumivelmente não é compartilhado com outros usuários. Instalá-lo com sudo iria (provavelmente) instalá-lo para todos os usuários e os arquivos instalados (provavelmente) não seriam de sua propriedade. Em teoria, instalar com sudo pode ser mais seguro, onde instalar em sua conta pode ser menos seguro, pois sua conta de usuário pode modificar o aplicativo depois que ele for instalado. Isso é menos importante se você não estiver compartilhando o aplicativo com outros usuários.
A propriedade dos arquivos do aplicativo instalado pode ser importante se, digamos, sua conta de usuário acidentalmente executou malware que procurava coisas para modificar ou para excluir ou corromper.
Observe que executar aplicativos com sudo que não estejam cientes de permissões elevadas pode ter resultados muito ruins. Por exemplo, se o aplicativo criar arquivos de configuração e você executá-lo com sudo, esses arquivos de configuração podem ser criados em sua conta de usuário, mas de propriedade do root, o que pode impedir que o aplicativo seja executado corretamente sem root, pois ele pode não conseguir ler ou modificar esses arquivos de configuração em sua conta. Da mesma forma, se você executá-lo com sudo e salvar os dados, ele pode salvá-los em qualquer lugar do sistema, levando a arquivos inúteis em lugares estranhos que você pode nem conseguir encontrar quando procurá-los mais tarde.