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 / 772334
Accepted
Artem S. Tashkinov
Artem S. Tashkinov
Asked: 2024-03-14 21:05:03 +0800 CST2024-03-14 21:05:03 +0800 CST 2024-03-14 21:05:03 +0800 CST

Por que o chown redefine/remove o bit SUID e reinicia os recursos?

  • 772

Este comando:

sudo chown -R root:root directory

removerá o bit SUID e redefinirá todos os recursos dos arquivos . Eu me pergunto por que isso é feito silenciosamente e não é mencionado na página de manual. Estranhamente, o bit GUID não foi removido. E não importa a quem pertencia o arquivo ou diretório antes de executar este comando.

Além disso, os bits SUID/GUID não são removidos dos diretórios (embora sejam inúteis neste caso).

Presumivelmente, isso é feito em nome da segurança, mas para mim não deve ser feito silenciosamente.

Isso fica ainda pior:

$ setcap cap_sys_rawio,cap_sys_nice=+ep test
$ getcap -v test 
test cap_sys_rawio,cap_sys_nice=ep

$ chown -c -v -R 0:0 .
ownership of './test' retained as root:root
ownership of '.' retained as root:root

$  getcap -v test 
test

O bit SUID do testarquivo é removido de forma totalmente silenciosa. É como se o comando estivesse fazendo muito mais do que o solicitado.

linux
  • 1 1 respostas
  • 153 Views

1 respostas

  • Voted
  1. Best Answer
    Stephen Kitt
    2024-03-14T21:15:14+08:002024-03-14T21:15:14+08:00

    As permissões e conjuntos de recursos não são limpos pelo chownutilitário, mas sim pela chamada do chownsistema (no Linux):

    Quando o proprietário ou grupo de um arquivo executável é alterado por um usuário sem privilégios, os bits de modo S_ISUIDe S_ISGIDsão apagados. O POSIX não especifica se isso também deve acontecer quando o root faz o chown(); o comportamento do Linux depende da versão do kernel e, desde o Linux 2.2.13, o root é tratado como outros usuários. No caso de um arquivo não executável em grupo (ou seja, um para o qual o S_IXGRPbit não está definido), o S_ISGIDbit indica bloqueio obrigatório e não é apagado por um chown().

    Quando o proprietário ou grupo de um arquivo executável é alterado (por qualquer usuário), todos os conjuntos de recursos do arquivo são limpos.

    Conforme mencionado acima, isso é parcialmente especificado pelo POSIX :

    A menos que chown seja invocado por um processo com privilégios apropriados, os bits set-user-ID e set-group-ID de um arquivo regular devem ser limpos após a conclusão bem-sucedida; os bits set-user-ID e set-group-ID de outros tipos de arquivo podem ser limpos.

    Se fosse para informar o usuário sobre isso, o chownutilitário teria que verificar explicitamente outras alterações feitas nos metadados dos arquivos ao invocar a chownfunção.

    No que diz respeito à lógica, suspeito que seja para reduzir o potencial de pegadinhas para o administrador do sistema - chown root:rootno Linux pode ser considerado seguro, mesmo que um usuário tenha preparado um binário setuid com antecedência.

    A chownpágina de manual do GNU não menciona esse comportamento, mas como costuma acontecer com o software GNU, a página de manual documenta o utilitário apenas parcialmente; sua seção “VEJA TAMBÉM” aponta para a documentação da chamada do sistema (que é reconhecidamente um exagero para a maioria dos usuários) e a página de informações , que descreve esse comportamento:

    O chowncomando às vezes limpa os bits de permissão set-user-ID ou set-group-ID. Esse comportamento depende da política e da funcionalidade da chownchamada de sistema subjacente, que pode fazer modificações no modo de arquivo dependentes do sistema fora do controle do chowncomando. Por exemplo, o chowncomando pode não afetar esses bits quando invocado por um usuário com privilégios apropriados, ou quando os bits significam alguma função diferente da permissão executável (por exemplo, bloqueio obrigatório). Em caso de dúvida, verifique o comportamento subjacente do sistema.

    (Estou limitando isso ao Linux com base em suas tags na questão; como o Linux restringe alterações de proprietário a processos privilegiados, há menos implicações de segurança do que em alguns outros sistemas estilo Unix. Consulte a explicação em chown(1) especificação POSIX para obter detalhes .)

    • 5

relate perguntas

  • Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

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