Qual é a principal diferença entre chmod e chown?

29

Em alguns exemplos, vi que alguns usaram chown em vez de chmod . Eu não sei onde usar chmod e chown . Por favor, explique-me a diferença entre eles, quando e por que devo usar também.

    
por saravana kumar kandasami 24.05.2017 / 11:02

6 respostas

32

Vamos criar um arquivo

touch rainbow

Vamos dar uma olhada nos metadados do arquivo

$ ls -l rainbow
-rw-rw-r-- 1 zanna zanna 0 May 24 10:09 rainbow

A primeira parte da informação é o tipo de arquivo ( - no começo significa que é um arquivo regular) e os bits de permissão

Depois disso, vemos o proprietário (zanna) e o grupo (zanna). Podemos usar o comando chown para alterá-los:

$ sudo chown pixie rainbow
$ ls -l rainbow
-rw-rw-r-- 1 pixie zanna 0 May 24 10:09 rainbow

E usamos chmod para alterar os bits de permissão

$ sudo chmod 333 rainbow
$ ls -l rainbow
--wx-wx-wx 1 pixie zanna 0 May 24 10:09 rainbow

Como os bits de permissão são definidos separadamente para proprietário, grupo e outros, você pode controlar as permissões de arquivo para diferentes usuários combinando chown e chmod . Veja este breve guia para um curso intensivo sobre permissões no Linux.

    
por Zanna 24.05.2017 / 11:19
86

Em termo simples chown é usado para alterar a propriedade de um arquivo, enquanto chmod é para alterar os bits do modo de arquivo.

  • chown define quem é o proprietário do arquivo.
  • chmod define quem pode fazer o quê.

Quando você torna alguém o proprietário de um arquivo, ele pode fazer quase onde quer que ele deseje, por exemplo, ele pode usar chmod para alterar seus mods (digamos, permissões) para definir quem pode fazer o quê.

$ ls -l file
-rwxrwxr-x  2  ravexina admins   26 May  9 12:49 file

Na linha acima, podemos ver que ravexina é o proprietário do arquivo e admins é o grupo. Posso usar: sudo chown dave:sudo file para alterar o proprietário do arquivo para dave e o grupo para sudo ; Agora o arquivo pertence a "dave" e todos no grupo "sudo".

No entanto, com chmod , definimos quem pode fazer o quê? quem tem o direito de ler um arquivo, gravar em um arquivo ou executá-lo. por exemplo:

chmod 777 file

dá o direito de ler, escrever e executar para todos, incluindo o proprietário, o grupo e todos os outros.

Em turnoff.us :

    
por Ravexina 24.05.2017 / 11:07
17

Ao considerar as permissões de um arquivo (ou diretório, ou qualquer outro), há dois fatores:

  • quem possui o arquivo - o usuário e o grupo e
  • o que eles podem fazer - ler, escrever, executar ou uma combinação deles.

chown lida com o quem . chmod lida com o o que . Você não pode usar um em vez do outro.

Permissões simples do Unix classificam usuários tentando acessar um arquivo em três tipos:

  1. o proprietário do arquivo
  2. usuários que são membros do grupo que possui o arquivo
  3. todos os outros

chown é usado para alterar os dois primeiros. chmod é usado para alterar os direitos concedidos a esses tipos.

    
por muru 24.05.2017 / 11:10
7

Alguns pontos / dicas para adicionar às excelentes respostas anteriores:

  • Você deve ter permissão de execução em um diretório (e todos aqueles acima dele) para acessá-lo
  • Use a opção -R para aplicar as alterações recursivamente a tudo, incluindo e abaixo do alvo, por exemplo, %código%
  • Você pode alterar usuário e grupo ao mesmo tempo usando a sintaxe chown -R www-data files/
  • Geralmente é mais fácil / melhor usar as opções '+' e '-' em vez de definir permissões absolutas, especialmente ao lidar com uma combinação de arquivos e diretórios. Por exemplo, se você deseja dar permissões de gravação de grupo a um diretório e tudo abaixo dele, chown user:group myfile tornaria 'arquivos /' e tudo dentro e abaixo executável e legível para todos, o que pode não ser o resultado desejado para cada arquivo. Usar chmod -R 775 files/ apenas adicionará a permissão de gravação do grupo sem tocar em mais nada.
por james-geldart 24.05.2017 / 13:05
6

Muito boas respostas, mas gostaria de fazer uma contribuição em que as permissões sejam muito fáceis de entender

chmod u=r+w,o=r-w,g=-r-w test.php

u = user
o = other
g = group

Desta forma, você pode facilmente adicionar permissões a um arquivo. No exemplo acima

user = read + write
other = read but not write
group = not read not write

E não se esqueça do -R se você quiser alterar as permissões recursivamente.

    
por Adam 24.05.2017 / 22:13
1

chown mudará quem possui o arquivo e a que grupo pertence, enquanto chmod altera como os proprietários e grupos podem acessar o arquivo (ou se eles pode acessá-lo de todo).

    
por Bruno Finger 26.05.2017 / 20:51