Como recuperar permissões de um usuário

2

Eu preciso descobrir quais são as permissões de um usuário em um sistema CentOS. É possível descobrir quais são os diretórios que o usuário pode acessar e o comando que ele pode executar? Não se refere ao ACL.

    
por intore 19.01.2018 / 15:03

1 resposta

2

Para poder executar um arquivo, o arquivo deve

  1. Seja de propriedade do usuário e seja executável pelo usuário ou
  2. Pertencem ao mesmo grupo do usuário e podem ser executados por esse grupo ou
  3. Seja executável por "outros".

O comando find a seguir localiza esses arquivos no diretório atual (apenas para o usuário atual e seu grupo primário):

uid=$( id -u ) # the user's ID
gid=$( id -g ) # the primary group ID

find . -type f \( \
    \( -user "$uid" -perm -0100 \) -o \
    \( -group "$gid" -perm -0010 \) -o \
    -perm -0001 \) -print

-0100 significa "pelo menos executável pelo usuário" e -0010 e -0001 são equivalentes para "grupo" e "outros".

O mesmo critério mantém ou acessibilidade de pastas (se não estou totalmente enganado), então mudar -type f para -type d deve dar a você as pastas acessíveis. Pode-se também querer checar as pastas para o bit "read" também, obviamente ( -0500 , -0050 e -0005 em vez de as permissões acima).

Para pastas, isso pode ser uma solução:

find . -type d \( \
    \( -user "$uid" -perm -0500 \) -o \
    \( -group "$gid" -perm -0050 \) -o \
    -perm -0005 -o -prune \) -print

Eu adicionei -prune no final para não descermos em pastas que o usuário não conseguiria acessar de qualquer maneira.

Altere o ponto para uma barra para pesquisar em todo o sistema.

Também é fácil alterá-lo para imprimir apenas os nomes de, por exemplo, pastas que o usuário não pode acessar:

find . -type d \( \
    \( -user "$uid" -perm -0500 \) -o \
    \( -group "$gid" -perm -0050 \) -o \
    -perm -0005 -o -print -prune \)
    
por 19.01.2018 / 15:19