AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 918592
Accepted
stdcerr
stdcerr
Asked: 2017-05-25 13:27:25 +0800 CST2017-05-25 13:27:25 +0800 CST 2017-05-25 13:27:25 +0800 CST

script para alterar MAC com suid não funciona

  • 772

Preciso de um script que possa ser executado como um usuário que modifique o endereço MAC de 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 defini 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 a 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 seja executado como root?

bash
  • 1 1 respostas
  • 95 Views

1 respostas

  • Voted
  1. Best Answer
    Ziazis
    2017-05-25T14:10:07+08:002017-05-25T14:10:07+08:00

    Se você deseja executar este e apenas este script como um usuário normal sem nenhum outro direito sudo, ou deseja executá-lo com sudo sem digitar a senha, 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 esse script como seu usuário, poderá executar qualquer comando como sudo sem saber sua senha, portanto, tome cuidado ao usá-la.

    Apenas certifique-se de que o script pertence ao root e que os direitos de gravação são apenas do 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, basta executá sudo myscript-lo e deve executá-lo com direitos de root sem solicitar uma senha.

    • 1

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve