NFS user

Grappig dat het hetzelfde doet. Maar het lijkt me beter om het hier volgens de man page te adviseren. De mensen gaan anders denken dat je altijd zo slordig met de volgorde kunt omspringen, hetgeen zeker niet het geval is.

Helemaal mee eens. Ik zie wel 's shell scripts (bash) van studenten, daar gaat 't ook nogal 's mis met opties op de verkeerde plek. Ééntje deed 't echt prachtig: SYNOPSIS van commando X in commentaar, variabelen vullen, commando X uitvoeren, volgende commando. Zij vertelde me later dat die scripts nog steeds wel 's inkeek.

Zelf ook maar snel wennen aan de nieuwe plek van “-R”. Je zult net zien dat dit wel werkt op openSUSE, maar niet op Debian.

Dit zit me toch dwars (doorwaakte nacht lol!).

Theorie

De man page:

SYNOPSIS

chown [OPTION]… [OWNER]:[GROUP]] FILE…
chown [OPTION]… --reference=RFILE FILE…

Dat betekent volgens mij dat

chown mgi aap -R

het eigenaarschap van de bestanden aap en -R moet wijzigen.
En als bestand -R niet bestaat, verwacht ik een foutmelding.

Praktijk

boven:/home/henk/test/t-chown # l
total 16
drwxr-xr-x  2 henk wij 4096 Feb 20 09:57 -R/
drwxr-xr-x  4 henk wij 4096 Feb 20 09:57 ./
drwxr-xr-x 12 henk wij 4096 Feb 20 09:54 ../
drwxr-xr-x  2 henk wij 4096 Feb 20 09:54 aap/
boven:/home/henk/test/t-chown # chown mgi aap -R
boven:/home/henk/test/t-chown # l
total 16
drwxr-xr-x  2 henk wij 4096 Feb 20 09:57 -R/
drwxr-xr-x  4 henk wij 4096 Feb 20 09:57 ./
drwxr-xr-x 12 henk wij 4096 Feb 20 09:54 ../
drwxr-xr-x  2 mgi  wij 4096 Feb 20 09:54 aap/
boven:/home/henk/test/t-chown # 

De bestandsnaam -R wordt foutief geïnterpreteerd! Zoals jij reeds al “feature” presenteerde.

Ik vrees echter dat dit aanmelden als bug verspilde tijd is.


laptop:~ # mkdir -p test/dir
laptop:~ # touch test/file-1
laptop:~ # touch test/dir/file-2
laptop:~ # ls -lR test
test:
totaal 4
drwxr-xr-x 2 root root 4096 20 feb 13:55 dir
-rw-r--r-- 1 root root    0 20 feb 13:55 file-1


test/dir:
totaal 0
-rw-r--r-- 1 root root 0 20 feb 13:55 file-2
laptop:~ # chown knurpht:users test -R
laptop:~ # ls -lR test
test:
totaal 4
drwxr-xr-x 2 knurpht users 4096 20 feb 13:55 dir
-rw-r--r-- 1 knurpht users    0 20 feb 13:55 file-1


test/dir:
totaal 0
-rw-r--r-- 1 knurpht users 0 20 feb 13:55 file-2
laptop:~ # chmod 700 test -R
laptop:~ # ls -lR test
test:
totaal 4
drwx------ 2 knurpht users 4096 20 feb 13:55 dir
-rwx------ 1 knurpht users    0 20 feb 13:55 file-1


test/dir:
totaal 0
-rwx------ 1 knurpht users 0 20 feb 13:55 file-2
laptop:~ # chown root test
laptop:~ # ls -lR test
test:
totaal 4
drwx------ 2 knurpht users 4096 20 feb 13:55 dir
-rwx------ 1 knurpht users    0 20 feb 13:55 file-1


test/dir:
totaal 0
-rwx------ 1 knurpht users 0 20 feb 13:55 file-2



Zoals gezegd, het is droef. Volgnes de man page zou er:
a) een foutmelding moten komen omdat het bestand -R niet bestaat;
b) alleen van test zouden user:group verander moeten worden en niet van de bestanden daarin.

