Ich versuche, eine Anwendung node.js mit einem Benutzer mit geringen Berechtigungen zu starten. Alle mir bekannten Dateien gehören dem richtigen Benutzer und haben recht gut festgelegte Berechtigungen. Ich versuche, eine Skriptdatei zu verwenden, um dies zu tun. Ich rufe das Skript mit diesem Befehl auf
sudo su - nodejs ./start-apps.sh
Das Shell-Skript führt diesen Befehl aus, um die App zu starten
cd "/home/nodejs/my-app"
npm start
npm start
ist hier dokumentiert . Grundsätzlich wird der zu verwendende Befehl aus der Datei package.json abgerufen, die in unserer App folgendermaßen aussieht:
// snip
"scripts": {
"start": "node-dev app"
},
Und es spuckt den Fehler aus:
> [email protected] start /home/nodejs/my-app
> node-dev app
sh: 1: node-dev: Permission denied
npm ERR! [email protected] start: `node-dev app`
npm ERR! Exit status 126
Das sh
scheint zu sagen, dass es Fehler vom Shell-Befehl meldet. Ich glaube nicht, dass das Problem darin besteht, auf den npm
Befehl selbst zuzugreifen , da sonst die verweigerte Berechtigung vor jeder Ausgabe des Befehls npm ausgelöst würde. Aber um es auszuschließen, hier sind die Berechtigungen für den Befehl npm selbst:
$ sudo find / ! \( -type d \) -name npm -exec ls -lah {} \;
-rwxr-xr-x 1 root root 274 Nov 12 20:22 /usr/local/src/node-v0.10.22/deps/npm/bin/npm
-rwxr-xr-x 1 root root 274 Nov 12 20:22 /usr/local/lib/node_modules/npm/bin/npm
lrwxrwxrwx 1 root root 38 Jan 14 07:49 /usr/local/bin/npm -> ../lib/node_modules/npm/bin/npm-cli.js
Es sieht so aus, als ob jeder in der Lage sein sollte, es auszuführen.
Die Berechtigungen für node-dev
sehen folgendermaßen aus:
$ sudo find / ! \( -type d \) -name node-dev -exec ls -lah {} \;
-rwxr-xr-x 1 nodejs nodejs 193 Mar 3 2013 /home/nodejs/.npm/node-dev/2.1.4/package/bin/node-dev
-rw-r--r-- 1 nodejs nodejs 193 Mar 3 2013 /home/nodejs/spicoli-authorization/node_modules/node-dev/bin/node-dev
lrwxrwxrwx 1 root root 24 Jan 14 07:50 /home/nodejs/spicoli-authorization/node_modules/.bin/node-dev -> ../node-dev/bin/node-dev
Ich habe bereits versucht, chown
den Link zu zu nodejs:nodejs
erstellen, aber beim Scrip tritt der gleiche Fehler auf.
Gibt es ein Problem mit den Dateiberechtigungen, das ich bei den Binärdateien nicht sehe? Oder ist das ein npm
/ node-dev
spezifischer Fehler?
quelle
chmod
einen Symlink, ich habe nur versucht, den Besitzer zu wechseln. Ich werde jetzt die Hinrichtungssache ausprobieren - ich kann nicht glauben, dass ich das verpasst habe. Ich denke, ich dachte, dass die Kopie in meinem.npm
Verzeichnis sicher ausgeführt werden würde. Ich konnte mir nicht vorstellen, wie ich das überprüfen soll, danode-dev
npm nicht global installiert ist und bash dennode-dev
Befehl nicht erkennt . npm findet auf magische Weise heraus, wo und wie man anruft.