Ignorar Links de Navegao | |
Sair do Modo de Exibio de Impresso | |
![]() |
Guia de administração do Oracle Solaris ZFS Oracle Solaris 10 1/13 Information Library (Português (Brasil)) |
1. Sistema de arquivos do Oracle Solaris ZFS (introdução)
2. Introdução ao ZFS do Oracle Solaris
3. Gerenciando pools de armazenamento do Oracle Solaris ZFS
4. Instalando e inicializando um sistema de arquivos raiz do Oracle Solaris ZFS
5. Gerenciando sistemas de arquivos ZFS do Oracle Solaris
6. Trabalhando com instantâneos e clones do Oracle Solaris ZFS
7. Uso de ACLs e atributos para proteger arquivos do Oracle Solaris ZFS
Descrições de sintaxe para definição de ACLs
Definindo ACLs em arquivos ZFS
Definindo e exibindo ACLs em arquivos ZFS no formato verboso
Definindo a herança da ACL em arquivos ZFS no formato verboso
8. Administração delegada do ZFS do Oracle Solaris
9. Tópicos avançados do Oracle Solaris ZFS
10. Solução de problemas e recuperação de pools do Oracle Solaris ZFS
11. Práticas Recomendadas do Oracle Solaris ZFS
Você pode definir e exibir as permissões em arquivos ZFS em um formato compacto que usa unicamente 14 letras para representar as permissões. As letras que representam permissões compactas são listadas na Tabela 7-2 e na Tabela 7-4.
Você pode exibir listagens de ACLs compactas de arquivos e diretórios usando o comando ls -V. Por exemplo:
# ls -V file.1 -rw-r--r-- 1 root root 206663 Jun 23 15:06 file.1 owner@:rw-p--aARWcCos:------:allow group@:r-----a-R-c--s:------:allow everyone@:r-----a-R-c--s:------:allow
A saída de ACL compacta é descrita da seguinte forma:
O proprietário pode ler e modificar o conteúdo do arquivo ( rw=read_data/write_data), (p= append_data). O proprietário também pode modificar os atributos do arquivo, tais como registros de data/hora, atributos estendidos e ACLs (a=read_attributes , W=write_xattr, R= read_xattr, A=write_attributes , c=read_acl, C= write_acl). Além disso, o proprietário pode modificar a propriedade do arquivo (o=write_owner).
A permissão de acesso synchronize (s) não está implementada atualmente.
O grupo recebe permissões de leitura para o arquivo (r= read_data) e os atributos do arquivo (a=read_attributes , R=read_xattr, c= read_acl).
A permissão de acesso synchronize (s) não está implementada atualmente.
Todos os que não são nem usuários nem grupos têm permissões de leitura para o arquivo e para os atributos do arquivo (r=read_data, a=append_data, R=read_xattr , c=read_acl e s= synchronize).
A permissão de acesso synchronize (s) não está implementada atualmente.
A ACL de formato compacto oferece as seguintes vantagens em relação à ACL de formato verboso:
As permissões podem ser especificadas como argumentos posicionais para o comando chmod.
Os hífens (-), que indicam "sem permissões", podem ser removidos e somente as letras requeridas devem ser especificadas.
Ambos sinalizadores, de permissões e de herança, estão definidos no mesmo modo.
Para obter mais informações sobre o uso de ACL de formato compacto, consulte Definindo e exibindo ACLs em arquivos ZFS no formato verboso.
Exemplo 7-10 Definindo e exibindo ACLs em formato compacto
No exemplo abaixo, existe uma ACL comum no file.1:
# ls -V file.1 -rw-r--r-- 1 root root 206663 Jun 23 15:06 file.1 owner@:rw-p--aARWcCos:------:allow group@:r-----a-R-c--s:------:allow everyone@:r-----a-R-c--s:------:allow
Neste exemplo, as permissões read_data/execute são adicionadas ao usuário gozer em file.1.
# chmod A+user:gozer:rx:allow file.1 # ls -V file.1 -rw-r--r--+ 1 root root 206663 Jun 23 15:06 file.1 user:gozer:r-x-----------:------:allow owner@:rw-p--aARWcCos:------:allow group@:r-----a-R-c--s:------:allow everyone@:r-----a-R-c--s:------:allow
No exemplo abaixo, o usuário gozer tem permissões de leitura, gravação e execução que são herdadas pelos novos arquivos e diretórios através do formato compacto de ACL.
# chmod A+user:gozer:rwx:fd:allow dir.2 # ls -dV dir.2 drwxr-xr-x+ 2 root root 2 Jun 23 16:04 dir.2 user:gozer:rwx-----------:fd----:allow owner@:rwxp--aARWcCos:------:allow group@:r-x---a-R-c--s:------:allow everyone@:r-x---a-R-c--s:------:allow
Você também pode recortar e colar os sinalizadores de permissões e de herança da saída ls -V no formato compacto chmod. Por exemplo, para duplicar os sinalizadores de permissões e de herança no dir.2 do usuário gozer para o usuário cindy em dir.2, copie e cole os sinalizadores de permissão e de herança (rwx-----------:fd----:allow )no comando chmod. Por exemplo:
# chmod A+user:cindy:rwx-----------:fd----:allow dir.2 # ls -dV dir.2 drwxr-xr-x+ 2 root root 2 Jun 23 16:04 dir.2 user:cindy:rwx-----------:fd----:allow user:gozer:rwx-----------:fd----:allow owner@:rwxp--aARWcCos:------:allow group@:r-x---a-R-c--s:------:allow everyone@:r-x---a-R-c--s:------:allow
Exemplo 7-11 Herança da ACL com o modo de ACL herdada definido como passar
Um sistema de arquivos que apresenta a propriedade aclinherit definida como passthrough herda todas as entradas da ACL sem as modificações feitas em tais entradas quando estas são herdadas. Quando o valor da propriedade estiver definido como passthrough, os arquivos são criados com um modo de permissão determinado pelas ACEs herdáveis. Se não houver ACEs herdáveis que afetem o modo de permissão, então o modo de permissão será definido de acordo com o modo solicitado do aplicativo.
Os exemplos seguintes usam a sintaxe compacta de ACL para mostrar como herdar bits de permissão definindo o modo aclinherit como passthrough.
Neste exemplo, uma ACL está definida no test1.dir para forçar a herança. A sintaxe cria uma entrada ACL de owner@, group@ e everyone@ para os arquivos recém-criados. O diretórios recém-criados herdam uma entrada ACL de @owner, group@ e everyone@.
# zfs set aclinherit=passthrough tank/cindy # pwd /tank/cindy # mkdir test1.dir
# chmod A=owner@:rwxpcCosRrWaAdD:fd:allow,group@:rwxp:fd:allow,everyone@::fd:allow test1.dir # ls -Vd test1.dir drwxrwx---+ 2 root root 2 Jun 23 16:10 test1.dir owner@:rwxpdDaARWcCos:fd----:allow group@:rwxp----------:fd----:allow everyone@:--------------:fd----:allow
Neste exemplo, o arquivo recém-criado herda a ACL que foi especificada para ser herdada nos arquivos recém-criados.
# cd test1.dir # touch file.1 # ls -V file.1 -rwxrwx---+ 1 root root 0 Jun 23 16:11 file.1 owner@:rwxpdDaARWcCos:------:allow group@:rwxp----------:------:allow everyone@:--------------:------:allow
Neste exemplo, o diretório recém-criado herda as ACEs que controlam o acesso a este diretório, bem como as ACEs para futuras propagações para os filhos do diretório recém-criado.
# mkdir subdir.1 # ls -dV subdir.1 drwxrwx---+ 2 root root 2 Jun 23 16:13 subdir.1 owner@:rwxpdDaARWcCos:fd----:allow group@:rwxp----------:fd----:allow everyone@:--------------:fd----:allow
As entradas fd---- servem para propagar herança e não são consideradas durante o controle de acesso. Neste exemplo, é criado um arquivo com uma ACL comum em outro diretório no qual as ACEs herdadas não estão presentes.
# cd /tank/cindy # mkdir test2.dir # cd test2.dir # touch file.2 # ls -V file.2 -rw-r--r-- 1 root root 0 Jun 23 16:15 file.2 owner@:rw-p--aARWcCos:------:allow group@:r-----a-R-c--s:------:allow everyone@:r-----a-R-c--s:------:allow
Exemplo 7-12 Herança da ACL com o modo de ACL herdada definido como passar X
Quando aclinherit=passthrough-x estiver habilitado, os arquivos são criados com a permissão de executar (x) para o owner@, group@ ou everyone@, mas somente de a permissão de executar estiver definida no modo de criação de arquivo em uma ACE herdável que afeta o modo
Os exemplos a seguir mostram como herdar a permissão de executar ao definir o modo aclinherit como passthrough-x.
# zfs set aclinherit=passthrough-x tank/cindy
A seguinte ACL é definida em /tank/cindy/test1.dir para fornecer uma herança de ACL executável para arquivos para owner@.
# chmod A=owner@:rwxpcCosRrWaAdD:fd:allow,group@:rwxp:fd:allow,everyone@::fd:allow test1.dir # ls -Vd test1.dir drwxrwx---+ 2 root root 2 Jun 23 16:17 test1.dir owner@:rwxpdDaARWcCos:fd----:allow group@:rwxp----------:fd----:allow everyone@:--------------:fd----:allow
Um arquivo (file1) é criado com as permissões solicitadas 0666. As permissões resultantes são 0660. A permissão de execução não foi herdada já que o modo de criação não a solicitou.
# touch test1.dir/file1 # ls -V test1.dir/file1 -rw-rw----+ 1 root root 0 Jun 23 16:18 test1.dir/file1 owner@:rw-pdDaARWcCos:------:allow group@:rw-p----------:------:allow everyone@:--------------:------:allow
A seguir, um executável denominado t é gerado com o uso do compilador cc no diretório testdir.
# cc -o t t.c # ls -V t -rwxrwx---+ 1 root root 7396 Dec 3 15:19 t owner@:rwxpdDaARWcCos:------:allow group@:rwxp----------:------:allow everyone@:--------------:------:allow
As permissões resultantes são 0770 porque o cc solicitou permissões 0777, que causou a herança da permissão de executar das entradas owner@, group@ e everyone@.
Exemplo 7-13 Interação de ACL com Operações chmod em Arquivos ZFS
Os exemplos a seguir ilustram como os valores de propriedade aclmode e aclinherit influenciam a interação de ACLs existentes com uma operação chmod que altera as permissões de arquivo ou diretório para reduzir ou expandir quaisquer permissões de ACL existentes para ser consistente com o grupo de propriedade.
Neste exemplo, a propriedade aclmode é definida como mask e a propriedade aclinherit é definida como restricted. As permissões de ACL deste exemplo são exibidas em modo compacto, o que ilustra mais facilmente as permissões de alteração.
O arquivo original e as permissões de ACL e propriedade são os seguintes:
# zfs set aclmode=mask pond/whoville # zfs set aclinherit=restricted pond/whoville # ls -lV file.1 -rwxrwx---+ 1 root root 206695 Aug 30 16:03 file.1 user:amy:r-----a-R-c---:-------:allow user:rory:r-----a-R-c---:-------:allow group:sysadmin:rw-p--aARWc---:-------:allow group:staff:rw-p--aARWc---:-------:allow owner@:rwxp--aARWcCos:-------:allow group@:rwxp--aARWc--s:-------:allow everyone@:------a-R-c--s:-------:allow
Uma operação chown altera a propriedade do arquivo no file.1 e a saída é vista pelo usuário proprietário, amy. Por exemplo:
# chown amy:staff file.1 # su - amy $ ls -lV file.1 -rwxrwx---+ 1 amy staff 206695 Aug 30 16:03 file.1 user:amy:r-----a-R-c---:-------:allow user:rory:r-----a-R-c---:-------:allow group:sysadmin:rw-p--aARWc---:-------:allow group:staff:rw-p--aARWc---:-------:allow owner@:rwxp--aARWcCos:-------:allow group@:rwxp--aARWc--s:-------:allow everyone@:------a-R-c--s:-------:allow
A operação chmod a seguir altera as permissões para um modo mais restritivo. Neste exemplo, o grupo sysadmin modificado e as permissões de ACL do grupo staff não excedem as permissões do grupo proprietário.
$ chmod 640 file.1 $ ls -lV file.1 -rw-r-----+ 1 amy staff 206695 Aug 30 16:03 file.1 user:amy:r-----a-R-c---:-------:allow user:rory:r-----a-R-c---:-------:allow group:sysadmin:r-----a-R-c---:-------:allow group:staff:r-----a-R-c---:-------:allow owner@:rw-p--aARWcCos:-------:allow group@:r-----a-R-c--s:-------:allow everyone@:------a-R-c--s:-------:allow
A operação chmod a seguir altera as permissões para um modo menos restritivo. Neste exemplo, as permissões de ACL do grupo sysadmin e do grupo staff são restauradas para permitir as mesmas permissões que as do grupo proprietário.
$ chmod 770 file.1 $ ls -lV file.1 -rwxrwx---+ 1 amy staff 206695 Aug 30 16:03 file.1 user:amy:r-----a-R-c---:-------:allow user:rory:r-----a-R-c---:-------:allow group:sysadmin:rw-p--aARWc---:-------:allow group:staff:rw-p--aARWc---:-------:allow owner@:rwxp--aARWcCos:-------:allow group@:rwxp--aARWc--s:-------:allow everyone@:------a-R-c--s:-------:allow