O que é “chmod” e seus aspectos práticos?

3

Eu sou novo no Ubuntu e costumava fazer tudo no Windows. Tanto quanto eu sei o Windows tem a opção de arquivo "somente leitura" para o usuário. No entanto, na minha opinião, o Ubuntu permite que o usuário manipule as permissões de arquivos excessivamente.

  

drwxrwxrwx 2 ttt ttt 4096 Tem 24 13:04 dante

  • Existem três grupos de usuários; proprietário, grupo e outros, respectivamente.

Normalmente quem cria o arquivo é o proprietário. Então quem é o "grupo" e o "outro". Isso é mais usado para sistemas semelhantes a servidores, onde há muitos usuários?

Mesmo que isso seja usado para problemas de segurança, sem "$ sudo", ele pode ser facilmente alterado para o que quiser.

Você também pode sugerir mais leituras?

Pode ser possível que eu esteja exagerando "chmod", mas ainda assim vou agradecer se você responder.

    
por rebuked 24.07.2013 / 12:45

4 respostas

4

Acredito que isso se divide em algumas questões intimamente relacionadas, que são responsáveis com um grau razoável de objetividade.

Por que o Ubuntu permite que diferentes tipos de permissões sejam ajustados para diferentes usuários e grupos de usuários? Este alto grau de configurabilidade é realmente necessário?

Quase todos os sistemas operacionais usados atualmente, incluindo o Windows, têm essa funcionalidade. Na verdade, no Windows, o sistema é mais complexo, porque o Windows usa listas de controle de acesso para quase tudo enquanto o Ubuntu usa o sistema mais simples de propriedade e permissões no estilo Unix a maior parte do tempo (mas também suporta listas de controle de acesso ).

Algumas razões são necessárias:

  1. Se você quiser que seu computador seja acessado por usuários que não sejam você mesmo, você precisa ter a capacidade de decidir que alguns arquivos estão totalmente fora dos limites para certos usuários, e que outros são legíveis, mas inalteráveis por certos usuários.

    Lembre-se de que isso inclui pessoas com quem você pode querer acessar seu computador por uma rede. Como você. Muitas pessoas querem poder compartilhar arquivos entre computadores em casa ou com seus amigos, mas não com qualquer pessoa que esteja usando a mesma rede sem fio pública. Assim, usuários representam mais pessoas do que você pode realmente usar fisicamente no seu teclado.

  2. O sistema operacional que você está usando - Ubuntu - é o mesmo sistema operacional que o Ubuntu Server. Eles têm diferentes pacotes instalados por padrão e diferentes instaladores. Você pode transformar um sistema de servidor em um sistema de desktop e vice-versa. Um sistema completo de propriedade e permissões é necessário para a maioria dos servidores, mesmo que não seja necessário para alguns desktops. Os desktops funcionam bem com isso; os servidores não funcionariam sem ele.

  3. As contas de usuários podem representar pessoas reais que acessam seu computador, mas elas representam muito mais do que isso também. Uma conta de usuário representa uma coleção de habilidades. Contas de usuário especiais existem para executar tarefas específicas com habilidades restritas.

    O propósito disso é duplo. Primeiro, o desenvolvedor do software, ou o usuário, poderia cometer um erro, resultando no software tentando realizar alguma ação que pode ser conhecida de antemão só poderia causar danos.

    Em segundo lugar, uma parte maliciosa pode intencionalmente enganar o software que executa a tarefa especializada para fazer algo ruim, como destruir dados ou permitir que a pessoa mal-intencionada controle-a.

    Em ambos os casos, o dano é frequentemente reduzido se a tarefa for executada por um usuário não privilegiado que não represente nenhum usuário humano específico do computador, mas exista apenas para realizar essa tarefa em particular.

    Se você tiver apenas algumas contas de usuário humano configuradas no seu sistema Ubuntu, a maioria das contas de usuário listadas executando cat /etc/passwd será esse tipo de "usuário". (Não se preocupe, executar cat /etc/passwd na verdade não mostra as senhas das pessoas; o arquivo é chamado principalmente por razões históricas.)

Qual é o objetivo do Ubuntu limitar o acesso da minha conta de usuário a qualquer coisa, se eu for um administrador e puder executar qualquer ação como root com sudo ?

A mesma razão que há grades de proteção nas laterais de algumas estradas, tampas de bueiro (uma tampa), uma cobertura sobre a agulha no final de uma seringa, dispositivos de segurança em armas de fogo, etc. E não Pela mesma razão que as pessoas colocam fechaduras em suas portas. Não para impedi-lo de fazer algo deliberadamente que queira fazer, mas para evitar que você faça algo que você não queira fazer acidentalmente.

