Page 1 of 2

Jailed SSH - NPM hinzufügen

Posted: Sun 12. Jun 2022, 21:26
by v3ng
Hi,

Ich versuche aktuell NPM in der Jailed SSH Umgebung zu installieren.
Ich habe mich an der von Alex geschriebenen Anleitung orientiert um die Abhängigkeiten rauszufinden, allerdings beschwert er sich dennoch, dass /lib/cli.js fehlen würde.

Hat jemand eine Idee, welche Pfade hier fehlen?


Danke!

Code: Select all

iankjozadi@fra1:/www$ npm
internal/modules/cjs/loader.js:818
  throw err;
  ^

Error: Cannot find module '../lib/cli.js'
Require stack:
- /usr/bin/npm
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:815:15)
    at Function.Module._load (internal/modules/cjs/loader.js:667:27)
    at Module.require (internal/modules/cjs/loader.js:887:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at Object.<anonymous> (/usr/bin/npm:2:1)
    at Module._compile (internal/modules/cjs/loader.js:999:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1027:10)
    at Module.load (internal/modules/cjs/loader.js:863:32)
    at Function.Module._load (internal/modules/cjs/loader.js:708:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:60:12) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [ '/usr/bin/npm' ]
}

Code: Select all

root@fra1:~ # locate /lib/cli.js
/usr/share/nodejs/npm/lib/cli.js
Zusätzliche Binärdateien

Code: Select all

/usr/bin/composer
/usr/bin/npm
/usr/bin/env
/usr/bin/node
Zusätzliche Pfade

Code: Select all

/usr/share/php/
/usr/share/nodejs
/usr/share/npm/
/usr/include/nodejs
/usr/include/node
/usr/lib/nodejs

Re: Jailed SSH - NPM hinzufügen

Posted: Mon 13. Jun 2022, 19:41
by v3ng
Noch ein ergänzendes Problem mit Composer und den zusätzlichen PHP Versionen:

Composer Aufruf mittels der PHP Version der Distribution funktioniert Problemlos

Code: Select all

iankjozadi@fra1:/home/users/iankjozadi$ /usr/bin/composer
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer 2.0.9 2021-01-27 16:09:27

Leider jedoch mit keiner der von Keyhelp bereitgestellten zusätzlichen PHP Versionen, was etwas ungünstig ist da composer oftmals PHP 8.0+ voraussetzt.
Das lässt sich zwar ignorieren, es wäre dennoch interessant zu wissen, woran es hier scheitert

Code: Select all

keyhelp-php81 /usr/bin/composer 
PHP Warning:  require(Composer/autoload.php): Failed to open stream: No such file or directory in /usr/bin/composer on line 9
PHP Fatal error:  Uncaught Error: Failed opening required 'Composer/autoload.php' (include_path='.:') in /usr/bin/composer:9
Stack trace:
#0 {main}
  thrown in /usr/bin/composer on line 9


Re: Jailed SSH - NPM hinzufügen

Posted: Tue 14. Jun 2022, 09:42
by Alexander
Wie hast du Composer installiert?
Ist der Benutzer gejailed?

Ich hab jetzt einfach zu einem anderen Benutzer gewechselt und kann ihn problemlos über mit einem zusätzlichen Interpreter aufrufen.

Code: Select all

keyhelp@dev01:/$ keyhelp-php80 /usr/local/bin/composer 
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.3.5 2022-04-13 16:43:00

Re: Jailed SSH - NPM hinzufügen

Posted: Tue 14. Jun 2022, 11:24
by v3ng
Genau, der Benutzer ist gejailed.
Composer habe ich über den Paketmanager installiert

Re: Jailed SSH - NPM hinzufügen

Posted: Tue 14. Jun 2022, 11:45
by Alexander
Hab ich gerade auch nochmal nachgestellt, funktioniert auch.

Installier Composer mal nach dieser Anleitung: https://getcomposer.org/download/
Über die Paketverwaltung ist der Composer i.d.R. ohnehin zu alt für manche Sachen, die man dann später ggf. braucht.

