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 / 459432
Accepted
derobert
derobert
Asked: 2018-07-31 11:22:09 +0800 CST2018-07-31 11:22:09 +0800 CST 2018-07-31 11:22:09 +0800 CST

Por que chmod g+s em um diretório está sendo ignorado?

  • 772

Eu tenho um repositório git (na verdade git-annex) que estou tentando tornar compartilhado, parte do qual envolve definir o bit set-group-id em vários diretórios. Isso está em uma caixa Debian GNU/Linux Stretch, em um sistema de arquivos ext4. Por algum motivo estranho, chmod g+s DIRECTORYestá sendo ignorado (linhas em branco ao redor chmoddo bloco adicionadas para facilitar a leitura):

$ stat objects
  File: objects
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd06h/64774d    Inode: 12353692    Links: 260
Access: (0775/drwxrwxr-x)  Uid: ( 1000/ anthony)   Gid: ( 1025/git-books)
Access: 2018-07-30 14:43:13.831641743 -0400
Modify: 2018-07-28 14:28:14.970667931 -0400
Change: 2018-07-30 14:46:38.179597449 -0400
 Birth: -

$ chmod g+s objects
$ echo $?
0

$ stat objects
  File: objects
  Size: 4096            Blocks: 8          IO Block: 4096   directory
Device: fd06h/64774d    Inode: 12353692    Links: 260
Access: (0775/drwxrwxr-x)  Uid: ( 1000/ anthony)   Gid: ( 1025/git-books)
Access: 2018-07-30 14:43:13.831641743 -0400
Modify: 2018-07-28 14:28:14.970667931 -0400
Change: 2018-07-30 14:50:43.355539381 -0400
 Birth: -

O que verifiquei até agora:

  • Não parece haver nenhuma opção de montagem estranha (por exemplo, nosuid) que possa impedi-lo de funcionar. Eu verifiquei fstab e /proc/mounts, o que mostra/dev/mapper/slow-srv /srv ext4 rw,relatime,nobarrier,errors=remount-ro,stripe=384,data=ordered 0 0
  • Não parece haver nenhuma ACL estranha no diretório; para ter certeza que eu fiz setfacl -b objects. Mesmo depois de fazer isso, o chmod continuou a não funcionar.
  • straceon chmodmostra o syscall com sucesso e tem o bit sgid definido:
    fchmodat(AT_FDCWD, "annex", 02775) = 0
  • Outros diretórios no mesmo sistema de arquivos têm o bit set-group-id definido. Na verdade, eu configurei alguns mais cedo na mesma sessão, em um repositório git-annex diferente.
files permissions
  • 1 1 respostas
  • 2395 Views

1 respostas

  • Voted
  1. Best Answer
    derobert
    2018-07-31T11:22:09+08:002018-07-31T11:22:09+08:00

    Acontece que, embora eu tivesse criado esse grupo e me adicionado a ele vários dias atrás, e isso era o que eu achava que era uma nova conexão ssh, não era realmente. Devido ao uso do recurso de multiplexação de conexão do OpenSSH ( ControlMaster/ ControlPath/etc.), eu estava realmente efetuando login em uma conexão com aproximadamente 10 dias, então minha sessão (processos) não tinha o novo grupo definido. Confirmei isso com id.

    Depois de logar via ssh -o ControlPath=none HOST, idconfirma que minha sessão tem o git-booksgrupo, e os chmod g+strabalhos.

    Quanto ao motivo pelo qual isso não deu um erro de permissão negada, parece que o padrão exige esse comportamento para arquivos e permite que as implementações ignorem os bits:

    Se o processo de chamada não tiver privilégios apropriados, e se o ID de grupo do arquivo não corresponder ao ID de grupo efetivo ou um dos IDs de grupo suplementares e se o arquivo for um arquivo regular, o bit S_ISGID (set-group-ID em execução) no modo do arquivo deve ser limpo após o retorno bem-sucedido de chmod().

    Restrições adicionais definidas pela implementação podem fazer com que os bits S_ISUID e S_ISGID no modo sejam ignorados.

    Edição única Unix Spec v4 2018, chmod . http://pubs.opengroup.org/onlinepubs/9699919799/functions/chmod.html (o registro pode ser necessário).

    Provavelmente, retornar um erro seria meramente sensato, não conforme ☹.

    • 3

relate perguntas

  • Remova arquivos com os menores sufixos de nome de arquivo

  • Listar arquivos classificados de acordo com a linha de conteúdo específica

  • Como saber antecipadamente se um .zip tem um diretório pai dentro

  • Como encontrar tipos de arquivos específicos e tar-los?

  • du/df e ls relatando diferentes usos de disco

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