Próbuję uruchomić Node.js jako nieuprzywilejowany użytkownik ( dmitry
w tym przypadku). Mając nadzieję, że ktoś może potwierdzić lub, jeśli to konieczne, proszę rozwinąć to, co widzę poniżej:
Korzystając z Ubuntu 12.04 i nowszej wersji, napisałem skrypt zadania, który wywołuje:
exec sudo -u dmitry /usr/bin/node /home/dmitry/node/linkskeeper/app.js >> /var/log/linkskeeper.sys.log 2>&1
To oświadczenie żyje w pliku o nazwie /etc/init/linkskeeper.conf
i wzywam
$ sudo service linkskeeper start
Kiedy sprawdzam procesy, które się pojawiają, widzę:
$ ps aux | grep node
root 28349 0.0 0.2 40908 1672 ? Ss 16:51 0:00 sudo -u dmitry /usr/bin/node /home/dmitry/node/linkskeeper/app.js
dmitry 28350 2.1 2.1 641784 13268 ? Sl 16:51 0:00 /usr/bin/node /home/dmitry/node/linkskeeper/app.js
Wydaje się, że początkowy exec
wywołanie spawn pid 28349
jako root, który z kolei pojawia się 28350
z kontem nieuprzywilejowanym. Jeśli jest to właściwa narracja, ma to dla mnie sens. Co ciekawe, odniesienie [1] poniżej mówi, że to nie powinno działać na EC2, ale wydaje się działać dobrze.
Następnie dostosowuję exec
polecenie do:
exec su - dmitry -c '/usr/bin/node /home/dmitry/node/linkskeeper/app.js 2>&1 >> /home/dmitry/app.log'
Otrzymuję następujące informacje:
$ ps aux | grep node
dmitry 28371 0.0 0.2 37952 1312 ? Ss 16:57 0:00 su - dmitry -c /usr/bin/node /home/dmitry/node/linkskeeper/app.js 2>&1 >> /home/dmitry/app.log
dmitry 28372 0.0 0.2 19516 1712 ? S 16:57 0:00 -su -c /usr/bin/node /home/dmitry/node/linkskeeper/app.js 2>&1 >> /home/dmitry/app.log
dmitry 28375 3.2 2.6 639748 15916 ? Sl 16:57 0:00 /usr/bin/node /home/dmitry/node/linkskeeper/app.js
Nie rozumiem, co tu się dzieje z pids 28371
, 28372
i 28375
. Wszystkie są własnością dmitry
i nie rozumiem polecenia wymienionego dla 28372
, który zaczyna się kreską.
Powinienem zauważyć, że aplikacja Node.js działa poprawnie z obydwoma wywołaniami.
Referencje: [1] https://stackoverflow.com/questions/8312171/can-i-run-node-js-with-low-privileges
-
) i nie wywołuje nowej powłoki logowania wsu
polecenie zmienia polecenie pokazane w procesie28372
powyżej dobash -c /usr/bin/node /home/dmitry/node/linkskeeper/app.js 2>&1 >> /home/dmitry/app.log
, co ma więcej sensu niż-su -c
składnia, której w ogóle nie rozumiem.