Obtém direitos para um usuário específico no arquivo / dir

2

Estou procurando um comando que essencialmente faria o seguinte: verifique quais direitos um usuário tem em um arquivo / dir (incluindo ACL) e retorne-o.

Por exemplo digamos que você tenha o seguinte diretório:

-rw-r--r-- 1 user1 group1 [snip] file1
-rw-rw-r-- 1 user2 group1 [snip] file2
drwxrwx--- 1 user2 group2 [snip] dir1

Em seguida, os comandos & a saída deve ser (se user1 for um membro de apenas group1):

rights user1 file1 => r-- or 4
rights user1 file2 => rw- or 6
rights user1 dir1 => --- or 0

Existe tal comando disponível ou quais ferramentas / comandos não podem ser usados para construir um script que o faria?

    
por dtech 03.09.2011 / 18:33

1 resposta

1

Eu elaborei o seguinte código bash

#!/bin/bash
# Use: $0 user files

user="$1"
shift
sudo -u "$user" bash -c 'for f; do
      [[ -r "$f" ]] && printf 'r' || printf '-'
      [[ -w "$f" ]] && printf 'w' || printf '-'
      [[ -x "$f" ]] && printf 'x' || printf '-'
      printf " %s\n" "$f"
  done' _ "$@"

Isso deve levar em conta automaticamente o acl, se disponível, mas a desvantagem é o uso de sudo (ou alternativamente su ) para se tornar $user .

    
por 03.09.2011 / 19:05