Re: Jailed SSH - NPM hinzufügen

Posted: Tue 14. Jun 2022, 12:07
by v3ng
Ich habe composer nun mal manuell installiert, interessanterweise werden nun in keinem der jailed accounts die zusätzlichen Keyhelp PHP interpreter gefunden.
Scheint allerdings nicht mit composer zusammenzuhängen

Code: Select all

keyhelp-php80
-bash: keyhelp-php80: command not found

Re: Jailed SSH - NPM hinzufügen

Posted: Tue 14. Jun 2022, 12:46
by Alexander
Das war beim Testen der zusätzliche Inhalt meiner Chroot (Konfiguration -> Eingeschränkte SSH-Umgebung -> Zusätzliche Binärdateien):

Code: Select all

/usr/local/bin/composer
/opt/keyhelp/php/8.0/bin/php

Und aufgerufen hab ich mit

Code: Select all

/opt/keyhelp/php/8.0/bin/php /usr/local/bin/composer

Die "Shortcuts" hab ich jetzt nicht probiert.

Re: Jailed SSH - NPM hinzufügen

Posted: Tue 14. Jun 2022, 13:00
by v3ng
Müssen die PHP interpreter einzeln inkludiert werden?
Ich hätte gedacht, Keyhelp macht das automatisch.

Ich habe nun mal alle PHP Versionen einzeln eingebunden, ein direkter Aufruf dieser funktioniert auch, allerdings weiterhin keiner der Shortcuts.


Zusätzliche Binärdateien:

Code: Select all

/usr/local/bin/composer
/usr/bin/npm
/usr/bin/env
/usr/bin/node
/opt/keyhelp/php/8.0/bin/php
/opt/keyhelp/php/8.1/bin/php
/opt/keyhelp/php/7.4/bin/php
Zusätzliche Pfade:

Code: Select all

/opt/keyhelp/php

Composer scheint allerdings zu funktionieren, abgesehen von den extension warnings,

Code: Select all

iankzedafo@fra1:/www$ /opt/keyhelp/php/8.1/bin/php /usr/local/bin/composer 
PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902/imap.so' (tried: /opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902/imap.so (libc-client.so.2007e: cannot open shared object file: No such file or directory), /opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902//opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902/imap.so.so (/opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902//opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902/imap.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902/memcached.so' (tried: /opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902/memcached.so (libmemcached.so.11: cannot open shared object file: No such file or directory), /opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902//opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902/memcached.so.so (/opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902//opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902/memcached.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902/tidy.so' (tried: /opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902/tidy.so (libtidy.so.5deb1: cannot open shared object file: No such file or directory), /opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902//opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902/tidy.so.so (/opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902//opt/keyhelp/php/8.1/lib/php/extensions/no-debug-non-zts-20210902/tidy.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
   ______
  / ____/___  ____ ___  ____  ____  ________  _____
 / /   / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__  )  __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
                    /_/
Composer version 2.3.7 2022-06-06 16:43:28


Re: Jailed SSH - NPM hinzufügen

Posted: Tue 14. Jun 2022, 15:32
by tab-kh
Was meinst du mit "einzeln einbinden". Natürlich macht das Keyhelp automatisch, wenn in Einstellungen->Konfiguration->PHP-Interpreter die gewünschten Versionen ausgewählt/installiert sind. Wie hast du denn den Composer installiert, damit man mal versuchen kann das nachzuvollziehen?

Meine über Keyhelp installierten zusätzlichen PHP-Interpreter funktionieren jedenfalls, so dass ich das Problem zunächst bei Composer bzw seiner Installation oder beim verwendeten User verorten würde.

Re: Jailed SSH - NPM hinzufügen

