¿Cuál es la principal diferencia entre chmod y chown?

43

En algunos ejemplos, vi que algunos usaban en chownlugar de chmod. No sé dónde usar chmody chown. Explíqueme la diferencia entre ellos, cuándo y por qué debería usarlos.

saravana kumar kandasami
fuente
18
Nadie ha hecho explícito aún: un ch anges el mod electrónico y la otra ch anges la propia er. Además, lea el hombre UAL.
Deja de dañar a Monica
1
Y si bien chowntambién puede ch ange la gr ou p , se chgrpdedica específicamente para esta tarea.
Deja de dañar a Monica
66
¿Cuál es la principal diferencia entre un plátano y una silla? No te sientes en el plátano.
Shadur

Respuestas:

48

Vamos a crear un archivo

touch rainbow

Echemos un vistazo a los metadatos del archivo.

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

La primera parte de la información es el tipo de archivo ( -al principio significa que es un archivo normal) y los bits de permiso

Después de eso, vemos al propietario (zanna) y al grupo (zanna). Podemos usar el chowncomando para cambiar esos:

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

Y usamos chmodpara cambiar los bits de permiso

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

Dado que los bits de permiso se establecen por separado para el propietario, el grupo y otros, puede controlar los permisos de archivos para diferentes usuarios combinando chowny chmod. Consulte esta breve guía para un curso intensivo sobre permisos en Linux.

Zanna
fuente
1
+1 para la imagen. ¿Sin embargo, no hay definición octal? O chmod a+wejemplo? Lo que lleva mucho tiempo hacer pero obtiene más votos, creo: D
WinEunuuchs2Unix
2
@ WinEunuuchs2Unix jaja gracias ... Elegí deliberadamente una configuración de permisos particularmente inútil. Si realmente empiezo a explicar cuándo y por qué usar todas las permutaciones posibles de chmody chown(que es una pregunta demasiado amplia por el momento) mi respuesta continuará para siempre. Tratando de mantenerlo simple
Zanna
96

En términos simples, chownse utiliza para cambiar la propiedad de un archivo, mientras chmodque para cambiar los bits del modo de archivo.

  • chown define quién posee el archivo.
  • chmod define quién puede hacer qué.

Cuando hace que alguien sea el propietario de un archivo, puede hacer casi cualquier lugar que desee para ese archivo, por ejemplo, puede usarlo chmodpara cambiar sus modificaciones (por ejemplo, permisos) para definir quién puede hacer qué.

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

En la línea anterior podemos ver que ravexinaes el propietario del archivo y adminses el grupo. Puedo usar: sudo chown dave:sudo filepara cambiar el propietario del archivo a davey el grupo a sudo; Ahora el archivo pertenece a "dave" y todos en el grupo "sudo".

¿Sin embargo con chmodnosotros definimos quién puede hacer qué? quién tiene derecho a leer un archivo, escribir en un archivo o ejecutarlo. p.ej:

chmod 777 file

otorga los derechos de lectura, escritura y ejecución a todos, incluidos el propietario, el grupo y todos los demás.

Desde turnoff.us : ingrese la descripción de la imagen aquí

Ravexina
fuente
1
El propietario no puede hacer lo que quiera con el archivo: eliminar o mover requiere permisos de escritura en el directorio que lo contiene.
muru
2
@muru eso es cierto;) Me refería a lectura / escritura / ejecución, también chattrcreo que puede afectar el archivo.
Ravexina
1
@KamilMaciorowski Lo sabes, lo sé, Ravexina lo sabe, pero la mayoría de la gente no.
muru
2
@KamilMaciorowski No te he pedido que finjas nada. Lo que falta es que la mayoría de la gente no piensa en eliminar o renombrar un archivo como operaciones en el directorio, sino como operaciones en el archivo. Es por eso que tenemos preguntas como las siguientes: superuser.com/q/373115/334516 , unix.stackexchange.com/q/48579/70524 , askubuntu.com/q/240424/158442 Obviamente que estas son operaciones en el directorio (felicitaciones !), pero hay un error común al respecto, así que noté que renombrar o eliminar implican permisos en el directorio, no en el archivo. ...
muru
1
@KamilMaciorowski ... Esta pregunta es de un usuario que no conoce la diferencia entre chmod y chown, por lo que me parece razonable que no sepan que cambiar el nombre de un archivo necesitaría permisos en el directorio.
muru
19

Al considerar los permisos de un archivo (o directorio, o lo que sea), hay dos factores:

  • quién posee el archivo: el usuario y el grupo, y
  • qué pueden hacer con él: leer, escribir, ejecutar o una combinación de ellos.

chowntrata con quien . chmodtrata con el qué . No puedes usar uno en lugar del otro.

Los permisos simples de Unix clasifican a los usuarios que intentan acceder a un archivo en tres tipos:

  1. el dueño del archivo
  2. usuarios que son miembros del grupo propietario del archivo
  3. todos los demás

chownse usa para cambiar los dos primeros. chmodse utiliza para cambiar los derechos otorgados a estos tipos.

muru
fuente
7

Algunos puntos / consejos para agregar a las excelentes respuestas anteriores:

  • Debe tener permiso de ejecución en un directorio (y todos los que están arriba) para acceder a él.
  • Use la opción -R para aplicar los cambios de forma recursiva a todo, incluido y debajo del objetivo, p. Ej. chown -R www-data files/
  • Puede cambiar de usuario y grupo al mismo tiempo utilizando la sintaxis chown user:group myfile
  • A menudo es más fácil / mejor usar las opciones '+' y '-' en lugar de establecer permisos absolutos, especialmente cuando se trata de una combinación de archivos y directorios. Por ejemplo, si desea otorgar permisos de escritura grupal a un directorio y todo lo que se encuentra debajo de él, chmod -R 775 files/haría que 'files /' y todo lo que está debajo se ejecute y sea legible para todos, lo que podría no ser el resultado deseado para cada archivo. El uso chmod -R g+w files/solo agregará el permiso de escritura grupal sin tocar nada más.
james-geldart
fuente
6

Muy buenas respuestas ya, pero me gustaría hacer una contribución donde los permisos sean muy fáciles de entender.

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

u = user
o = other
g = group

De esta manera, puede agregar fácilmente permisos a un archivo. En el ejemplo anterior

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

Y no olvides -Rsi quieres cambiar los permisos de forma recursiva.

Adán
fuente
1

chownCambiará quién posee el archivo y a qué grupo pertenece, mientras chmodcambia la forma en que los propietarios y los grupos pueden acceder al archivo (o si pueden acceder a él).

Bruno Finger
fuente