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 / 675695
Accepted
gjvatsalya
gjvatsalya
Asked: 2021-11-02 08:21:48 +0800 CST2021-11-02 08:21:48 +0800 CST 2021-11-02 08:21:48 +0800 CST

Por que recebo permissão negada para um diretório com acl definido para o proprietário do diretório (depois de remover todas as permissões posix padrão)?

  • 772

Estou tentando executar o lscomando em um diretório que possui permissões acl para o proprietário e o grupo do diretório (sem conjunto de permissões posix padrão). Isso resulta em uma permissão negada, embora getfacldiga que o usuário deve poder fazê-lo.

Aqui está o que estou fazendo:

  1. Crie um diretório e um arquivo dentro dele.

mkdir /tmp/mydir && touch /tmp/mydir/myfile

  1. Verifique se consigo executar lsneste diretório.
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
total 896
drwxrwxr-x  2 jgazula jgazula   4096 Nov  1 11:57 .
drwxrwxrwt 25 root    root    909312 Nov  1 11:57 ..
-rw-rw-r--  1 jgazula jgazula      0 Nov  1 11:57 myfile
  1. Agora, vamos remover todas as permissões posix padrão neste diretório.

chmod 000 /tmp/mydir

  1. Verifique as permissões.
jgazula@gazula:/tmp$ ls -al /tmp | grep mydir
d---------  2 jgazula jgazula   4096 Nov  1 11:57 mydir
  1. Não deveríamos poder lsagora.
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
ls: cannot open directory '/tmp/mydir/': Permission denied
  1. Defina as permissões de acl para o jgazulausuário e grupo.

sudo setfacl --mask -Rm u:jgazula:rwx,g:jgazula:rwx /tmp/mydir/

  1. Verifique as permissões de acl.
jgazula@gazula:/tmp$ getfacl -ep /tmp/mydir/
# file: /tmp/mydir/
# owner: jgazula
# group: jgazula
user::---
user:jgazula:rwx        #effective:rwx
group::---          #effective:---
group:jgazula:rwx       #effective:rwx
mask::rwx
other::---
  1. Como as permissões acl (incluindo as permissões efetivas) parecem boas, devo poder executar lsno diretório?
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
ls: cannot open directory '/tmp/mydir/': Permission denied

Mas não posso e não entendo o porquê.

  1. Curiosamente, quando eu verifico as permissões posix padrão, os bits de permissão do grupo foram definidos? Não tenho certeza se entendi por que apenas as permissões de grupo foram atualizadas.
jgazula@gazula:/tmp$ ls -al /tmp | grep mydir
d---rwx---+  2 jgazula jgazula   4096 Nov  1 12:13 mydir
  1. Vamos definir as permissões de acl para o proprietário e o grupo (ou seja, omita o proprietário/grupo do comando).

sudo setfacl --mask -Rm u::rwx,g::rwx /tmp/mydir/

  1. Verifique as permissões de acl novamente.
jgazula@gazula:/tmp$ getfacl -ep /tmp/mydir/
# file: /tmp/mydir/
# owner: jgazula
# group: jgazula
user::rwx
user:jgazula:rwx        #effective:rwx
group::rwx          #effective:rwx
group:jgazula:rwx       #effective:rwx
mask::rwx
other::---
  1. Verifique se posso executar lsagora.
jgazula@gazula:/tmp$ ls -al /tmp/mydir/
total 896
drwxrwx---+  2 jgazula jgazula   4096 Nov  1 11:57 .
drwxrwxrwt  25 root    root    909312 Nov  1 11:57 ..
-rwxrwxr--+  1 jgazula jgazula      0 Nov  1 11:57 myfile

Por que o passo 6 não funciona sozinho? Estou definindo as permissões de acl explicitamente para um usuário e grupo. Por que preciso executar a etapa 11?

permissions acl
  • 1 1 respostas
  • 996 Views

1 respostas

  • Voted
  1. Best Answer
    Nick Matteo
    2021-11-02T09:36:53+08:002021-11-02T09:36:53+08:00

    Ao executar sudo setfacl --mask -Rm u:jgazula:rwx,g:jgazula:rwx /tmp/mydir/, você está criando uma ACL_USERentrada para usuário jgazula. Mas o ACL_USER_OBJpara o proprietário do arquivo ainda é ---. (Você pode ver isso na getfaclsaída na etapa 7.)

    De acordo com man ACL, o algoritmo de verificação de acesso vai:

    1.   If the effective user ID of the process matches the user ID of the file object owner, then
               if the ACL_USER_OBJ entry contains the requested permissions, access is granted,
               else access is denied.
    
    2.   else if the effective user ID of the process matches the qualifier of any entry of type ACL_USER, then
               if the matching ACL_USER entry and the ACL_MASK entry contain the requested permissions, access is granted,
               else access is denied.
    

    Portanto, a ACL_USERentrada nunca é verificada.

    Há essencialmente a mesma pergunta no serverfault: ACL: dando - - - permissões para o proprietário do arquivo . (Mas parece que a resposta ficou ACL_USERvs ACL_USER_OBJinvertida.)

    • 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

    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