É possível alterar a propriedade de um executável para root usando o sudo?

4

Eu tenho um executável criado pelo meu userid que eu preciso ter executado como root. Portanto, preciso alterar a propriedade do meu executável para root: root e use setuid. Quando eu tento

sudo chown root:root [EXE_NAME]

Eu recebo o erro:

chown: changing ownership of '[EXE_NAME]': Operation not permitted

Minhas restrições são:

  • Eu tenho sudo ALL ALL para o meu userid no arquivo sudoers, mas não consigo logar como root
  • O executável que precisa ser executado como root está tentando se ligar a uma interface de rede (daí a necessidade de ser executado como root) no modo promíscuo usando a função pcap_open_live.

Existe uma maneira melhor de resolver meu problema final, ou seja, a necessidade de executar um executável que se vincule a uma interface de rede segura e que não exija sudo ou que crie um shell de propriedade da raiz ( sudo tcsh )

    
por EmRhap 19.09.2012 / 23:55

4 respostas

3

Se sudo realmente fornecer UID 0 (verifique com sudo id ), suspeito que o arquivo esteja em um sistema de arquivos que não suporta permissões (por exemplo, FAT32). Em tal sistema de arquivos, você não pode alterar a propriedade (ou permissões) de um arquivo.

    
por 20.09.2012 / 00:12
1

Se o seu sistema de arquivos oferecer suporte à propriedade, há mais três razões pelas quais posso pensar:

  1. A partição é montada como somente leitura.

    Tente renomear o arquivo ou criar outro arquivo no mesmo diretório. Se você puder, esse não é o problema.

  2. O arquivo está bloqueado.

    Verifique se o programa está sendo executado. Tente renomear o arquivo.

  3. O arquivo está definido como somente para anexar ou imutável .

    Para mudar isso, execute o seguinte comando:

    sudo chattr -ai filename
    
por 20.09.2012 / 00:22
0

Se você precisar alterar a propriedade (e não a propriedade e o grupo), use chown root filename . Prefixado por sudo se você não for root.

Se você também quiser alterar o grupo, sempre haverá chgrp .

(Concedido, não tão bom quanto todos em um único comando).

    
por 20.09.2012 / 00:00
0

Os usuários normais também podem ligar-se a uma interface de rede, mas não a portas com menos de 1024. Assim, você pode ter seu programa vinculado a uma porta > = 1024 e redirecionar para essa porta externamente ou por meio de ssh -fN -L 0.0.0.0:<PRIV_PORT>:localhost:<UNPRIV_PORT> . / p>

Dito isso, seu problema também pode estar relacionado ao SElinux, que é ativado por padrão no RHEL. Para desativá-lo, defina SELINUX=disabled em /etc/selinux/config .

    
por 20.09.2012 / 13:29

Tags