Bug in BSD: a chi devo segnalarlo?

3

Ho trovato quello che penso sia un bug nel comando chown in OS X 11.6. Sembra che funzioni in modo contrario alla sua pagina man, ignorando il flag -f .

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

Secondo la pagina man, usando -f , si dovrebbe ignorare che il file non esiste né dovrebbe cambiare il valore di ritorno. (Ho testato il comportamento corretto su RedHat 6 per il confronto.)

Non sono sicuro di chi (se qualcuno) possa risolvere questo tipo di bug. La pagina man si riferisce a BSD. Esiste un progetto attivo a sostegno di questo genere di cose?

    
posta macetw 17.04.2017 - 23:34
fonte

1 risposta

5

Non è un bug, è una documentazione mal scritta. L'opzione -f per chown afferma:

Don't report any failure to change file owner or group, nor modify the exit status to reflect such failures.

Questo significa che l'opzione -f è applicabile solo se il file di destinazione esiste e c'è stato un errore nel cambiare il proprietario o < em> gruppo del file , che ovviamente non è possibile eseguire su un file non esistente come nell'esempio OP sotto macOS.

Per mostrare che l'opzione -f funziona come previsto, usa il seguente comando composto in Terminale mentre non lo fai come root o usando sudo :

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

L'output sarà, ad esempio:

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

In questa prima forma, senza l'opzione -f fallisce, si chiude > 0, perché il comando chown sta cercando di impostare proprietario di ${TMPDIR}testfile a root mentre viene eseguito non come root e non usando sudo .

Ora esegui con l'opzione -f :

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

L'output sarà:

0

In questo secondo modulo, con l'opzione -f , ha successo, esce con 0 senza aver apportato alcuna modifica, perché non è stato eseguito come root e non utilizzando sudo , che è necessario per cambiare il proprietario di un file in root .

Si noti che ogni OS% chown non è uguale in tutte le funzionalità l'un l'altro. In altre parole, anche se non ho Red Hat, come menzionato nell'OP, ho Linux Mint da confrontare, e la pagina man in Linux Mint -f opzione per chown afferma:

suppress most error messages

Come vedi più è la parola chiave, quindi non elimina i tutti messaggi di errore in Linux Mint né la descrizione di cosa -f fa con chown sotto Linux Mint come dettagliato ed esplicito come in macOS.

Quindi, mentre in Linux Mint, non come root o usando sudo , chown -f root non_existant_filename non produrrà un errore, tuttavia, il suo codice di uscita è 1 , non 0 com'è con macOS% esempio dichown sopra usando -f all'interno del suo contesto definito.

    
risposta data 18.04.2017 - 05:04
fonte

Leggi altre domande sui tag