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 / unix / Perguntas / 759826
Accepted
ChennyStar
ChennyStar
Asked: 2023-10-25 22:55:01 +0800 CST2023-10-25 22:55:01 +0800 CST 2023-10-25 22:55:01 +0800 CST

ID de usuário efetivo versus real: por que ele não retorna root como ID efetivo no meu exemplo?

  • 772

Li algumas coisas sobre a diferença entre ID de usuário real e efetivo. Achei que entendi, mas tenho uma dúvida: pelo meu entendimento, no exemplo abaixo o comando $ id -undeveria retornar rootcomo usuário efetivo e não jack:

$ sudo cp /usr/bin/bash /usr/bin/bashroot
$ sudo chmod u+s /usr/bin/bashroot
$ ls -l /usr/bin/bashroot 
-rwsr-xr-x 1 root root 1234376 oct.  25 15:42 /usr/bin/bashroot

$ bashroot

$ id -un
jack

$ id -unr
jack

bashroottem setuid e pertence a root, então de acordo com minha compreensão eu esperava $ id -unretornar root, não jack.

Do que sinto falta?

[EDITAR] Mais especificamente, por que não /usr/bin/bashrootse comporta como /usr/bin/passwd, visto que ambos possuem setuid ?

$ ls -l /usr/bin/passwd 
-rwsr-xr-x 1 root root 63960 févr.  7  2020 /usr/bin/passwd

$ ls -l /usr/bin/bashroot 
-rwsr-xr-x 1 root root 1234376 oct.  25 15:42 /usr/bin/bashroot

$ passwd
Changing password for jack.
Current password: 

Então, em outro terminal:

$ bashroot

$ ps -a | grep passwd
1682362 pts/3    00:00:00 passwd
$ ps -eo pid,ruid,euid | grep 1682362
1682362  1000     0

$ ps -a | grep bashroot
1682405 pts/4    00:00:00 bashroot
$ ps -eo pid,ruid,euid | grep 1682405
1682405  1000  1000

O UID efetivo passwdé root(0), o que é esperado. Por que o UID efetivo é bashroot1000 ( jack) e não root?

[EDIT2: SO]

$ cat /etc/debian_version 
11.6
$ uname -a
Linux d11work 5.10.0-20-amd64 #1 SMP Debian 5.10.158-2 (2022-12-13) x86_64 GNU/Linux
$ bash --version
GNU bash, version 5.1.4(1)-release (x86_64-pc-linux-gnu)

[EDIT3] Veja a resposta de Stephen Kitt :

$ bashroot -p

# id -un
root

# id -unr
jack 
root
  • 1 1 respostas
  • 369 Views

1 respostas

  • Voted
  1. Best Answer
    Stephen Kitt
    2023-10-25T23:50:09+08:002023-10-25T23:50:09+08:00

    Bash impõe isso: se for setuid, mas não for executado em modo privilegiado (procure por -p), ele define o ID do usuário efetivo para o ID do usuário real:

    Se o shell for iniciado com o ID do usuário (grupo) efetivo diferente do ID do usuário (grupo) real e a -popção não for fornecida, essas ações serão executadas e o ID do usuário efetivo será definido como o ID do usuário real. Se a -popção for fornecida na inicialização, o ID de usuário efetivo não será redefinido. Desativar esta opção faz com que os IDs efetivos de usuário e grupo sejam definidos como os IDs reais de usuário e grupo.

    Para obter o efeito que procura, você precisa executar bashroot -p. Você notará a diferença imediatamente: o prompt do shell é #em vez de $.

    • 8

relate perguntas

  • Copie um arquivo arrastando e soltando em `/usr/local` [fechado]

  • sudo su in erro bash "Não é possível executar a ajuda: nenhum arquivo ou diretório"

  • Como me adiciono ao arquivo sudoers?

  • Problema de complexidade de senha

  • Excluí minha conta root do arquivo /etc/passwd para teste no Centos7.3

Sidebar

Stats

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

    Possível firmware ausente /lib/firmware/i915/* para o módulo i915

    • 3 respostas
  • Marko Smith

    Falha ao buscar o repositório de backports jessie

    • 4 respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    user12345 Falha ao buscar o repositório de backports jessie 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl Por que a maioria dos exemplos do systemd contém WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

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