Quando você quiser / precisar executar uma tarefa administrativa, é importante que você consiga fazê-lo facilmente. Seu controle sobre sua própria máquina deve ser respeitado, além de um sistema que é desnecessariamente difícil de usar não é muito bom. Se o Ubuntu impedir você de executar facilmente ações administrativas, isso é um erro. Felizmente, isso geralmente não é o caso (embora Temo que estamos nos movendo nessa direção . Uma das razões pelas quais o Ubuntu usa sudo é que geralmente facilita a execução de comandos / programas como root , sem reduzir sua capacidade de executar ações comuns e não administrativas simultaneamente.

Quando você não está tentando modificar seu sistema de alguma forma profunda que pode ser perigosa, é igualmente importante que o sistema seja projetado de forma a não enganá-lo.

Da mesma forma, você provavelmente tem o direito de dedicar sua vida a um cara aleatório. Você também tem o direito de jogar tênis. Sua autonomia é importante; é porque disso e não apesar de que um botão "doar todo o meu dinheiro" na sua raquete de tênis seria um projeto ruim.

Para obter mais informações sobre por que até os administradores devem usar "contas de usuário limitadas" (além da capacidade de executar qualquer ação específica sem limitação, sob demanda), consulte:

Eu entendo quais são as permissões do usuário - elas são permissões para o proprietário do arquivo. Quais são as permissões do grupo para?

O proprietário de um arquivo - que geralmente é o usuário que o criou ou o proprietário de uma pasta especial que está configurada para que os arquivos criados o façam pertencer a esse usuário - pode escolher um grupo de usuários para "agrupar próprio "o arquivo.

Esse grupo de usuários pode receber habilidades especiais (ou potencialmente, ter habilidades especiais removidas, embora isso geralmente não seja recomendado ou eficaz) em comparação a todos os demais.

Por todos os outros quero dizer todas as outras contas de usuário em seu sistema, além do proprietário do arquivo e do proprietário do grupo. Isso inclui os que não correspondem a nenhum ser humano. Por exemplo, você pode querer que todas as pessoas que usam seu computador possam configurar impressoras ( lpadmin group) e usar a unidade de CD / DVD / BluRay ( cdrom group), mas provavelmente não há necessidade de permitir o < a href="https://sobrelinux.info/questions/13/what-is-the-whoopsie-process-and-how-can-i-remove-it"> relatórios de falhas "usuário" ( whoopsie ) ou o "usuário" de sincronização do relógio ( ntp ) para ter essas habilidades.

Você pode usar grupos para implementar manualmente o controle de acesso, se preferir, mas em sistemas de desktop, geralmente a maioria dos grupos é configurada e gerenciada automaticamente. O comando groups listará todos os grupos dos quais você é membro.

Quais são as "outras" permissões para?

Eles se aplicam a todos os demais - a contas de usuário que não são proprietárias do arquivo nem são membros do proprietário do grupo.

As permissões do arquivo do grupo e do proprietário são apenas para servidores?

Não, eles são usados para gerenciar distinções entre diferentes tipos de contas de usuário em sua máquina, incluindo contas de "usuário" não humano. Isso se aplica mesmo se houver apenas uma conta de usuário humana em seu sistema.

Por exemplo, a associação no grupo adm (que não transforma um usuário em administrador) confere a capacidade de ler o conteúdo da maioria dos arquivos de log do sistema. Essa é uma capacidade relativamente inofensiva para praticamente qualquer usuário humano da maioria dos sistemas de desktop, mas poderia levar a problemas se fosse conferida a parte do sistema que executasse apenas uma tarefa altamente especializada (isto é, executaria apenas essa tarefa a menos que algo como um ciber-ataque parcialmente bem-sucedido é perpetrado).

As permissões de arquivos de grupos e usuários são mais importantes em servidores do que em desktops?

Mais ou menos.

Nos servidores, é mais provável que você esteja ciente deles e os gerencie manualmente, porque é mais provável que você forneça e negue deliberadamente o acesso a uma variedade de recursos para uma variedade de usuários humanos.

Mas eles são necessários para o sistema funcionar corretamente, mesmo para um único usuário humano. O sistema teria que ser projetado de forma bastante diferente para funcionar bem em um modo de usuário único para a computação diária, sem um sistema de propriedade e permissões de arquivos.

A título de comparação, considere o agendamento de I / O. Muitos ambientes de servidor têm muito mais processos acessando muito mais arquivos do que muitos sistemas de desktop. Portanto, o agendamento de entrada-saída (gerenciamento de como a taxa de transferência limitada pode ser gerenciada para concluir transações de acesso a arquivos com eficiência razoável) é especialmente importante em (alguns) servidores, em comparação com a maioria dos desktops. É mais provável que os administradores de servidores estudem o agendamento de I / O e façam alterações na maneira como ele funciona em seus computadores, do que na maioria dos usuários de desktop. Mas o agendamento de E / S é necessário para o trabalho de um servidor ou sistema de área de trabalho.

Como proprietário de um arquivo, posso alterar todas as permissões e o proprietário do grupo. Eu posso fazer isso sem sudo ou um mecanismo similar! Então qual é o ponto de permissão?

O proprietário de um arquivo pode fazer isso sem ser raiz (ou seja, sem sudo ), mas outros usuários não-raiz não podem. Isso inclui os "usuários" não humanos que fazem parte do sistema (veja acima).

Além disso, muitos arquivos no computador não são "de propriedade" da sua conta de usuário. Esses arquivos exigem que você se autentique de alguma forma, para modificar suas permissões. Você precisa usar sudo (ou um mecanismo semelhante) para alterar as permissões nos arquivos de sistema pertencentes a root .

Por fim, há algum valor associado a permissões que se aplicam somente a você, mesmo que você possa alterá-las sem usar sudo ou qualquer mecanismo semelhante.

O que são permissões de usuário? Por que eu iria querer mudar o que posso fazer com um arquivo, quando posso apenas mudá-lo de volta?

Pela mesma razão geral, você pode querer tornar um arquivo somente leitura (mesmo que você possa sobrescrevê-lo), você pode querer criar um arquivo que você não pode ler ou executar (executar).

A situação mais comum é que você pode não querer que um arquivo seu seja executável por você. Quando você faz o download de algo, provavelmente não quer que ele seja marcado como executável, pois pode ser um malware. Você provavelmente quer a oportunidade de considerar se deseja executá-lo antes de marcá-lo como executável. Além disso, se você baixou um arquivo cujo nome termina em .pdf , mas na verdade é um programa malicioso, você definitivamente não deseja que permissões de execução sejam definidas por padrão.

Há outro motivo menos relacionado à segurança. Qualquer arquivo marcado como executável é tratado como algo que pode ser executado - um programa ou script. A maioria dos arquivos não é nenhuma, e você não gostaria de ter a oportunidade de executá-los.

Por exemplo, se um arquivo de texto estiver marcado como executável (por exemplo, você o possui e tiver a permissão de execução ativada para seu proprietário do usuário) e você clicar duas vezes nele no Nautilus (o navegador de arquivos), correrá. Mas a maioria dos documentos de texto não são scripts e você não quer tentar executá-los quando clica duas vezes sobre eles; em vez disso, você provavelmente deseja abri-los em um editor.

É menos comum querer criar um arquivo que você mesmo não pode ler (sem alterar suas permissões de volta). Uma situação em que você pode querer fazer isso é se tiver vários arquivos e quiser evitar a abertura de um deles por um tempo, por exemplo, se ele for grande e levar vários minutos para ser aberto. Eu estive nessa situação, onde tive que esperar que um aplicativo terminasse de abrir um arquivo para que eu pudesse fechá-lo porque eu havia selecionado o arquivo errado (novamente).

Um possível cenário relacionado é se você estiver executando automaticamente alguma ação em muitos arquivos (um trabalho "em lote") que lê os arquivos, mas deseja que ele pule alguns. Contanto que a ação seja "degradada", continuando a fazer o que puder depois de um erro, a maneira mais fácil de realizá-la pode ser marcar os poucos arquivos que você deseja ignorar a leitura como ilegível.

Uma situação muito diferente é: talvez você queira negar permissão de leitura a si mesmo em algum arquivo porque o arquivo serve a algum propósito diferente de conter dados . Arquivos podem ser usados para indicar alguma condição. Como um exemplo inventado: alguns aplicativos de pesquisa que indexam arquivos podem primeiro verificar se um arquivo chamado noindex está presente em sua pasta base e parar se encontrar. Esse arquivo não precisa ser lido; indiscutivelmente, marcá-lo ilegível ajuda a esclarecer seu propósito.

Querer se manter (ou alguma tarefa que você está realizando como você ) lendo os arquivos que você possui não é uma situação particularmente comum. E, na prática, a maioria dos arquivos de "sinais" (que existem porque a própria existência deles significa alguma coisa) são legíveis por seus proprietários. Realmente, até onde eu sei, há três razões principais para o usuário-proprietário de um arquivo não poder lê-lo, e até mesmo ser capaz de escrever nele sem lê-lo:

  1. Grupo e outros lêem, escrevem e executam bits, e podem assumir qualquer combinação de valores. Não existe uma razão convincente para romper com esse modelo - tornando o sistema mais complicado - para o usuário que possui o arquivo.

  2. Muitos recursos que normalmente não consideramos como arquivos são representados por entradas no sistema de arquivos . Para alguns recursos, faz sentido escrever para eles, mas não faz sentido ler a partir deles. Para esses recursos, o read bit às vezes é desativado para todos, até mesmo para o proprietário, e até mesmo se o proprietário for root . (Nem sempre, no entanto; por razões que estão além do escopo desta resposta e no limite do meu próprio conhecimento, algumas entradas do sistema de arquivos dos dispositivos somente de gravação ainda têm seus bits de leitura habilitados para alguns usuários.)

  3. A capacidade de um arquivo negar o acesso de leitura até mesmo ao seu proprietário às vezes é usada para representar arquivos em um sistema de arquivos somente de gravação. (Nem sempre, porém; depende dos detalhes do sistema de arquivos e de como ele é montado.) Sistemas de arquivos somente de escrita são incomuns, mas eles existem existem e ter usos práticos .

por Eliah Kagan 24.07.2013 / 15:35
2
  

Normalmente quem cria o arquivo é o proprietário. Então quem é o "grupo" e o "outro". Isso é mais usado para sistemas semelhantes a servidores, onde há muitos usuários?

No Linux, um arquivo (ou diretório) pode ser acessado por três "entidades" diferentes.

  • O usuário (proprietário) do arquivo.
  • Um grupo , que (assim como o nome sugere) é um grupo de usuários.
  • Todas as outras outras pessoas; então basicamente todos os outros (ou seja, não o proprietário, e não no grupo).

Cada uma dessas entidades pode ter as permissões read , write e / ou execução em um arquivo. Veja a flexibilidade e simplicidade do Linux? Três entidades, cada uma com três permissões diferentes. Isso fornece uma maneira mais flexível de conceder permissões para arquivos / pastas. É mais usado para servidores como sistemas onde há muitos usuários? Bem, sim, tudo bem, você pode pensar assim. Seu Ubuntu usa grupos e outros em muitas situações, sem se preocupar com isso, mas eu discordo.

  

Mesmo que isso seja usado para problemas de segurança, sem "$ sudo", ele pode ser facilmente alterado para o que quiser.

Se eu entendi corretamente, suponho que você usou chmod nos arquivos da sua pasta pessoal, e você fez isso sem a necessidade de sudo . Vamos dar um exemplo:

-rwxr-xr-x 2 alaa test 4096 Jun  5 10:02 fileName

Se você quiser entender o que significa toda essa linha de saída, consulte esta .

alaa é o usuário (proprietário) e test é o grupo do arquivo.

Agora, o comando do qual você está falando, chmod , é usado para alterar as permissões de um arquivo. Então, digamos que eu queira dar permissões de gravação para o grupo test , eu faria o comando:

chmod g+w fileName

Significado: para a entidade grupo ( g ), adicione ( + ) a permissão de gravação ( w ) ao arquivo fileName .

Eu, o usuário alaa , posso fazer este comando sem precisar de sudo , porque sou o proprietário dele. Se eu não fosse o proprietário, não seria capaz de fazer isso e precisaria de sudo para fazer isso.

  

Você também pode sugerir alguma leitura adicional?

Sugiro que você não leia sobre o comando chmod , mas leia mais sobre as Permissões de Arquivo Linux / Unix. Você pode visitar essas páginas curtas para começar:

por Alaa Ali 24.07.2013 / 15:39
1

um dos primeiros lugares para ajuda é "homem". Você pode escrever "man chmod" e obter todas as informações sobre o uso do comando.

O comando altera quem pode acessar o arquivo e o que ele pode fazer com isso. "r" significa ler, "w" para escrever, "x" para executar. Há um tupple "rwx" para cada uma das categorias "owner", "group", "others". Se uma categoria tiver apenas direitos de leitura ("r--"), eles só poderão ler o arquivo. Isso significa abri-lo com um editor, mas não faça alterações. Com ("rw-") pode-se alterar o arquivo também. Com ("rwx") também é possível executar o arquivo se o arquivo for executável. Agora, é possível que um arquivo possa abri-lo em um editor e também executá-lo? Bem, sim. Se for um arquivo binário e você o abrir com um editor, você não entenderá nada e, se tentar executar um arquivo txt simples com apenas texto, provavelmente não fará nada. No entanto, se o texto for uma série de comandos (arquivo de script), ele também poderá fazer as duas coisas. Para esses arquivos, é muito importante determinar os direitos de acesso, pois uma pessoa pode alterar algo nos comandos e, posteriormente, esse arquivo pode ser executado por outra pessoa.

Sobre o proprietário das categorias: o usuário que criou o arquivo. Claro que você pode mudar o dono de um arquivo com "chown". group: grupo (s) de usuários ao qual o proprietário pertencia no momento em que o arquivo foi criado. outro: todos os outros, exceto o proprietário e os usuários do mesmo grupo que o proprietário.

    
por orestis 24.07.2013 / 13:01
0

Uma pesquisa na web simples daria muitos resultados para sua pergunta. Para uma visão geral rápida, recomendo que você leia este .

    
por meskobalazs 24.07.2013 / 13:07