Comment exécuter le terminal en mode sudo?

20

J'essayais d'installer npm et j'ai eu

npm ERR! Error: EACCES, Permission denied '/usr/local/lib/node_modules'
npm ERR! 
npm ERR! Please use 'sudo' or log in as root to run this command.
npm ERR! 
npm ERR!     sudo npm "install" "." "--force" "--global"
npm ERR! 
npm ERR! or set the 'unsafe-perm' config var to true.
npm ERR! 
npm ERR!     npm config set unsafe-perm true

Comment se connecter en tant que root?

balexandre
la source
3
Ne vous connectez pas en tant que root. ;-)
Chris Page

Réponses:

39

sudo -sest beaucoup plus facile que d' activer l'utilisateur root car il démarre simplement un shell avec des autorisations root en une seule étape, à la demande. Non seulement il est rapide, mais il n'a pas besoin d'être reconfiguré lorsque vous n'avez pas besoin de l'utilisateur root et n'expose pas le serveur à plus de risques ou de vulnérabilités que l'ajout d'un utilisateur root impliquerait.

Bien sûr, npmvous pouvez simplement suivre les instructions et taper:

sudo -H npm "install" "." "--force" "--global"

Cela rend toujours la npmcommande "root" et ignore l'étape de déconnexion pour revenir hors de root.

bmike
la source
7
Mais mieux vaut sudo la seule commande plutôt que de l'exécuter sous un shell en tant que root
user151019
1
Pourriez-vous expliquer ce que sudo -sfait dans ce contexte?
KatieK
1
@KatieK La commande sudo -sexécute un shell en tant que root. La page de manuel contient ces détails et bien plus encore. J'ajouterai quelques mots car votre question est bonne et beaucoup d'autres pourraient aussi se demander ce qu'elle fait.
bmike
@bmike - C'est exactement ce dont j'avais besoin - merci!
KatieK
10

Je le fais généralement un peu différemment de la façon dont d'autres l'ont décrit ici. Imaginons que vous ayez deux utilisateurs. utilisateur standard: john admin utilisateur: kevin

Si John est connecté et veut s'exécuter en tant qu'utilisateur root (en tant que kevin), voici comment je le fais.

su kevin

lorsqu'on lui a demandé d'entrer le mot de passe de Kevin

sudo npm "install" "." "--force" "--global"

entrez à nouveau le mot de passe de Kevin.

karmatique
la source
Après avoir déjà changé d'utilisateur pour kevin, pourquoi avez-vous besoin du sudo?
cm2
Parce que Kevin n'est pas root, il est juste autorisé à devenir root.
Xvolks
4

Vous devez utiliser la sucommande (utilisateur du commutateur) pour devenir root, mais root est autorisé à devenir root, donc vous devez utiliser sudo(super-utilisateur ne). Par conséquent, tapez: sudo su.

[william@NCC-1701 ~]$ sudo su
Password:
[root@NCC-1701 /Users/william]$ 

Si vous n'avez jamais utilisé root auparavant, vous devez être pleinement conscient qu'un mauvais caractère tapé en tant que root supprimera l'intégralité de votre système d'exploitation, y compris vos photos, e-mails et documents financiers. Soyez extrêmement prudent et lisez toujours trois fois ce que vous tapez avant d'appuyer sur Entrée. Sinon, bonne chance!

wjl
la source
1
Je suis technicien de support AIX depuis 3 ans ... il y a 12 ans :) je sais des trucs mais les trucs simples ont disparu de ma tête :)
balexandre
J'allais capturer ma réponse avec un manuel convivial et des suggestions Google, mais je l'ai rapidement supprimé après avoir lu votre biographie. Bienvenue sur mac. Je n'arrive toujours pas à taper vm_stat après des années d'AIX. Je dois aimer les alias du shell ;-)
bmike
Pourquoi utiliser sudo suau lieu de sudo -s?
Chris Page
1
Tout ce que je vois est NCC-1701 lol
Shane Hsu
@ShaneHsu bon !! j'ai adoré votre commentaire ...
jmh
2

J'ai exécuté le même problème en essayant d'installer ionic, il vous suffit d'exécuter la même commande avec sudo:

sudo npm install -g ionic cordova

Le système demandera le mot de passe de l'utilisateur actuel. Fournissez-le et vous pourrez installer en tant que superutilisateur.

Maria Teresa Molero
la source