Ha, ha. Dobře jim tak. DevOps v plné parádě. Spouštět takový sračky jako root může jen slabomyslný jedinec. Děkujenme blbům za geniální instalace typu: "curl https://npmjs.org/install.sh | sudo sh"
Ehm...
mhepp@linux:/$ id uid=1000(mhepp) gid=1000(mhepp) skupiny=1000(mhepp),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),108(netdev) mhepp@linux:/$ ls -ld /etc/ drwxr-xr-x 1 root root 4486 úno 23 10:58 /etc/ mhepp@linux:/$ chown mhepp.mhepp /etc/ chown: změnění vlastnictví souboru '/etc/': Operace není povolena hepp@thrain:/$ ls -ld /etc/ drwxr-xr-x 1 root root 4486 úno 23 10:58 /etc/ mhepp@linux:/$
Proces pustěný pod uživatelem nemůže změnit vlastníka souboru, který patří uživateli root. Takže pokud npm pustím pod uživatelem, tak se nic nestane. Problém může nastat, když si to vyžádá root přístup a já mu ho dám. Potom ale proces neběží pod uživatelem, ale pod root-em.
V macOS su /etc /var atd. len symlinky na adresare v /private
lrwxr-xr-x 11 root 2017-11-21 09:42 etc -> private/etc
lrwxr-xr-x 11 root 2017-11-21 09:42 tmp -> private/tmp
lrwxr-xr-x 11 root 2017-11-21 09:42 var -> private/var
To private bolo ak si dobre pamatam uz ovela skor nez SIP a zrejme to je chranene tiez.
Tak npm a podobné nástroje by se měly používat k instalaci balíčků pouze do home uživatele (jako je to běžné třeba u mavenu) a system-wide instalaci by měly nechat na balíčkovacím nástroji operačního systému. Chápu, že to není vždy možné a že je ne vždy jsou v repositářích distribuce aktuální balíčky, ale tohle byla jen otázka času, kdy se něco porouchá a bude průšvich...