Los permisos de archivos actuales se ven así:
$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file
Ahora intento dar permisos de escritura usando chmod
:
$ chmod +x+r+w file
Después de eso, los permisos del archivo seguirán teniendo este aspecto:
$ ls -l file
-rwxrwxr-x 1 chiranjitd chiranjitd 0 Oct 30 14:52 file
El permiso de escritura no se otorga a los demás. ¿Por qué está pasando esto?
Respuesta1
Cuando corres chmod +x+r+w file
,Todos los bits están configurados, excepto aquellos enmascarados por suumask
. Presumiblemente umask
enmascara (al menos) el bit de escritura de otros usuarios, por lo que la +w
parte termina siendo ignorada por ellos.
Por lo tanto, para un típico umask
022, cualquier chmod
comando que no especifique para quién se deben establecer los permisos termina ignorando cualquier cambio especificado en los bits de escritura del grupo y de otros.
Para configurar todos los bits, ignorando umask
, debe especificarOMSdesea configurarlos para:
chmod a+rwx file
o más explícitamente,
chmod ugo+rwx file
(o cualquier subconjunto de ugo
, según corresponda, para el usuario, grupo y/u otros).
También es posible especificar permisos numéricos en lugar de permisos simbólicos; verComprender los permisos y tipos de archivos de UNIXpara detalles.
Tenga en cuenta que el umask
comportamiento de enmascaramiento también se aplica cuandoclarobits, lo que puede producir resultados sorprendentes: chmod -w file
solo borrará los bits de escritura que serían establecidos por chmod +w file
! Continuando con lo típico umask
de 022, esto significa que chmod -w
no tocará los bits de escritura del grupo ni de otros, dejándolos configurados si ya lo están. (GNU coreutils
' chmod
advierte útilmente sobre esto).