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 / 412234
Accepted
Steve
Steve
Asked: 2017-12-22 02:46:01 +0800 CST2017-12-22 02:46:01 +0800 CST 2017-12-22 02:46:01 +0800 CST

Como as permissões de arquivo funcionam para o usuário "root"?

  • 772

Eu tenho o seguinte arquivo:

---------- 1 Steve Steve 341 2017-12-21 01:51 myFile.txt

Mudei o usuário para rootno terminal e notei os seguintes comportamentos:

  • Eu posso ler este arquivo e escrever nele.

  • Não consigo executar este arquivo.

  • Se eu definir o xbit nas permissões de usuário ( ---x------) ou nas permissões de grupo ( ------x---) ou nas outras permissões ( ---------x) do arquivo, então eu seria capaz de executar este arquivo.

Alguém pode me explicar ou indicar um tutorial que explique todas as regras que se aplicam quando o rootusuário está lidando com arquivos e diretórios?

linux permissions
  • 5 5 respostas
  • 33937 Views

5 respostas

  • Voted
  1. Best Answer
    ilkkachu
    2017-12-22T04:05:00+08:002017-12-22T04:05:00+08:00

    O acesso privilegiado a arquivos e diretórios é realmente determinado por capacidades, não apenas por ser rootou não. Na prática, rootgeralmente tem todos os recursos possíveis, mas há situações em que todos/muitos deles podem ser descartados ou alguns dados a outros usuários (seus processos).

    Resumidamente, você já descreveu como as verificações de controle de acesso funcionam para um processo privilegiado. Veja como os diferentes recursos realmente o afetam:

    A principal capacidade aqui éCAP_DAC_OVERRIDE , um processo que pode "ignorar a leitura, gravação e execução de verificações de permissão de arquivo". Isso inclui ler e escrever em qualquer arquivo, bem como ler, escrever e acessar diretórios.

    Na verdade, não se aplica à execução de arquivos que não estão marcados como executáveis. O comentário emgeneric_permission ( fs/namei.c), antes das verificações de acesso aos arquivos, diz que

    Os DACs de leitura/gravação são sempre substituíveis. DACs executáveis ​​são substituíveis quando há pelo menos um conjunto de bits exec.

    E o código verifica se há pelo menos um xbit definido se você estiver tentando executar o arquivo. Suspeito que seja apenas um recurso de conveniência, para evitar a execução acidental de arquivos de dados aleatórios e a obtenção de erros ou resultados estranhos.

    De qualquer forma, se você pode substituir as permissões, basta fazer uma cópia executável e executá-la. (Embora possa fazer diferença em teoria para arquivos setuid de um processo era capaz de substituir permissões de arquivo ( CAP_DAC_OVERRIDE), mas não tinha outros recursos relacionados ( CAP_FSETID/ CAP_FOWNER/ CAP_SETUID). Mas CAP_DAC_OVERRIDEpermitir edição /etc/shadowe coisas assim, então é aproximadamente igual para apenas ter acesso root completo de qualquer maneira.)

    Há também a CAP_DAC_READ_SEARCHcapacidade que permite ler qualquer arquivo e acessar qualquer diretório, mas não executar ou escrever neles; e CAP_FOWNERisso permite que um processo faça coisas que geralmente são reservadas apenas para o proprietário do arquivo, como alterar os bits de permissão e o grupo de arquivos.

    Substituir o sticky bit em diretórios é mencionado apenas em CAP_FOWNER, então parece que CAP_DAC_OVERRIDEnão seria suficiente ignorar isso. (Isso lhe daria permissão de gravação, mas geralmente em diretórios fixos você tem isso de qualquer maneira e os +tlimita.)

    (Acho que dispositivos especiais contam como "arquivos" aqui. Pelo menos generic_permission()só tem uma verificação de tipo para diretórios, mas não verifiquei fora disso.)


    Claro, ainda existem situações em que nem mesmo os recursos o ajudarão a modificar arquivos:

    • alguns arquivos em /proce /sys, já que não são arquivos reais
    • SELinux e outros módulos de segurança que podem limitar o root
    • chattrimutável +ie anexa apenas +asinalizadores em ext2/ext3/ext4, ambos os quais param até o root e também impedem renomeações de arquivos, etc.
    • sistemas de arquivos de rede, onde o servidor pode fazer seu próprio controle de acesso, por exemplo, root_squashem NFS mapeia root para ninguém
    • FUSE, que eu suponho que poderia fazer qualquer coisa
    • montagens somente leitura
    • dispositivos somente leitura
    • 43
  2. Kevin Lemaire
    2017-12-22T03:09:21+08:002017-12-22T03:09:21+08:00

    Isso é exatamente como você notou para permissões padrão:

    • Ler e escrever:
      Por padrão, o usuário Root pode acessar qualquer arquivo no sistema. Você pode remover esse acesso alterando os atributos como explicado aqui: chattr . Isso é então ligado a capacidades.

    • Execute:
      O usuário root não tem permissão de execução, a menos que pelo menos um dos bits de execução esteja definido.

    • 14
  3. GAD3R
    2017-12-22T03:50:07+08:002017-12-22T03:50:07+08:00

    O myFile.txté obtido por chmod 000 myFile.txt.

    0 no permission
    1 execute
    2 write
    3 execute + write
    4 read 
    5 read + execute
    6 read + write
    7 all
    

    ---------significa que não há permissão para usuário, grupo e outros.

    O usuário root tem capacidade irrestrita para modificar este arquivo. A leitura/gravação é concedida. Para executar este arquivo, o usuário root precisa torná-lo executável de qualquer maneira. (chmod 100, 010 ou 001)

    • 5
  4. Barmar
    2017-12-28T10:36:45+08:002017-12-28T10:36:45+08:00

    O modo de execução é tratado de maneira um pouco diferente dos outros modos.

    As permissões de leitura e gravação são usadas para impor políticas de segurança. O rootusuário geralmente é imune a restrições de segurança (há algumas exceções, como arquivos imutáveis, e recursos modernos como recursos tornaram isso mais refinado), e é por isso que outro nome para essa conta é "superusuário".

    A permissão de execução é mais um modo consultivo, distinguindo se o arquivo deve ser executável ou apenas dados. Por causa disso, até mesmo o usuário root obedece -- não faz sentido executar um arquivo de dados. Se nenhuma das permissões de execução estiver definida, o root não poderá executar o arquivo; se algum deles estiver definido, ele pode. Obviamente, como o root também tem permissão para alterar as permissões de qualquer arquivo, a conta pode tornar um arquivo executável se desejar (a menos que o sistema de arquivos seja somente leitura).

    Aliás, os scripts são um caso interessante nisso. Scripts são arquivos de dados para o intérprete relevante. Se o script tiver uma #!linha, você pode executá-lo como um programa -- o interpretador nomeado no shebang é executado com o nome do arquivo do script como argumento. Mas isso só será feito quando a permissão de execução estiver definida. Por outro lado, você pode apenas executar o interpretador diretamente, por exemplo, /bin/bash scriptname. Os intérpretes só se importam se podem ler o arquivo, não verificam as permissões de execução.

    • 2
  5. Hassan Sohail
    2017-12-22T04:37:49+08:002017-12-22T04:37:49+08:00

    Deixe-me explicar teoricamente.

    usuário root é o rei do sistema operacional.

    Se um arquivo ou diretório tiver qualquer permissão como X para executar, mas nada mais e alguém como o usuário Steve tiver o próprio arquivo, o root também poderá executar o arquivo.

    Lembre-se sempre, no Linux o root pode fazer qualquer coisa, não há restrições no root.

    • 0

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

    Matriz JSON para bash variáveis ​​usando jq

    • 4 respostas
  • Marko Smith

    A data pode formatar a hora atual para o fuso horário GMT? [duplicado]

    • 2 respostas
  • Marko Smith

    bash + lê variáveis ​​e valores do arquivo pelo script bash

    • 4 respostas
  • Marko Smith

    Como posso copiar um diretório e renomeá-lo no mesmo comando?

    • 4 respostas
  • Marko Smith

    conexão ssh. Conexão X11 rejeitada devido a autenticação incorreta

    • 3 respostas
  • Marko Smith

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

    • 7 respostas
  • Marko Smith

    comando systemctl não funciona no RHEL 6

    • 3 respostas
  • Marko Smith

    rsync porta 22 e 873 uso

    • 2 respostas
  • Marko Smith

    snap /dev/loop em 100% de utilização -- sem espaço livre

    • 1 respostas
  • Marko Smith

    chave de impressão jq e valor para todos no subobjeto

    • 2 respostas
  • Martin Hope
    EHerman Matriz JSON para bash variáveis ​​usando jq 2017-12-31 14:50:58 +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
    Drux A data pode formatar a hora atual para o fuso horário GMT? [duplicado] 2017-12-26 11:35:07 +0800 CST
  • Martin Hope
    AllisonC Como posso copiar um diretório e renomeá-lo no mesmo comando? 2017-12-22 05:28:06 +0800 CST
  • Martin Hope
    Steve Como as permissões de arquivo funcionam para o usuário "root"? 2017-12-22 02:46:01 +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
  • Martin Hope
    Cbhihe Altere o editor padrão para vim para _ sudo systemctl edit [unit-file] _ 2017-12-03 10:11:38 +0800 CST
  • Martin Hope
    showkey Como baixar o pacote não instalá-lo com o comando apt-get? 2017-12-03 02:15:02 +0800 CST
  • Martin Hope
    youxiao Por que os diretórios /home, /usr, /var, etc. têm o mesmo número de inode (2)? 2017-12-02 05:33:41 +0800 CST
  • Martin Hope
    user223600 gpg — o comando list-keys gera uid [ desconhecido ] depois de importar a chave privada para uma instalação limpa 2017-11-26 18:26:02 +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