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

43

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

saravana kumar kandasami
fonte
18
Ninguém é feito explícito ainda: um ch anges o mod e e outro ch anges o próprio er. Além disso, leia o homem ual.
Pare de prejudicar Monica
1
E, embora chowntambém pode ch ange o gr UO p , não é chgrpespecificamente dedicado a esta tarefa.
Pare de prejudicar Monica
6
Qual é a principal diferença entre uma banana e uma cadeira? Não se sente na banana.
Shadur

Respostas:

48

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 das informações é o tipo de arquivo ( -no começo significa que é um arquivo comum) e os bits de permissão

Depois disso, vemos o proprietário (zanna) e o grupo (zanna). Podemos usar o chowncomando para alterar aqueles:

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

E usamos chmodpara 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 chowne chmod. Consulte este pequeno guia para um curso intensivo sobre permissões no Linux.

Zanna
fonte
1
+1 para a imagem .. Sem def octal embora? Ou chmod a+wexemplo? O que é demorado, mas obtém mais votos, eu acho: D
WinEunuuchs2Unix 24/17/17
2
@ WinEunuuchs2Unix haha ​​obrigado ... Eu escolhi deliberadamente uma configuração de permissões particularmente inútil. Se eu realmente começar a explicar quando e por que usar todas as permutações possíveis chmode chown(que é uma pergunta muito ampla) minha resposta continuará para sempre. Tentando mantê-lo simples
Zanna
96

Em termos simples, chowné usado para alterar a propriedade de um arquivo e chmodpara alterar os bits do modo de arquivo.

  • chown define quem possui o arquivo.
  • chmod define quem pode fazer o que.

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

$ 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. Eu posso usar: sudo chown dave:sudo filepara alterar o proprietário do arquivo davee o grupo para sudo; Agora, o arquivo pertence a "dave" e a todos no grupo "sudo".

No entanto chmod, definimos quem pode fazer o que? quem tem o direito de ler um arquivo, gravá-lo ou executá-lo. por exemplo:

chmod 777 file

concede os direitos de leitura, gravação e execução a todos, incluindo proprietário, grupo e todos os demais.

Do turnoff.us : insira a descrição da imagem aqui

Ravexina
fonte
1
O proprietário não pode fazer o que quiser com o arquivo - excluir ou mover requer permissões de gravação no diretório que o contém.
muru
2
@muru isso é verdade;) eu quis dizer leitura / gravação / exec, também há chattrefeitos que podem afetar o arquivo.
Ravexina
1
@KamilMaciorowski Você sabe disso, eu sei disso, Ravexina sabe disso, mas a maioria das pessoas não.
267 muru
2
@KamilMaciorowski Eu não te pedi para fingir nada. O que você está perdendo é que a maioria das pessoas não pensa em excluir ou renomear um arquivo como sendo operações no diretório, mas como operações no arquivo. É por isso que temos perguntas como estas: superuser.com/q/373115/334516 , unix.stackexchange.com/q/48579/70524 , askubuntu.com/q/240424/158442 Obviamente, você sabe que estas são operações no diretório (parabéns !), mas há um equívoco comum sobre isso, então observei que renomear ou excluir envolve permissões no diretório, não no arquivo. ... #
267 muru
1
@KamilMaciorowski ... Esta pergunta é de um usuário que não sabe a diferença entre chmod e chown, por isso me parece razoável que eles não saibam que renomear um arquivo precisaria de permissões no diretório.
267 muru
19

Ao considerar as permissões de um arquivo (ou diretório, ou o que for), existem dois fatores:

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

chownlida com quem . chmodlida com o quê . Você não pode usar um em vez do outro.

As permissões simples do Unix classificam os usuários que tentam acessar um arquivo em três tipos:

  1. o proprietário do arquivo
  2. usuários que são membros do grupo proprietário do arquivo
  3. todo mundo

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

muru
fonte
7

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

  • Você deve ter permissão de execução em um diretório (e todos os que estão acima dele) para acessá-lo
  • Use a opção -R para aplicar as alterações recursivamente a tudo, inclusive e abaixo da meta, por exemplo chown -R www-data files/
  • Você pode alterar usuário e grupo ao mesmo tempo usando a sintaxe chown user:group myfile
  • Muitas vezes, é 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 conceder permissões de gravação de grupo a um diretório e tudo abaixo dele, chmod -R 775 files/tornaria 'files /' e tudo dentro e abaixo dele executáveis ​​e legíveis para todos, o que pode não ser o resultado desejado para cada arquivo. O uso chmod -R g+w files/adicionará apenas a permissão de gravação do grupo sem tocar em mais nada.
james-geldart
fonte
6

Respostas muito boas, mas eu 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

Dessa 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 esqueça o -Rse você deseja alterar as permissões recursivamente.

Adão
fonte
1

chownMudará quem é o proprietário do arquivo e a qual grupo ele pertence, enquanto chmodaltera a maneira como os proprietários e os grupos podem acessar o arquivo (ou se é que podem acessá-lo).

Bruno Finger
fonte