Gaan we dit doen: Report chown bugs to bug-coreutils@gnu.org ?

Denk ik niet. Je kunt nix met een dir of file genaamd “-R” zonder die als “./-R” te benaderen:


laptop:~ # touch -R
touch: ongeldige optie -- 'R'
Typ 'touch --help' voor meer informatie.
laptop:~ # touch \-R
touch: ongeldige optie -- 'R'
Typ 'touch --help' voor meer informatie.
laptop:~ # touch ./-R

En waar die “-R” staat, maakt niet uit. Niet voor chown, chgrp, chmod:


laptop:~ # chgrp users test/ -R
laptop:~ # ls -lR test
test:
totaal 4
drwx------ 2 knurpht users 4096 20 feb 13:55 dir
-rwx------ 1 knurpht users    0 20 feb 13:55 file-1


test/dir:
totaal 0
-rwx------ 1 knurpht users 0 20 feb 13:55 file-2
laptop:~ # chgrp www -R test/
laptop:~ # ls -lR test
test:
totaal 4
drwx------ 2 knurpht www 4096 20 feb 13:55 dir
-rwx------ 1 knurpht www    0 20 feb 13:55 file-1


test/dir:
totaal 0
-rwx------ 1 knurpht www 0 20 feb 13:55 file-2
laptop:~ # 



en dan naar de “-R” dir, we weten dat linux alleen maar files kent, dus dat geloven we wel:


laptop:~ # mkdir -p ./-R/-R
laptop:~ # ls -lR ./-R
./-R:
totaal 4
drwxr-xr-x 2 root root 4096 20 feb 16:48 -R


./-R/-R:
totaal 0
laptop:~ # chown knurpht -R ./-R
laptop:~ # ls -lR ./-R
./-R:
totaal 4
drwxr-xr-x 2 knurpht root 4096 20 feb 16:48 -R


./-R/-R:
totaal 0



Ik denk dat de er een regeltje in de man pages bij moet … Weet zeker dat er ander commando is, waar explicitiet bij staat dat de --opties op elke plek achter het commando mogen staan.

Dat ben ik niet met je eens. Ik kan zo’nn bestand bijv. heel goed aanmaken met touch of mkdir en dat heb ik ook gedaan in mijn voorbeeld: Het is ook als bestandsnaam gewoon toegestaan.

henk@boven:~/test/t-chown> l
totaal 12
drwxr-xr-x  3 henk wij 4096 20 feb 17:57 ./
drwxr-xr-x 12 henk wij 4096 20 feb 09:54 ../
drwxr-xr-x  2 henk wij 4096 20 feb 09:54 aap/
henk@boven:~/test/t-chown> mkdir -- -R
henk@boven:~/test/t-chown> l
totaal 16
drwxr-xr-x  4 henk wij 4096 20 feb 17:57 ./
drwxr-xr-x 12 henk wij 4096 20 feb 09:54 ../
drwxr-xr-x  2 henk wij 4096 20 feb 09:54 aap/
drwxr-xr-x  2 henk wij 4096 20 feb 17:57 -R/
henk@boven:~/test/t-chown> touch -- -F
henk@boven:~/test/t-chown> l
totaal 16
drwxr-xr-x  4 henk wij 4096 20 feb 17:57 ./
drwxr-xr-x 12 henk wij 4096 20 feb 09:54 ../
drwxr-xr-x  2 henk wij 4096 20 feb 09:54 aap/
-rw-r--r--  1 henk wij    0 20 feb 17:57 -F
drwxr-xr-x  2 henk wij 4096 20 feb 17:57 -R/
henk@boven:~/test/t-chown>

En chown kan ze ook gewoon bewerken:

