Como o sistema de privilégios de arquivo Unix difere do sistema Windows?

9

Pergunta relacionada: Como o sistema / organização de arquivos Linux difere do Windows?

Estou familiarizado com o modo como os privilégios funcionam quando se trata de arquivos e diretórios - cada entrada tem uma propriedade ownere groupque representa o proprietário do arquivo e o grupo ao qual o proprietário pertence (corrija-me se estiver errado).

Como isso difere da organização de permissões no sistema de arquivos NTFS no Windows? Quais vantagens o sistema de permissão do Unix tem sobre o NTFS?

Nathan Osman
fonte

Respostas:

16

O NTFS possui Windows ACEs. O Unix usa "bits de modo" em cada arquivo.

No NTFS, cada arquivo pode ter um proprietário e zero ou mais entradas de controle de acesso (ACEs) do Windows. Uma ACE consiste em um principal (usuários e grupos são principais), um conjunto de operações (leitura, gravação, execução etc.) e se essas operações são permitidas ou negadas. Os arquivos podem ter muitos ACEs. Outros objetos no Windows que não sejam arquivos também podem ter ACEs, como entradas de registro, objetos de impressora e outras coisas. Todas as ACEs são levadas em consideração quando ocorre uma operação de arquivo. Negar tem precedência sobre permitir.

As ACEs do Windows suportam herança, onde você pode definir uma ACE para um diretório e propagá-la automaticamente para diretórios de nível inferior.

Os arquivos no Unix possuem um usuário proprietário (proprietário) e um grupo proprietário (grupo-proprietário). Existem três "princípios" fixos que são proprietários, membros do grupo proprietário e todos os outros (também conhecido como mundo). Para cada diretor, existem três "bits" que abrangem habilidades de leitura, gravação e execução. (eles têm significados diferentes para diretórios e arquivos, veja isso ). Esses bits determinam quem pode executar quais operações. Isso é chamado de modo do arquivo e é incorporado ao arquivo (não há ACEs separadas).

Na maioria das vezes você se preocupa com as permissões "mundo", ou seja, definir os três bits como 0 para "mundo" significa que ninguém que não seja o proprietário ou o grupo-proprietário pode fazer qualquer coisa com o arquivo. As permissões Unix funcionam apenas no sistema de arquivos, mas como a maioria dos objetos aparece como arquivos, você pode usar permissões para restringir o acesso a discos, impressoras etc. As permissões Unix são mais simples, mas mais "grosseiras". Permissões Unix não suportam herança e não afetam diretórios de nível inferior, com exceção da permissão de execução de diretórios (acho) que faz com que os arquivos recém-criados assumam permissões do diretório (mas não afetam os arquivos criados atualmente).

Tradicionalmente, os arquivos Unix têm um único proprietário e um único grupo de proprietários. Existem extensões para o Linux que adicionam ACEs aos arquivos de maneira semelhante ao Windows.

A vantagem do Unix é apenas que um sistema mais simples geralmente é mais fácil de entender, proteger e acelerar, já que o sistema de arquivos não precisa buscar ACEs além dos inodes ao abrir arquivos.

LawrenceC
fonte
4
Essa é a permissão setgid para diretórios e faz com que os arquivos herdam o grupo de proprietários, não as permissões.
Random832
3
@ George: Uma coisa que você precisa lembrar é que o grupo NÃO é o grupo do proprietário, é separado. Veja chgrp (1).
precisa saber é o seguinte
@ Random832: Obrigado pelo esclarecimento.
LawrenceC
3
Atualmente, a maioria das distribuições inclui suporte para listas de controle de acesso estendidas (ACLs) compiladas nos vários sistemas de arquivos disponíveis por padrão. O nome do pacote de software necessário para acessá-los e modificá-los é geralmente chamado aclou faclou algo semelhante, com os dois programas nomeados setfacle getfaclpara modificar ou recuperar as configurações da lista de controle de acesso.
Shadur
7

Uma coisa bem diferente é que "executável" é uma permissão no Linux / Unix, não baseada no nome ou extensão do arquivo.

Essa é uma vantagem sobre o Windows, pois no Linux você pode garantir que algo não seja executado removendo as permissões executáveis. Nenhuma extensão mágica é importante. Esta é provavelmente uma das razões pelas quais os vírus de arquivos tradicionais não chegaram exatamente a lugar algum no Unix e Linux.

Bruce Ediger
fonte
2
O Windows, na verdade, tem uma permissão executável, embora eles anulem o objetivo, definindo-o por padrão.
Patches
1
Extensões também não importam no Windows.
Logan Capaldo 22/05
1
@Logan: Na verdade, eles têm significado no Windows. A extensão do arquivo determina quais programas podem ser usados ​​para abri-lo e indica ao explorador que tipo de arquivo é, para que as miniaturas possam ser geradas. No último caso, isso poderia potencialmente explorar um bug existente no gerador de miniaturas e, portanto, comprometer um sistema.
Nathan Osman
1
@George O mesmo se aplica a um gerenciador de arquivos gráficos com um visualizador de unhas com erros em qualquer sistema operacional. Meu argumento foi que o CreateProcess não dá duas piadas se o seu programa termina em .exe (e é fácil ver isso executando um programa a partir do cmd.exe), mas realmente se importa com o bit de execução.
Logan Capaldo
2
@ George, exatamente como o Unix (a menos que você queira começar a discutir se a procura de um shebang é "avançada" ou não). Eu só queria deixar claro que a extensão do arquivo não tem nada a ver com o modelo de segurança. Se você marcar um executável como não executável no Windows, ele terá o mesmo efeito em um unix.
Logan Capaldo