NPM: Critical Linux filesystem permissions are being changed by latest version

> This issue has been happening ever since 5.7.0 was released a few hours ago. It seems to have completely broken my filesystem permissions and caused me to have to manually fix the permissions of critical files and folders

> By using sudo npm on a non-root user (root users do not have the same effect), filesystem permissions are being modified. For example, if I run sudo npm --help or sudo npm update -g, all commands starting with sudo npm cause my filesystem to change ownership of directories such as /etc, /usr, /boot, and other critical directories needed for running the system to the current user running the command.

github.com/npm/npm/issues/19883

JUST

Other urls found in this thread:

twitter.com/izs/status/911105515798720513
twitter.com/izs
twitter.com/SFWRedditVideos

>npm
>stability
pick one

>Linux is secure, I swear guise!

>muh special snowflake program needs special snowflake package manager

fucking hell

>npm
literally who?

>Javascript
Into the trash it goes

>sudo npm
why would you ever

>javascript
>sudo npm
AHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHAHA *breathes* HAHAHAHAHAHAHAHAHAHAHAHA

that's just (((jquery))) and (((npm))) being shit

Global packages

Had to google to find out wtf was this shit. Aaaand it's a Javascript tool. So it makes sense that the people who wrote it are absolute retards. Just like the people who can't write decent shit. Just the same brandead people who need Rust to write software that doesn't Nagasaki your computer.

Braindead. Fuck I need to trash this 8 bucks keyboard.

how the fuck can you use this piece of shit without sudo?

Linux is a kernel.

never had to use sudo with global packages

pip on the other hand...

>using package managers like pip or npm on linux
no, use your actual package manager, those are only useful on platforms like windows that don't have their own package manager

NodeJS is actually useful, it enables webdevs to write backends for testen or even production environments and with appjs it is even possible to port webapps to desktop

I hate that new trend. Every new language has to come with its own shitty package manager now.
And every fucking program pulls like thirty shitty microlibraries.

>it's useful because it lets people bring the disadvantages of the web to other areas, too!
is it not enough that the web is shit? why must be bring everything else down to it's level?

the web isn't shit, also it's cutting costs by allowing your frontend devs to do the backend also

Digital Socialism: Everyone can code now.

Name something more gay and soylent than JS and NPM

>allowing your frontend devs to do the backend
is that really what you want?

> cutting costs by mixing roles

Common mistake with expensive price

yes, money is where it's at
how come? node works fine

Ruby

it's like getting the people who design lego kits to also handle the lego piece manufacturing equipment

>sudo npm on a non-root user
What the fuck is with this wording. That IS running NPM as root user regardless.

Security doesn't include resisting the properly logged in administrative root account.

>That IS running NPM as root user regardless.
Well technically but not really. Using sudo will not transform your session into a new session, it's not equivalent to a login.

That's not really what it does.

Sudo just executes commands with root privileges & it can filter out some of these commands, and some users from using it. But it still just executes commands with root privileges.

There isn't anything special beyond that going on. If you do sudo bash, it's exactly that you started bash as root. Yea, without going through the usual login procedures with PAM or such, you just bypassed that with sudo.

>Yea, without going through the usual login procedures with PAM or such, you just bypassed that with sudo.
this is exactly what i'm on about and that's why sudo is not a full login

It's running as full root user, without the USUAL login procedure. It's an alternative ... execution as root ... procedure.
You can also call it an alternative login method if you invoke any interactive thing like bash or such.

PS: The point is either way that the program you invoke then DOES run as root.

It's *not* running on a non-root user, that's merely who triggered it. It runs fully as root.

>what is pip --user

>there is only one GNU/Linux, made only one way and you can't modify it
>this is what retards actually believe

>alternative login method, will call all hooks

Any mention of non-root literally does not matter if you first escalated privileges of the running NPM to unrestricted root. It doesn't even matter if you technically didn't log in but designed an alternative CPU hardware that just hooks the kernel in that way

If you run things under unrestricted root, no shit they can do everything root can.

You got endless options of NOT giving users and random javascript off the internet actual main system sudo / su permissions but instead run their software under their user account or a specialized dicking-with-javascript account, in systemd-nspawn, containers, VMs and so on and so forth.