boven:/home/henk/test/t-chown # l
total 16
-rw-r--r--  1 henk wij    0 Feb 20 17:57 -F
drwxr-xr-x  2 henk wij 4096 Feb 20 17:57 -R/
drwxr-xr-x  4 henk wij 4096 Feb 20 17:57 ./
drwxr-xr-x 12 henk wij 4096 Feb 20 09:54 ../
drwxr-xr-x  2 henk wij 4096 Feb 20 09:54 aap/
boven:/home/henk/test/t-chown # chown -- mgi *
boven:/home/henk/test/t-chown # l
total 16
-rw-r--r--  1 mgi  wij    0 Feb 20 17:57 -F
drwxr-xr-x  2 mgi  wij 4096 Feb 20 17:57 -R/
drwxr-xr-x  4 henk wij 4096 Feb 20 17:57 ./
drwxr-xr-x 12 henk wij 4096 Feb 20 09:54 ../
drwxr-xr-x  2 mgi  wij 4096 Feb 20 09:54 aap/
boven:/home/henk/test/t-chown #

De fout zit hem er in dat de documentatie niet klopt met wat er gebeurt. Dus of de documentatie is fout, of het programma. Dus altijd een bug.

Het geniepige is dat in de volgende situatie:

boven:/home/henk/test/t-chown # l
total 16
drwxr-xr-x  2 mgi  wij 4096 Feb 20 17:57 -R/
drwxr-xr-x  4 henk wij 4096 Feb 20 18:19 ./
drwxr-xr-x 12 henk wij 4096 Feb 20 09:54 ../
drwxr-xr-x  2 mgi  wij 4096 Feb 20 09:54 aap/
boven:/home/henk/test/t-chown # chown henk *
boven:/home/henk/test/t-chown # l
total 16
drwxr-xr-x  2 mgi  wij 4096 Feb 20 17:57 -R/
drwxr-xr-x  4 henk wij 4096 Feb 20 18:19 ./
drwxr-xr-x 12 henk wij 4096 Feb 20 09:54 ../
drwxr-xr-x  2 henk wij 4096 Feb 20 09:54 aap/
boven:/home/henk/test/t-chown #

het chown statment eerst wordt geëxpandeerd tot

chown henk -R aap

en daarna interpreteert chown de -R als optie. Volkomen tegen de intuitie ook nog eens.

Maar ik ben het met je eens dat aanmelden als bug geen zin heeft (zoals eerder door mij geconstateerd). Men is er waarschijnlijk heel erg van overtuigd dat dit een feature is. Zelfs een “undocumented feature” >:)

Ik lees net hier er het e.e.a. over Filenames and Pathnames in Shell (bash, dash, ash, ksh, and so on): How to do it Correctly . Ergens wringt 't. Maar “very minor issue”, ik laat bestandsnamen nooit met leestekens beginnen.

Ik ben de link even doorgeraced. Interessant. Ik weet dat het soms (bijna) onmogelijk is om in een script alles goed te verwerken v.w.b. spaties e.d. Vooral als je die bestandsnamen niet zelf in de hand hebt. En hij illustreert dat goed.

Ik begrijp niet wat hij met UTF-8 en non-UTF-8 (waaronder kennelijk de control characters vallen) bedoelt. UTF-8 is alleen een methode om Unicode character waardes (points) om te zetten in één of meer bytes. De methode is zo gekozen dat de ASCII tabel samenvalt met de de eerste 128 characters van de Unocode tabellen en dat blijft zo na omzetten met UTF-8. En die bevat dus ook de van ouds bekende control characters.

Ik gebruik uiteraard ook normaal geen bestandsnamen beginnend met - e.d. Maar hier gaat het om het principe.

Blijft dat chown (en vrienden) volgens de man pagina zouden moeten stoppen met argumenten beginend met - als opties te behandelen na het eerste niet optie argument.

Er zjn wel meer van die kleine inconsistenties mbt tot “-”, “–”, “-- -”. Ik ga dan van alles zitten proberen en proberen te beredeneren.

Ik noteer ze in iedergeval alle 2 komt het altijd wel goed:),en na even aanzien moet ik zeggen dat uid veranderen zeer nuttig was op PC en Laptop.:slight_smile: