Estoy completamente confundido entre umask y chmod. Ambos se utilizan para otorgar permisos a los archivos. Pero, ¿dónde está exactamente la diferencia y cuándo usarlos?
He leído la documentación en línea, pero ambas me parecen iguales.
umask: umask se usa para establecer permisos de archivo predeterminados. Estos permisos se utilizarán para todos los archivos posteriores durante su creación. chmod: se usa para cambiar los permisos de archivos y directorios.
Según tengo entendido si, por ejemplo, se crea el archivo test.doc.
Por defecto, unix le da al archivo 022 código umask.
Ahora, cuando lo cambio a chmod 666 test.doc, puedo cambiar el nivel de permiso de este archivo.
Ahora, ¿qué pasa si uso umask 666 para el mismo archivo?
¿Qué diferencia ocurre cuando uso chmod 666 y umask 666?
umask
establece una variable de entorno que establece automáticamente los permisos de archivo para los archivos recién creados .chmod
cambia los permisos de los archivos existentes .umask
no establece "una variable de entorno". Lo que hace es establecer la máscara de creación de modo de archivo del entorno de ejecución de shell actual.Respuestas:
La diferencia es que
umask
solo implica nuevos archivos . Como dijiste, umask establece los permisos predeterminados que tendrá un archivo / directorio en el momento de la creación, pero luegoumask
ya no los afecta.chmod
, sin embargo, necesita que el archivo se cree antes de ejecutarse.Por lo tanto, si ejecuta
umask
, no tendrá ningún efecto en los archivos existentes.fuente
umask
en un archivo, no tienefile
argumento.umask
es muy diferente dechmod
, en realidad.Todavía no se ha mencionado una diferencia importante:
chmod
establece, peroumask
borra (restringe) los bits de permiso. Es por eso que se llama "máscara" (como en "máscara de bits").Como David escribió ,
umask
es un ajuste de configuración (nivel de proceso), por lo que no se aplica en ningún archivo específico (en lugar dechmod
)Lo que nos lleva a otro punto importante:
umask
no se limita a los archivos. También se aplica al crear directorios. (Véase también, por ejemplo, esta respuesta ).También es importante que el
chmod
comando en sí no se vea afectado por el configurado actualmenteumask
.Ahora, a su ejemplo de lo que
umask 666
haría:Le indicará al proceso actual (por ejemplo, su shell) que cualquier objeto nuevo del sistema de archivos debe crearse con los bits
R
+W
(4 + 2 = 6) eliminados (de los permisos solicitados implícita o explícitamente en la creación). (Por lo tanto, 666 no es un valor muy práctico, ya que solo permite establecer losX
bits (ejecutar), pero para archivos ilegibles ...)P.ej:
fuente
UMASK = chmod 777 - permisos de umask
Algo como eso.
fuente
El permiso predeterminado para directorios / archivos es umask 022, los directorios se configuran de manera predeterminada con el permiso 755 (
drwx-rw-rw
) y los archivos se configuran con 644 (-rw-r--r--
). Básicamente, resta el valor octal del permiso que desea de 777 para un directorio y de 666 para un archivo. Entonces, del ejemplo anterior:(directory) umask 022 => 777 - 022 = 755
(file) umask 022 => 666 - 022 = 644
Puede encontrar el resultado del
umask octal
comando en la fuente cuando usa umask , dependiendo del octal y si es un archivo o un directorio.Fuente
Sin embargo , si
chmod 022 <file>
busca un directorio, debería obtener esto:d----w--w-
lo que no tendría mucho sentido.Debajo, encontrará una gran descripción del valor octal que puede recuperar aquí por Somnath Muluk con excelentes fuentes también.
fuente