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 / 441151
Accepted
Tim
Tim
Asked: 2018-05-02 11:52:04 +0800 CST2018-05-02 11:52:04 +0800 CST 2018-05-02 11:52:04 +0800 CST

A senha de qual usuário o `sudo` pede?

  • 772
$ ls -l /usr/bin/sudo
-rwsr-xr-x 1 root root 136808 Jul  4  2017 /usr/bin/sudo

so sudopode ser executado por qualquer usuário, e qualquer usuário que executar sudoterá root como o ID de usuário efetivo do processo porque o bit set-user-id de /usr/bin/sudoestá definido.

De https://unix.stackexchange.com/a/11287/674

a diferença mais visível entre sudo e su é que sudo requer a senha do usuário e su requer a senha do root.

  1. A senha de qual usuário sudosolicita? É o usuário representado pelo ID de usuário real do processo?

    Se sim, nenhum usuário pode obter o privilégio de superusuário executando sudoe fornecendo sua própria senha? O Linux pode restringir isso para alguns usuários?

  2. É correto que sudopede a senha após execve() iniciar a execução main()do /usr/bin/sudo?

    Como o euid do processo foi alterado para root (porque o bit set-user-id de /usr/bin/sudo está definido), qual é o sentido de sudo solicitar a senha mais tarde?

Obrigado.

Eu li https://unix.stackexchange.com/a/80350/674 , mas não responde às perguntas acima.

sudo executable
  • 4 4 respostas
  • 8569 Views

4 respostas

  • Voted
  1. Best Answer
    Stephen Kitt
    2018-05-02T13:10:59+08:002018-05-02T13:10:59+08:00
    1. Em sua configuração mais comum, sudopede a senha do usuário em execução sudo (como você diz, o usuário correspondente ao id de usuário real do processo). O objetivo sudoé conceder privilégios extras a usuários específicos (conforme determinado pela configuração em sudoers), sem que esses usuários tenham que fornecer qualquer outra autenticação além da sua própria. No entanto, sudo verifica se o usuário que está executando sudoé realmente quem afirma ser, e faz isso solicitando sua senha (ou qualquer mecanismo de autenticação configurado para sudo, geralmente usando PAM - então isso pode envolver uma impressão digital ou autenticação de dois fatores autenticação etc).

      sudonão concede necessariamente o direito de se tornar root, mas pode conceder uma variedade de privilégios. Qualquer usuário autorizado a se tornar root sudoerspode fazê-lo usando apenas sua própria autenticação; mas um usuário sem permissão, não pode (pelo menos, não usando sudo). Isso não é imposto pelo próprio Linux, mas por sudo(e sua configuração de autenticação).

    2. sudode fato pede a senha depois de iniciada a execução; não pode fazer de outra forma ( ou seja , não pode fazer nada antes de começar a funcionar). O objetivo de sudopedir a senha, mesmo sendo root, é para verificar a identidade do usuário em execução (em sua configuração típica).

    • 23
  2. ilkkachu
    2018-05-02T13:22:09+08:002018-05-02T13:22:09+08:00

    sudogeralmente pede a senha do usuário que o está executando, embora isso possa ser configurado :

    Ao contrário su(1)de , quando sudoersrequer autenticação, ele valida as credenciais do usuário chamador, não as credenciais do usuário de destino (ou raiz). Isso pode ser alterado por meio dos sinalizadores , e, descritos rootpwposteriormente targetpw.runaspw

    A configuração rootpwsempre sudosolicita a senha do root, targetpwsolicita a senha do usuário sudoque eventualmente executará o programa como e runaspwsolicita a senha do usuário definido em runas_default.

    Um sudobinário configurado como esse pode de fato ser iniciado com privilégio de root por qualquer usuário. Supondo sudoque não haja nenhum bug com seu código de autenticação, isso por si só não importa muito.

    Da mesma forma, qualquer processo também pode executar código no modo kernel, chamando qualquer chamada do sistema, digamos open(). (isso não é o mesmo que código de espaço de usuário como root.) Enquanto o kernel não tiver bugs, eles não poderão executar código arbitrário.

    • 13
  3. user232326
    2018-05-02T14:08:34+08:002018-05-02T14:08:34+08:00

    Da(s) primeira(s) linha(s) de man sudo:

    DESCRIÇÃO
    sudo permite que um usuário autorizado execute um comando como superusuário ou outro usuário, conforme especificado pela política de segurança. O ID do usuário real (não efetivo) do usuário de chamada é usado para determinar o nome de usuário com o qual consultar a política de segurança.

    Então:

    1. O ID de usuário real (não efetivo) do usuário invocador é usado...
    2. Sim, qualquer usuário ( permitido ) pode obter privilégios adicionais de superusuário (ou outros) executando sudo e fornecendo a autenticação ( configurada ) necessária. Ambos permitidos e configurados são definidos no(s) arquivo(s) sudoers.

    3. O Linux pode restringir isso para alguns usuários?
      Sim, pode, mas não. O Linux está configurado para permitir que o binário sudo tome a decisão com base no conjunto de regras (política de segurança) dentro do programa sudo e dentro do arquivo /etc/sudoers. Normalmente, outros arquivos (também/em vez) podem ser usados.

    De man setresuid:

    DESCRIÇÃO
    setresuid() define o ID do usuário real, o ID do usuário efetivo e o set-user-ID salvo do processo de chamada.

    1. A única maneira de obter permissões de superusuário concedidas pelo kernel é executar um programa suid. Não pode ser de outra forma. É a maneira que o Linux selecionou para conceder permissões de superusuário.

    2. Depois que o kernel carregou um executável que não pode ser modificado por nenhum outro usuário (arquivo e diretório de propriedade do root e gravável apenas pelo root), o próprio executável (sudo) autentica o usuário solicitando sua senha (ou outra coisa conforme configurado) e decide se e quais permissões conceder.

    • 8
  4. Stephen R
    2018-05-04T08:31:13+08:002018-05-04T08:31:13+08:00

    Adicional a outras boas respostas sobre sudo:

    supermite que você efetivamente se torne um usuário diferente. No meu próprio computador, não corro como administrador para uso diário - o que significa, entre outras coisas, que não posso (diretamente) usar arquivos sudo. Se eu quiser usar sudo, posso usar supara "tornar-me" o usuário administrador e, em seguida, nessa função, usar sudo. Nessa situação, acabo inserindo a senha da conta Admin duas vezes - uma vez quando executo sue outra quando executo sudo.

    • 0

relate perguntas

  • O 'zfs send' é um comando somente leitura seguro?

  • Diferença entre sudo nautilus e sudo -E nautilus

  • Altere o executável padrão para arquivo com shebang potencialmente ausente

  • Execute um único comando como outro usuário; restrições ao sudo

  • Permitir que o usuário execute um comando como root

Sidebar

Stats

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

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

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 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

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 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
    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
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +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
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +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