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 / 416877
Accepted
Arcticooling
Arcticooling
Asked: 2018-01-14 10:49:18 +0800 CST2018-01-14 10:49:18 +0800 CST 2018-01-14 10:49:18 +0800 CST

O que é um X maiúsculo em posix / chmod?

  • 772

Eu sei o que é ugoa (proprietário, grupo, outros, todos) ou rwx (ler/direita/executar) ou 4,2,1 ou -, f, d, l, e tentei ler man chmodpara entender o que é uma maiúscula X, chmodmas não havia uma entrada para ele. Eu então li neste artigo em posix/chmod mas fiquei preso nesta passagem:

Defina o bit executável somente se o destino a) for um diretório b) já tiver pelo menos um bit executável definido para qualquer usuário, grupo ou outros.

Eu também li neste artigo que dá este exemplo de código:

chmod -R u=rwX,g=rX,o=rX testdir/

Entendo que há uma permissão recursiva no testdir/, em relação ao dono (u), grupo (g) e outros (o), mas admito que ainda sinto falta da intenção do X maiúsculo.

Talvez uma frase didática aqui possa lançar alguma luz sobre isso (o principal motivo de eu publicar isso aqui é porque não encontrei uma sessão de SE sobre isso).

Atualizar

Desculpe a todos, eu perdi isso no homem. Não imaginei que o X apareceria antes da lista de argumentos e pensei que a busca retornasse x ao invés de X, que pena.

permissions chmod
  • 3 3 respostas
  • 15577 Views

3 respostas

  • Voted
  1. Best Answer
    Stephen Kitt
    2018-01-14T10:56:54+08:002018-01-14T10:56:54+08:00

    A página de manual diz:

    execute/pesquise apenas se o arquivo for um diretório ou já tiver permissão de execução para algum usuário ( X)

    POSIX disse:

    O símbolo perm X deve representar a parte de execução/pesquisa dos bits do modo de arquivo se o arquivo for um diretório ou se os bits do modo de arquivo atual (não modificado) tiverem pelo menos um dos bits de execução (S_IXUSR, S_IXGRP ou S_IXOTH) definido. Ele deve ser ignorado se o arquivo não for um diretório e nenhum dos bits de execução estiver definido nos bits do modo de arquivo atual.

    Este é um sinalizador de permissão condicional: chmodverifica o que está processando no momento e, se for um diretório ou se tiver algum bit de execução definido em suas permissões atuais (proprietário, grupo ou outro), ele age como se a permissão solicitada fosse x, caso contrário, ele o ignora. A condição é verificada no momento em que chmodaplica a Xinstrução específica, então você pode limpar os bits de execução na mesma execução a-x,a=rwXpara definir apenas o bit executável nos diretórios.

    Você pode ver se um arquivo tem um bit de execução definido observando a parte “acesso” da statsaída de ou a primeira coluna de ls -l. Os bits de execução são representados por x. -rwxr-xr-xé comum para executáveis ​​e indica que o bit executável é definido para o proprietário, grupo e outros usuários; -rw-r--r--é comum para outros arquivos e indica que o bit executável não está definido (mas o bit de leitura está definido para todos e o bit de gravação para o proprietário). Consulte Compreendendo as permissões do UNIX e seus atributos , que contém muito mais detalhes.

    Assim, no seu exemplo, u=rwXdefine as permissões do proprietário para ler e escrever em todos os casos e, para diretórios e arquivos executáveis, execute; da mesma forma para group ( g=rX) e other ( o=rX), leia e execute para diretórios e arquivos executáveis.

    A intenção desse operador é permitir que o usuário forneça chmoduma variedade de arquivos e diretórios e obtenha as permissões de execução corretas (supondo que nenhum dos arquivos tenha um conjunto de bits de execução inválido). Evita ter que distinguir entre arquivos e diretórios (como no tradicional find . -type f -exec chmod 644 {} +e find . -type d -exec chmod 755 {} +comandos), e tenta lidar com executáveis ​​de forma sensata.

    (Observe que o macOSchmod aparentemente suporta apenas Xoperações +.)

    • 31
  2. user232326
    2018-01-14T11:19:09+08:002018-01-14T11:19:09+08:00

    Do man chmod:

    As letras rwxXst selecionam bits de modo de arquivo para os usuários afetados: ler (r), escrever (w), executar (ou procurar diretórios) (x), executar/pesquisar somente se o arquivo for um diretório ou já tiver permissão de execução para alguns usuário (X), definir ID de usuário ou grupo na execução (s), sinalizador de exclusão restrita ou sticky bit (t).

    (grifo meu).

    No entanto, isso não esclarece muito. Este artigo tem as duas regras que esclarecem o que ele faz:


    Por exemplo, emitimos o seguinte comando chmod em um diretório:

    # chmod -R u=rwX,g=rX,o=rX testdir/`  
    

    Usando o X maiúsculo, o comando acima define o atributo executável de acordo com as duas regras a seguir:

    1. Se o arquivo for um diretório, ele define o atributo executável para o proprietário, grupo e mundo, o que significa que eles podem entrar nesse diretório.

    2. Se o arquivo for um arquivo comum, ele adicionará o atributo executável às suas permissões, se o arquivo já tiver algum bit de execução definido. Se o arquivo não tiver nenhum bit de execução definido, nenhum será adicionado.

    Usando o x minúsculo seria impossível alcançar esse resultado com apenas um comando.


    Espero que esclareça o uso de X .

    • 11
  3. user9303970
    2018-02-25T16:33:02+08:002018-02-25T16:33:02+08:00

    Por favor, não polegar para cima esta resposta. É exatamente o que entendi da resposta de Stephen Kitt acima, que aceitei como correta.


    1) Um X maiúsculo como em a=rwXdiz: Todos os diretórios encontrados obterão x e todos os arquivos regulares encontrados que tenham pelo menos 1 bit executável em um dos três grupos de permissão, também obterão x em todos os três grupos.

    2) A combinação de a-x(que garante que todos os arquivos percam o bit de execução) e um subseqüente a=rwXdiz: Obtenha os bits de leitura e gravação em todos os lugares e um bit de execução apenas nos diretórios.

    • 2

relate perguntas

  • Como funcionam as permissões de grupo?

  • Erro de permissão do arquivo de log do Redis, mas a permissão já é 777

  • Iniciando o comando zypper com privilégio root

  • Possíveis razões pelas quais o meld não pode acessar /dev/fd/* quando executado como usuário sem privilégios?

  • Os subdiretórios não vazios de outro usuário estão protegidos contra exclusão no meu diretório?

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