Privilégio para um aplicativo linux

1

Se eu escrever um programa no Linux, tenho duas maneiras de configurar qual privilégio o programa executa:

  • Pode ser executado com o privilégio do invocador (quem quer que execute o programa)
  • posso usar o setuid para que ele possa ser executado com meu privilégio

Existem outras opções para configurar com qual privilégio um programa é executado no Linux?

    
por Jake 27.01.2015 / 23:58

2 respostas

2

Os privilégios individuais do Linux são chamados de "recursos". Uma descrição completa dos recursos provavelmente é demais, mas como uma alternativa às duas opções mencionadas, você pode definir recursos baseados em arquivo que dão direitos administrativos aos usuários sem privilégios:

[root@localhost]/home# setcap cap_chown+ep /bin/chown
[root@localhost]/home# sudo -iu testUser
[testUser@localhost ~]$ ll /etc/rc.local 
-rwxr--r--. 1 root root 0 Jan 27 22:29 /etc/rc.local
[testUser@localhost ~]$ chown testUser /etc/rc.local
[testUser@localhost ~]$ ll /etc/rc.local 
-rwxr--r--. 1 testUser root 0 Jan 27 22:29 /etc/rc.local
[testUser@localhost ~]$ 

Como você pode ver acima, qualquer pessoa que executar chown nesse sistema terá os privilégios necessários ("CAP_CHOWN") para fazer isso devido ao setcap que eu corri. Você pode ficar um pouco mais seletivo alterando-o de um +ep para um +ei e concedendo os privilégios apenas a usuários específicos no login usando pam_cap.so

Deve-se notar que o chown acima não é executado como root, ele é executado como meu usuário sem privilégios. Se o usuário executar algo diferente desse programa, ele não terá esse privilégio e, se o arquivo executável for modificado, todos os recursos baseados em arquivo serão limpos.

    
por 28.01.2015 / 04:37
0

Sem qualquer atribuição de direitos explícita, um programa ou script será executado como o chamador.

Setuid executará o programa com os direitos de usuário do proprietário do arquivo. Setgid irá executar o programa com os direitos de grupo do grupo de arquivos. Nenhum dos dois trabalhará diretamente para um script.

Você pode usar um utilitário como sudo para executar um programa (ou script) com direitos que você determina no arquivo de configuração do sudo.

Acredito que os subsistemas de segurança, como o SELinux, restrinjam o acesso em vez de concedê-lo.

Não sei se as ACLs podem ser usadas para conceder privilégios de tempo de execução. Eu nunca precisei investigar.

    
por 28.01.2015 / 00:39

Tags