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 / 1521801
Accepted
quill
quill
Asked: 2024-07-28 00:02:02 +0800 CST2024-07-28 00:02:02 +0800 CST 2024-07-28 00:02:02 +0800 CST

setuid só funciona com programas

  • 772

Um programa, pwrstat por exemplo, pode ser executado por IDs de usuário comuns se o setuid (chmod 4xxx) estiver definido e o arquivo pertencer ao root. Quando a permissão setuid é definida, a entidade é executada como se fosse o proprietário do arquivo. Se for root, isso implica privilégios de root. Deve-se seguir que se um shell tiver setuid e for de propriedade do root, ele deverá ser executado com privilégios de root. Um exemplo seria

#!/bin/bash
cp $1 /var/aa.aa

No entanto, alguém que não seja o root executando o shell de exemplo (com permissão -rwsr-xr-x) obtém permissão negada na cópia.

OK, um programa funciona, um shell não. Tentei criar um programa C simples que usa

system ()

Mesmo resultado.

A questão principal aqui é por que o setuid não permite que um shell seja executado como root. Uma subquestão é por que um programa C não pode emitir os comandos que estariam nesse shell?

Alguns dos usuários de alta reputação estão votando para encerrar esta questão, pois ela é semelhante às perguntas anteriores, EXCETO que essas perguntas e respostas anteriores são complexas. Por favor, não esqueça que muitos usuários aqui provavelmente se perderiam nos uids, setuid, seteuids e outros enfeites, o que faz sentido para aqueles que provavelmente estão prontos para fazer um exame de certificação de administração Linux.

permissions
  • 1 1 respostas
  • 50 Views

1 respostas

  • Voted
  1. Best Answer
    Zeye
    2024-07-28T03:38:43+08:002024-07-28T03:38:43+08:00

    A parte a que você está se referindo permite que quem executa esse item o execute como se fosse o mesmo ID que possui o arquivo. Isso não significa que qualquer processo filho herde o UID do processo original.

    No Ubuntu, as coisas funcionam como processos. Mesmo o que parecem comandos de sistema, como cp, são na verdade programas executados como processos. Você deve ter notado que uma cópia grande no pendrive lento aparecerá em topou ps -efcomo um processo. Portanto, embora seja verdade que o processo com permissões 4755 pode ser executado como root, os subprocessos não. Os scripts shell bash iniciam subprocessos para executar funções, como mover (mv) e copiar (cp). Da mesma forma, um programa C que chama system() está realmente causando um subprocesso e esse subprocesso, como os subprocessos no script bash da pergunta original, não tem autoridade root.

    Confira alguns dos comandos mais básicos dos sistemas Ubuntu. cp está realmente executando o programa /usr/bin/cp.

    • 0

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