refactor nodejs applications (npm & yarn) (#3876)

* add yarn & reorder

* add node-gyp & yarn files

* Create nodejs-common.profile

* Create yarn.profile

* refactor npm.profile

* add new profile: yarn

* read-only's for npm/yarn

Thanks to the [suggestion](https://github.com/netblue30/firejail/pull/3876#pullrequestreview-564682989) from @kmk3.

* ignore read-only's for npm

As [suggested](https://github.com/netblue30/firejail/pull/3876#pullrequestreview-564682989) by @kmk3.

* ignore read-only for yarn

As suggested in https://github.com/netblue30/firejail/pull/3876#pullrequestreview-564682989 by @kmk3.

* remove quiet from nodejs-common.profile

quiet should go into the caller profiles instead

* add quiet to npm.profile

Thanks @rusty-snake for the review.

* re-ordering some options

* re-ordering
This commit is contained in:
glitsj16 2021-01-11 17:32:31 +00:00 committed by GitHub
parent 2c85ded2b0
commit 37452ef1a7
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 109 additions and 49 deletions

View file

@ -195,4 +195,4 @@ Stats:
### New profiles: ### New profiles:
spectacle, chromium-browser-privacy, gtk-straw-viewer, gtk-youtube-viewer, gtk2-youtube-viewer, gtk3-youtube-viewer, straw-viewer, lutris, dolphin-emu, authenticator-rs, servo, tutanota-desktop, npm, marker spectacle, chromium-browser-privacy, gtk-straw-viewer, gtk-youtube-viewer, gtk2-youtube-viewer, gtk3-youtube-viewer, straw-viewer, lutris, dolphin-emu, authenticator-rs, servo, tutanota-desktop, npm, marker, yarn

View file

@ -11,6 +11,15 @@ noblacklist ${HOME}/.git-credentials
noblacklist ${HOME}/.gradle noblacklist ${HOME}/.gradle
noblacklist ${HOME}/.java noblacklist ${HOME}/.java
# Node.js
noblacklist ${HOME}/.node-gyp
noblacklist ${HOME}/.npm
noblacklist ${HOME}/.npmrc
noblacklist ${HOME}/.yarn
noblacklist ${HOME}/.yarn-config
noblacklist ${HOME}/.yarncache
noblacklist ${HOME}/.yarnrc
# Python # Python
noblacklist ${HOME}/.pylint.d noblacklist ${HOME}/.pylint.d
noblacklist ${HOME}/.python-history noblacklist ${HOME}/.python-history
@ -25,7 +34,3 @@ noblacklist ${HOME}/.cargo/registry
noblacklist ${HOME}/.cargo/.crates.toml noblacklist ${HOME}/.cargo/.crates.toml
noblacklist ${HOME}/.cargo/.crates2.json noblacklist ${HOME}/.cargo/.crates2.json
noblacklist ${HOME}/.cargo/.package-cache noblacklist ${HOME}/.cargo/.package-cache
# npm
noblacklist ${HOME}/.npm
noblacklist ${HOME}/.npmrc

View file

@ -310,6 +310,7 @@ read-only ${HOME}/.msmtprc
read-only ${HOME}/.mutt/muttrc read-only ${HOME}/.mutt/muttrc
read-only ${HOME}/.muttrc read-only ${HOME}/.muttrc
read-only ${HOME}/.nano read-only ${HOME}/.nano
read-only ${HOME}/.npmrc
read-only ${HOME}/.pythonrc.py read-only ${HOME}/.pythonrc.py
read-only ${HOME}/.reportbugrc read-only ${HOME}/.reportbugrc
read-only ${HOME}/.tmux.conf read-only ${HOME}/.tmux.conf
@ -318,6 +319,7 @@ read-only ${HOME}/.viminfo
read-only ${HOME}/.vimrc read-only ${HOME}/.vimrc
read-only ${HOME}/.xmonad read-only ${HOME}/.xmonad
read-only ${HOME}/.xscreensaver read-only ${HOME}/.xscreensaver
read-only ${HOME}/.yarnrc
read-only ${HOME}/_exrc read-only ${HOME}/_exrc
read-only ${HOME}/_gvimrc read-only ${HOME}/_gvimrc
read-only ${HOME}/_vimrc read-only ${HOME}/_vimrc

View file

@ -761,6 +761,7 @@ blacklist ${HOME}/.neverball
blacklist ${HOME}/.newsbeuter blacklist ${HOME}/.newsbeuter
blacklist ${HOME}/.newsboat blacklist ${HOME}/.newsboat
blacklist ${HOME}/.nicotine blacklist ${HOME}/.nicotine
blacklist ${HOME}/.node-gyp
blacklist ${HOME}/.npm blacklist ${HOME}/.npm
blacklist ${HOME}/.npmrc blacklist ${HOME}/.npmrc
blacklist ${HOME}/.nv blacklist ${HOME}/.nv
@ -849,6 +850,10 @@ blacklist ${HOME}/.xmr-stak
blacklist ${HOME}/.xonotic blacklist ${HOME}/.xonotic
blacklist ${HOME}/.xournalpp blacklist ${HOME}/.xournalpp
blacklist ${HOME}/.xpdfrc blacklist ${HOME}/.xpdfrc
blacklist ${HOME}/.yarn
blacklist ${HOME}/.yarn-config
blacklist ${HOME}/.yarncache
blacklist ${HOME}/.yarnrc
blacklist ${HOME}/.zoom blacklist ${HOME}/.zoom
blacklist /tmp/akonadi-* blacklist /tmp/akonadi-*
blacklist /tmp/ssh-* blacklist /tmp/ssh-*

View file

@ -0,0 +1,54 @@
# Firejail profile for Node.js
# Description: Common profile for npm/yarn
# This file is overwritten after every install/update
# Persistent local customizations
include nodejs-common.local
# Persistent global definitions
# added by caller profile
#include globals.local
blacklist /tmp/.X11-unix
blacklist ${RUNUSER}
ignore noexec ${HOME}
noblacklist ${PATH}/bash
noblacklist ${PATH}/dash
noblacklist ${PATH}/sh
include disable-common.inc
include disable-exec.inc
include disable-passwdmgr.inc
include disable-programs.inc
include disable-shell.inc
include disable-xdg.inc
include whitelist-runuser-common.inc
include whitelist-usr-share-common.inc
include whitelist-var-common.inc
caps.drop all
ipc-namespace
machine-id
netfilter
no3d
nodvd
nogroups
nonewprivs
noroot
nosound
notv
nou2f
novideo
protocol unix,inet,inet6,netlink
seccomp
seccomp.block-secondary
shell none
disable-mnt
private-dev
private-etc alternatives,ca-certificates,crypto-policies,host.conf,hostname,hosts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,locale,locale.alias,locale.conf,localtime,login.defs,mime.types,nsswitch.conf,pki,protocols,resolv.conf,rpc,services,ssl,xdg
private-tmp
dbus-user none
dbus-system none

View file

@ -1,64 +1,29 @@
# Firejail profile for npm # Firejail profile for npm
# Description: The Node.js Package Manager # Description: The Node.js Package Manager
quiet
# This file is overwritten after every install/update # This file is overwritten after every install/update
# Persistent local customizations # Persistent local customizations
include npm.local include npm.local
# Persistent global definitions # Persistent global definitions
include globals.local include globals.local
blacklist /tmp/.X11-unix ignore read-only ${HOME}/.npm-packages
blacklist ${RUNUSER} ignore read-only ${HOME}/.npmrc
noblacklist ${HOME}/.node-gyp
noblacklist ${HOME}/.npm noblacklist ${HOME}/.npm
noblacklist ${HOME}/.npmrc noblacklist ${HOME}/.npmrc
noblacklist ${PATH}/bash # If you want whitelisting, change ${HOME}/Projects below to your npm projects directory
noblacklist ${PATH}/dash
noblacklist ${PATH}/sh
ignore noexec ${HOME}
include disable-common.inc
include disable-exec.inc
include disable-passwdmgr.inc
include disable-programs.inc
include disable-shell.inc
include disable-xdg.inc
# If you want whitelisting, change the line below to your npm projects directory
# and uncomment the lines below. # and uncomment the lines below.
#mkdir ${HOME}/.node-gyp
#mkdir ${HOME}/.npm #mkdir ${HOME}/.npm
#mkfile ${HOME}/.npmrc #mkfile ${HOME}/.npmrc
#whitelist ${HOME}/.node-gyp
#whitelist ${HOME}/.npm #whitelist ${HOME}/.npm
#whitelist ${HOME}/.npmrc #whitelist ${HOME}/.npmrc
#whitelist ${HOME}/Projects #whitelist ${HOME}/Projects
#include whitelist-common.inc #include whitelist-common.inc
include whitelist-runuser-common.inc
include whitelist-usr-share-common.inc
include whitelist-var-common.inc
caps.drop all # Redirect
ipc-namespace include nodejs-common.profile
machine-id
netfilter
no3d
nodvd
nogroups
nonewprivs
noroot
nosound
notv
nou2f
novideo
protocol unix,inet,inet6,netlink
seccomp
seccomp.block-secondary
shell none
disable-mnt
private-dev
private-etc alternatives,ca-certificates,crypto-policies,host.conf,hostname,hosts,ld.so.cache,ld.so.conf,ld.so.conf.d,ld.so.preload,locale,locale.alias,locale.conf,localtime,login.defs,mime.types,nsswitch.conf,pki,protocols,resolv.conf,rpc,services,ssl,xdg
private-tmp
dbus-user none
dbus-system none

View file

@ -0,0 +1,29 @@
# Firejail profile for yarn
# Description: Fast, reliable, and secure dependency management
quiet
# Persistent local customizations
include yarn.local
# Persistent global definitions
include globals.local
ignore read-only ${HOME}/.yarnrc
noblacklist ${HOME}/.yarn
noblacklist ${HOME}/.yarn-config
noblacklist ${HOME}/.yarncache
noblacklist ${HOME}/.yarnrc
# If you want whitelisting, change ${HOME}/Projects below to your yarn projects directory and uncomment the lines below.
#mkdir ${HOME}/.yarn
#mkdir ${HOME}/.yarn-config
#mkdir ${HOME}/.yarncache
#mkfile ${HOME}/.yarnrc
#whitelist ${HOME}/.yarn
#whitelist ${HOME}/.yarn-config
#whitelist ${HOME}/.yarncache
#whitelist ${HOME}/.yarnrc
#whitelist ${HOME}/Projects
#include whitelist-common.inc
# Redirect
include nodejs-common.profile