script para alterar MAC com suid não funciona

script para alterar MAC com suid não funciona

Preciso de um script que possa ser executado como um usuário que modifique o endereço MAC do arquivo eth0. Eu criei o seguinte script:

#!/bin/bash
/etc/init.d/networking stop
ifconfig eth0 hw ether 00:50:56:98:00:19
/etc/init.d/networking start

Eu configurei a permissão setuid e atribuí-a ao root: -rwsr-xr-x 1 root root 110 May 24 14:22 ChangeMac.sh mas ainda assim me daria a seguinte saída quando eu o executasse como usuário:

$ ./ChangeMac.sh
stop: Rejected send message, 1 matched rules; type="method_call", sender=":1.100" (uid=1000 pid=6746 comm="stop networking ") interface="com.ubuntu.Upstart0_6.Job" member="Stop" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")
SIOCSIFHWADDR: Operation not permitted
start: Rejected send message, 1 matched rules; type="method_call", sender=":1.103" (uid=1000 pid=6753 comm="start networking ") interface="com.ubuntu.Upstart0_6.Job" member="Start" error name="(unset)" requested_reply="0" destination="com.ubuntu.Upstart" (uid=0 pid=1 comm="/sbin/init")

Por que é isso? Como posso fazer com que um usuário possa invocá-lo, mas ele seja executado como root?

Responder1

Se você deseja executar este e apenas este script como um usuário normal, sem quaisquer outros direitos de sudo, ou deseja executá-lo com sudo sem digitar a senha, você pode adicioná-los aos seus sudoers.

por exemplo sudo echo "[username] ALL = NOPASSWD: /path/to/your/script" >/etc/sudoers.d/myscript

No entanto, isso é meio seguro, pois se alguém puder editar este script como seu usuário, poderá executar qualquer comando como sudo sem saber sua senha, portanto, tome cuidado ao usá-lo.

Apenas certifique-se de que o script seja de propriedade do root e que os direitos de gravação sejam apenas de seu proprietário, para que ninguém mais possa alterá-lo.

Você também pode usar chattrpara garantir que ninguém possa modificar seu script:

sudo chattr +i script.sh

De man chattr:

Um arquivo com o atributo 'i' não pode ser modificado: não pode ser excluído ou renomeado, nenhum link pode ser criado para este arquivo e nenhum dado pode ser gravado no arquivo.

Depois de tudo isso é só rodar sudo myscripte ele deverá rodar com direitos de root sem pedir senha.

informação relacionada