Por accidente, corrí chmod -u filename
y eliminó todos los permisos que tenía filename
.
La página del manual no hace referencia a una -u
opción. Experimentando pude concluir que no elimina todos los permisos, sino que solo lee y ejecuta el acceso, dejando intacto el acceso de escritura.
Entonces, ¿qué hace esto exactamente?
Mi conclusión anterior es incorrecta, ahora creo que lo que hace es eliminar los permisos que tiene el propietario, de todas las categorías.
Creo que el comportamiento es análogo a=u
, solo que es en -
lugar de =
y a
se puede descartar como se puede, por ejemplo, con a+x
.
permissions
chmod
y_wc
fuente
fuente
[ugoa...][[-+=][perms...]...]
, dondeperms
hay cero o más letras del conjuntorwxXst
, o una sola letra del conjuntougo
" (página de manual de GNU chmod); POSIX es bastante oscuro, pero define una producción de "permcopy" para el mismo efecto.u
), los permisos otorgados a otros usuarios que son miembros del grupo del archivo (g
) , y los permisos otorgados a los usuarios que no pertenecen a ninguna de las dos categorías anteriores (o
) ".u
, especificaré los permisos otorgados al usuario propietario del archivo. Pero no dice lo que hace. ¿Qué significa incluso especificar?Respuestas:
Esta no es una opción, sino una forma estándar (pero poco común) de especificar los permisos. Significa para eliminar (
-
) los permisos asociados con el propietario del archivo (u
), para todos los usuarios (sin precedentesu
,g
oo
). Esto está documentado en la página del manual.La página de manual de GNU chmod documenta esto como:
y después
Por
-u
lo tanto, significa eliminar (-
) los permisos que estén habilitados actualmente para el propietario (u
) para todos (de manera equivalentea-u
, excepto honrar la umask actual). Si bien eso no suele ser muy útil,chmod +u
a veces lo mismo será copiar los permisos del propietario a otros cuando se opera de forma recursiva, por ejemplo.También está documentado en POSIX , pero se define de manera más oscura: la especificación del permiso es ampliamente
who[+-=]perms
(o un número), y el efecto de estos se especifica más a fondo:y entonces
fuente
perms
puede seru
, que tengo. Sí,u
especifica los permisos o el propietario. Pero, ¿cómo se deduce que-u
elimina los permisos del propietario (móduloumask
) de todos los usuarios?-
siempre hace: elimina los permisos especificados de la clase de usuarios especificada.-u
es exactamente análogo ao-w
(más cercano) augo-u
.chmod
pregunta de documentación? Avíseme si cree que esto merece una pregunta separada. "y = hace que se agreguen y que se eliminen los bits no mencionados, excepto que los bits de ID de grupo y usuario de un directorio no mencionados no se ven afectados". Esto, para mí, significa que, dado un directorio cuyo propietario solo tiene acceso de escritura,chmod u=rx directory
dejará los permisos del propietario comorwx
. Pero eso no es lo que sucede, sino que se convierten en lo esperador-x
. ¿Estoy malinterpretando algo?s
bits setuid / setgid ( ) se dejan solos si no los menciona, y todo lo que no especificó se elimina.La respuesta es un poco similar a /unix//a/429424/255251 .
no elimina todos los permisos, pero considera el
umask
valor.Ahora cambie el valor de umask
fuente