La raíz no puede chmod?

12

En mi departamento tenemos un pequeño servidor de archivos con CentOS y samba. Tengo acceso de root para poder realizar un mantenimiento básico.

Hoy estaba haciendo algunas carpetas de solo lectura, así que seguí adelante e hice un chmod -R -w some-folder/, pero para algunos archivos obtuve la respuesta:

chmod: ./somefile.pdf: los nuevos permisos son r-xrwxr-x, no r-xr-xr-x

Después de agregar -vno obtengo mucha información:

modo de './somefile.pdf' retenido como 0575 (r-xrwxr-x)

Intenté lo siguiente solo para asegurarme:

# touch test-file
# chmod -v -R -w .
mode of `./somefile.pdf' retained as 0575 (r-xrwxr-x)
chmod: ./somefile.pdf: new permissions are r-xrwxr-x, not r-xr-xr-x
mode of `./test-file' changed to 0444 (r--r--r--)

No se me ocurren buenas razones por las cuales root no podría hacer un chmod.

Algunas cositas:

  • El sistema de archivos no es de solo lectura (solo algunos archivos se negaron a ser modificados).
  • Ejecuté los comandos chmod como root pero sin ningún efecto.
  • La partición donde residen los archivos es ext4.

ACTUALIZACIONES : Esta es la salida para lsattrel archivo y la carpeta que contiene:

# lsattr somefile.pdf
-------------e- somefile.pdf
# lsattr ..
-------------e- ../myfolder

No hay setuid presente ( ls -la):

dr-xr-xr-x  2 userxyz abc   4096 May 30 09:29 .
dr-xr-xr-x 17 userxyz abc   4096 Sep 19  2013 ..
-r-xrwxr-x  1 userxyz abc 275150 Aug  6  2013 somefile.pdf
Roflo
fuente
¿Estás accediendo a estos archivos de forma remota?
Luciano Andress Martini
1
¿Cuál es el resultado de lsattresos mismos archivos y el directorio que está encima?
Ryder

Respuestas:

17

Según las fuentes, tienes un modo ingenuo esperado . Después de abandonar más, creo que la causa es la -wopción, que no es lo que esperas. Debe dar g-wo ugo-w(según sus necesidades).

Sin dar un objetivo explícito (a, o, g, u) se podrían proporcionar algunos resultados inesperados, de acuerdo con el valor de umask. Creo que ese mensaje adicional se realiza debido a estos cambios inesperados.

Editar: fuentes en http://git.savannah.gnu.org/cgit/coreutils.git/tree/src/chmod.c#n301

Tomado del caché de google, un comentario en ese código que ya no está allí:

/ * Si es cierto, diagnostique sorpresas por mal uso ingenuo como "archivo chmod -r". POSIX permite el diagnóstico aquí, ya que se supone que debe usar un código portátil. "archivo chmod - -r" * /

Giacomo Catenazzi
fuente
Sí, esto fue todo. Lo cambié ugo-wy ya no se queja. Esperaré un tiempo antes de aceptar por cortesía a posibles respondedores.
Roflo
1
Y acepto las ediciones o mejores respuestas, porque todavía no entiendo por qué chmod funciona de esta manera extraña.
Giacomo Catenazzi
55
man chmod: "Una combinación de las letras ugoa controla qué acceso de los usuarios al archivo cambiará [...] Si no se da ninguno de estos, el efecto es como si (a) fuera dado, pero los bits que se establecen en los umask no se ven afectados ". Por lo tanto, puede hacer cosas como el archivo chmod + w y solo dar acceso de escritura a aquellos que lo obtendrían al crear un nuevo archivo. Sin embargo, el comportamiento negativo parece un poco confuso, por lo que la advertencia parece una buena idea.
ilkkachu