Use that. But don't be surprised if things that have root access actually do things only root should be able to do. Like edit in /root or /etc.

I wasn't the one arguing sudo npm is a great idea and that it's restrictive, of course that shit's retarded.

5.7 is prerelease and you are idiot if you running that in production.

This. Language-specific package managers are cancer. The worst is cargo (for rust), which has features that can make distro packaging difficult/impossible for some libraries, and whose designers knew about this issue and just fucking ignored it.

Thank god for Nix, which manages to solve all the same problems as cargo/stack/pipenv/etc but in a relatively sane and consistent way.

It sounds like npm has some logic to figure out which user invoked `sudo npm`, and then does things on behalf of that user. Which is fucking absurd, but hey, this is npm we're talking about

I do very much like Scala's sbt, but the difference is that ultimately it is working with a (user account or global) cache directory and packages associated with each application.

It's well-isolated from causing effects ON the system indirectly. Very little can go wrong. And no need to run it as root.

Possibly, but even then I even find it fucking absurd that you run it as root in an actual non-isolated manner. It'd be okay if it was a systemd-nspawn chroot/jail thing or in a VM or container, but then probably nobody would have really complained. It'd have been some not so important bug, to be fixed at some point.

But no, they had to go and run it as root. On their live host OS. Why the hell does a javascript management thing need to fudge around as root? It belongs to some user account or a web server at most.

I thought sudo was basically
su root, execute command and exit? How does it remember the original user?

Because that's not how sudo works at all. sudo escalates your privileges, sources your .bashrc and retains environment variables.

>Why the hell does a javascript management thing need to fudge around as root?
To install libraries or binaries into the global search paths.

This isn't all that unreasonable. Pip and Cabal likewise need root if you want to install a package system-wide. The weird part is that the NPM devs apparently think they need to chown some files back to the invoking user as part of this process, which makes me wonder just what the fuck they're trying to do.

>I thought sudo was basically su root, execute command and exit?
sudo is much more complicated than `su -c`.

>How does it remember the original user?
It sets an environment variable $SUDO_USER before running the command.

Ok thanks. Guess I'm retarded

>To install libraries or binaries into the global search paths.
I find that unreasonable, but if you need to do this you just include the npm / pip / cabal user's own directories into that search path.

These tools do not need to be able to read/write to everything from raw block devices over /etc to every user's home and every path whatsoever. So they should not be able to. They just and only should manage their own scripts.

>working with jewescript
the ones affected deserve it.

twitter.com/izs/status/911105515798720513
twitter.com/izs
That's NPM CEO

> skin color clearly will affect the quality of presentations on JavaScript testing
One more for the "North American & crazy as fuck" fetish folder.

T H I S W A S T H E W O R K O F S J W S

C H E C K W H O R E L E A S E D 5 . 7

REEEEEEEEEEEEEEEEEEE

This is what FB is built with, Sup Forums.

Committed by a WOMAN

or someone who claims to be one

It's just too bad your bistro (and by that I mean every bistro) doesn't remotely have the manpower to package even the complete software, let alone all libraries. No, bistro package managers are the wrong strategies. In fact, I wish they'd focus on the most important packages and get them right, unlike, say, Plebian.

No, specialized ecosystem package managers are the right ideas, it's just that Node and Python memers are plain incompetent. As to be expected of script kiddies.

>use your actual package manager
So you end up relying to distro maintainers instead? Also, when some packages aren't in the repos and you have to use pip/npm/whatever the result is making a mess with some packages user/system managed by the language, some from the distro and some from both. The alternative is making your own packages which is unproductive. (My experience with apt, pacman, yum/dnf.)

>windows that don't have
Windows though has superior OneGet which allows you to use the languages' package manager from a unified front-end. You have to rely only on the developers themselves instead of NEETs pretending they know stuff better than the ones making them.

There is nothing wrong with pip. You can either use it for system or user installations and allows independent versions of packages. Coupled with Python's virtual environment module you can work better than with most distro package managers.

>There is nothing wrong with pip.
I vaguely remember them having similar problems node had. That said, I'm not sure this was about pip.