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.