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 startist 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:
> my-app@0.1.0-build.100 start /home/nodejs/my-app
> node-dev app
sh: 1: node-dev: Permission denied
npm ERR! spicoli-authorization@0.1.0-build.100 start: `node-dev app`
npm ERR! Exit status 126
Das shscheint zu sagen, dass es Fehler vom Shell-Befehl meldet. Ich glaube nicht, dass das Problem darin besteht, auf den npmBefehl 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-devsehen 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, chownden Link zu zu nodejs:nodejserstellen, 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-devspezifischer Fehler?
chmodeinen 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.npmVerzeichnis sicher ausgeführt werden würde. Ich konnte mir nicht vorstellen, wie ich das überprüfen soll, danode-devnpm nicht global installiert ist und bash dennode-devBefehl nicht erkennt . npm findet auf magische Weise heraus, wo und wie man anruft.