3 votos

¿Error en BSD: a quien voy reporto?

He encontrado lo que creo que es un error en el comando chown en OS X 11.6. Parece trabajos contrarios a su página man, ignorando el -f bandera.

T_MaceT 33 ) chown -f T_MaceT foo
chown: foo: No such file or directory
T_MaceT 34 ) echo $?
1

Según la página, el uso de -f, se debe ignorar que el archivo no existe ni debe cambiar el retorno de valor. (He probado el comportamiento correcto en RedHat 6 para la comparación.)

No estoy seguro de que (si cualquiera) podría solucionar este tipo de errores. El hombre de la página se refiere a BSD. Hay un proyecto activo apoyo a este tipo de cosas?

5voto

user3439894 Puntos 5883

No es un error, que es mal documentación escrita. El -f opción para chown estados:

No informar de cualquier fallo para cambiar el propietario del archivo o grupo, ni modificar el estado de salida para reflejar dichos errores.

Esto significa que el -f opción sólo es aplicable si el objetivo de archivo existe y que hubo un error en el cambio de la titular o de grupo del archivo, que por supuesto no se puede hacer en una inexistente archivo como en el OP ejemplo en macOS.

Para mostrar que el -f opción realmente funciona como se pretende, utilice el siguiente comando compuesto en la Terminal, mientras que no hacerlo como root o usando sudo:

touch ${TMPDIR}testfile; chown root ${TMPDIR}testfile; echo $?; rm ${TMPDIR}testfile

La salida será, por ejemplo:

chown: /var/folders/7l/lcvbc47n3sd7jcztdhc9c_pw0000gn/T/testfile: Operation not permitted
1

En esta primera forma, sin el -f opción falla, sale >0, debido a que el chown comando está tratando de establecer el propietario de ${TMPDIR}testfile a root , mientras que siendo ejecutado no como root y no el uso de sudo.

Ahora se ejecutan con la -f opción de:

touch ${TMPDIR}testfile; chown -f root ${TMPDIR}testfile; echo $?; rm ${TMPDIR}testfile

La salida será:

0

En esta segunda forma, con la -f opción, se realiza correctamente, sale con 0 sin haber realizado ningún cambio, porque no se hizo como root y no el uso de sudo, la cual es necesaria para cambiar el propietario de un archivo a root.


Tenga en cuenta que cada uno de los sistemas operativos chown no es igual en todas las funciones para cada uno de los otros. En otras palabras, mientras que no tengo Red Hat, como se mencionó en el OP, tengo Linux Mint a comparar, y la página man de Linux Mint -f opción para chown estados:

suprimir la mayoría de los mensajes de error

Como se puede ver la mayoría es la palabra clave, por lo que no suprimir todos los mensajes de error en Linux Mint, ni es la descripción de lo -f con chown bajo Linux Mint como detallado y explícito como en macOS.

Así, mientras que en Linux Mint, no como root o usando sudo, chown -f root non_existant_filename no va a la salida de un error, sin embargo, su código de salida es 1, no 0 como es con el macOS chown ejemplo anterior, usando -f dentro de su contexto definido.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X