Posted: Tue 14. Jun 2022, 15:39
by Alexander
Ich habe nun mal alle PHP Versionen einzeln eingebunden, ein direkter Aufruf dieser funktioniert auch, allerdings weiterhin keiner der Shortcuts.
Damit die Shortcus funktionieren, füg mal unter "Konfiguration -> Eingeschränkte SSH-Umgebung -> Zusätzliche Pfade" das ein:

Code: Select all

/usr/bin/keyhelp-php81
/usr/bin/keyhelp-php80
/usr/bin/keyhelp-php74

Gibts einen Grund für das hier in deinen zusätzlichen Pfaden?
Nämlich erst wenn ich das mit dazu nehme, erhalte ich diese Warnings. (unable to load...)

Code: Select all

/opt/keyhelp/php

Wenn du es wieder rausnehmen willst, gilt dieser Text im KeyHelp:
KeyHelp wrote:Beachten Sie, dass die zusätzlichen Inhalte nicht automatisch deinstalliert werden. Sobald die eingeschränkte SSH-Umgebung aktualisiert wird, bleiben die Dateien darin enthalten, bis sie für einen bestimmten Benutzer wieder vollständig deaktiviert wird.
Zum "deinstallieren" aus den Chroot-Umgebungen dann also:
1)

Code: Select all

rm -fr /home/users/*/opt/keyhelp/php
2)
Einmal unter "Konfiguration -> Eingeschränkte SSH-Umgebung" auf "Speichern" klicke, so das die zusätzlichen PHP Binaries wieder in die Chroot geschrieben werden.

Re: Jailed SSH - NPM hinzufügen

Posted: Tue 14. Jun 2022, 15:55
by v3ng
/opt/keyhelp/php hatte ich während dem testen mit eingefügt um zusehen ob das Abhilfe schafft.

Nach dem manuellen löschen, sowie entfernen der Pfade scheint Composer jetzt problemlos zu laufen.
Die Shortcuts laufen nach dem manuellen hinzufügen der Pfade auch Problemlos, danke!


NPM bekomme ich allerdings weiterhin nicht zum laufen, meine zusätzlichen Pfade sehen mittlerweile auch etwas wild aus, da habe ich während dem Testen auch versucht ob das eventuell hilft

Zusätzliche Binärdateien

Code: Select all

/usr/local/bin/composer
/usr/bin/npm
/usr/bin/env
/usr/bin/node
/opt/keyhelp/php/8.0/bin/php
/opt/keyhelp/php/8.1/bin/php
/opt/keyhelp/php/7.4/bin/php

Zusätzliche Pfade

Code: Select all

/usr/share/nodejs
/usr/share/npm/
/usr/include/nodejs
/usr/include/node
/usr/lib/nodejs
/usr/bin/keyhelp-php81
/usr/bin/keyhelp-php80
/usr/bin/keyhelp-php74

Re: Jailed SSH - NPM hinzufügen

Posted: Tue 14. Jun 2022, 16:49
by Alexander
Bei NPM bin ich leider raus ;). Ggf. setzt hier ja jemand NPM ein und kann eher etwas dazu sagen. Oder müsste mich nochmal eingehender mit beschäftigen.

Re: Jailed SSH - NPM hinzufügen

Posted: Tue 14. Jun 2022, 17:22
by Alexander
Habs jetzt hinbekommen mit NPM/Node. Sagst mir zunächst auch hier nochmal, wie du NPM/Node installiert hast?

Re: Jailed SSH - NPM hinzufügen

Posted: Tue 14. Jun 2022, 17:32
by v3ng
NPM habe ich ebenfalls über den Paketmanager installiert, allerdings aus den standard repos und nicht denen von NodeJS/NPM direkt.
Würde ich aufgrund der alten version allerdings noch ändern

Re: Jailed SSH - NPM hinzufügen

Posted: Wed 15. Jun 2022, 11:04
by Alexander
Habe jetzt doch nur node zum laufen bekommen. Bei npm kommt die Fehlermeldung wie bei dir. Hätte schwören könne, das es gestern aber klappte, heute beim nachstellen nicht mehr.