Bem, existem dois aspectos separados na execução de um aplicativo como root; um deles melhora a segurança e outro pode comprometê-lo - acho que misturar esses dois aspectos explica sua confusão.
-
executar um aplicativo como outro usuário (possivelmente usuário root, mas não necessário) torna mais difícil para outro processo acessar arquivos pertencentes / criados por esse aplicativo e fazer outras coisas desagradáveis ( enviar um sinal KILL, por exemplo). Isso é bom.
-
se uma aplicação tiver uma vulnerabilidade (ou seja, enviar alguma entrada especialmente formatada para executar algum código via buffer overflow etc.) - então, após explorar a vulnerabilidade, o invasor poderá executar o código com os privilégios desse processo. Nesse sentido, a execução de um aplicativo com privilégios de root é BAD, porque daria o nível mais alto de privilégios ao invasor.
Agora você entende que executar o gerenciador de atualização como root pode ser ruim se contiver um bug que permita que um arquivo .deb especialmente criado o execute e execute algum código. No entanto, a execução de alguns aplicativos, como o gerenciador de pacotes, com privilégios de superusuário, é inevitável porque eles modificam as partes essenciais do sistema.
A solução comum para este problema é executar os chamados "privilégios de queda" na inicialização do programa; isso é freqüentemente usado para executar servidores da web e outros softwares potencialmente exploráveis (e acessíveis de fora). A idéia é simples: o programa inicia como root, mas o mais rápido possível muda para alguma conta de usuário com o menor número de privilégios possível (sem login no shell, chroot-ed em seu diretório pessoal, etc.). Isso daria ao invasor um acesso muito limitado ao sistema. Além disso, outras contas de usuário (exceto o superusuário) não terão acesso aos arquivos do aplicativo
Não sei ao certo como seria fácil executar um aplicativo de área de trabalho como esse.
Na verdade, nessa situação, acho que executar navegador da web como um usuário não privilegiado faria mais sentido. E, claro, o Google nos fornece alguns links sobre o assunto:
Levar essa ideia ao extremo (como você está sugerindo nos comentários) lhe dará um sistema que é semelhante a como o Android funciona; no Android, cada aplicativo opera em sua própria conta de usuário, portanto, ele só tem acesso aos seus próprios arquivos. Isso provavelmente tem algumas áreas problemáticas no Ubuntu, ou seja, se você fez o download de um arquivo usando o Firefox em uma conta restrita, ele só poderá salvá-lo em sua própria pasta pessoal para que não seja possível abri-lo em um arquivo. processador de texto (que é executado como outro usuário) ...
Em relação ao script do launcher, imagino que o script será iniciado como root e invocando os aplicativos como seus respectivos usuários. O script obviamente precisará ser gravável apenas pelo root. Leia sobre o setuid .