Error en BSD: ¿a quién debo reportarlo?

3

Encontré lo que creo que es un error en el comando chown en OS X 11.6. Parece que funciona en contra de su página de manual, ignorando el indicador -f .

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

De acuerdo con la página del manual, usando -f , debería ignorar que el archivo no existe o cambiar el valor de retorno. (He probado el comportamiento correcto en RedHat 6 para comparación.)

No estoy seguro de quién (si alguien) solucionaría este tipo de errores. La página de manual se refiere a BSD. ¿Hay algún proyecto activo que respalde este tipo de cosas?

    
pregunta macetw 17.04.2017 - 23:34

1 respuesta

5

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

  

No informe ningún error al cambiar el propietario o grupo del archivo, ni modifique el estado de salida para reflejar dichos errores.

Esto significa que la opción -f solo es aplicable si existe el archivo de destino y hubo un error al cambiar el propietario o < em> group del archivo , que por supuesto no puede hacer en un archivo inexistente como en el ejemplo OP en macOS.

Para mostrar que la opción -f realmente funciona según lo previsto, use el siguiente comando compuesto en la Terminal mientras no lo haga como root o use 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 la opción -f falla, sale > 0, porque el comando chown está tratando de establecer el el propietario de ${TMPDIR}testfile a root mientras se ejecuta no como root y no usa sudo .

Ahora ejecute con la opción -f :

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

La salida será:

0

En esta segunda forma, con la opción -f , tiene éxito, sale con 0 sin haber realizado ningún cambio, ya que no se realizó como root y no usó sudo , que es necesario para cambiar el propietario de un archivo a root .

Tenga en cuenta que cada sistema operativo chown no es igual en todas las funciones entre sí. En otras palabras, aunque no tengo Red Hat, como se mencionó en el OP, tengo Linux Mint para comparar y la página del manual en Linux Mint -f opción para chown estados:

  

suprimir la mayoría de los mensajes de error

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

Entonces, mientras que en Linux Mint, no como root o usando sudo , chown -f root non_existant_filename no generará un error, sin embargo, su código de salida es 1 , no 0 como está con el macOS% Ejemplo de chown anterior usando -f dentro de su contexto definido.

    
respondido por el user3439894 18.04.2017 - 05:04

Lea otras preguntas en las etiquetas