From 6aefd00751dbc4a20e29ffc6cffaab6bb948f951 Mon Sep 17 00:00:00 2001 From: Bob Mottram Date: Fri, 13 Apr 2018 12:35:48 +0100 Subject: [PATCH] Don't install scuttlebot as root --- src/freedombone-app-scuttlebot | 86 ++++++++++++++++++--------------- src/freedombone-image-customise | 2 +- 2 files changed, 48 insertions(+), 40 deletions(-) diff --git a/src/freedombone-app-scuttlebot b/src/freedombone-app-scuttlebot index 8d1f7aa4..69f48045 100755 --- a/src/freedombone-app-scuttlebot +++ b/src/freedombone-app-scuttlebot @@ -56,7 +56,7 @@ function logging_off_scuttlebot { } function scuttlebot_create_invite { - invite_string=$(su -c "sbot invite.create 1" - scuttlebot | sed 's/"//g') + invite_string=$(su -c "/etc/scuttlebot/node_modules/.bin/sbot invite.create 1" - scuttlebot | sed 's/"//g') clear echo -e "\\n\\nYour Scuttlebot invite code is:\\n\\n${invite_string}\\n\\n" @@ -382,37 +382,35 @@ function mesh_install_scuttlebot { get_npm_arch mesh_setup_npm - cat < "$rootdir/usr/bin/install_scuttlebot" -#!/bin/bash -export PATH=~/.npm-global/bin:$PATH -export NPM_CONFIG_PREFIX=~/.npm-global -source ~/.profile -if ! npm install --unsafe-perm --verbose --arch=$NPM_ARCH -g scuttlebot@${SCUTTLEBOT_VERSION}; then - exit 1 -fi -if ! npm install --arch=$NPM_ARCH -g git-ssb; then - exit 2 -fi -if ! npm install --arch=$NPM_ARCH -g git-remote-ssb; then - exit 3 -fi -EOF - chroot "$rootdir" /bin/chmod +x /usr/bin/install_scuttlebot - chroot "$rootdir" /usr/bin/install_scuttlebot - rm "$rootdir/usr/bin/install_scuttlebot" - - if [ ! -f "$rootdir/usr/local/bin/sbot" ]; then - echo $'Scuttlebot was not installed' - exit 528253 - fi - if [ ! -d "$rootdir/etc/scuttlebot" ]; then mkdir -p "$rootdir/etc/scuttlebot" fi - # an unprivileged user to run as + # an unprivileged user to install and run as chroot "$rootdir" useradd -d /etc/scuttlebot/ scuttlebot + cat < "$rootdir/usr/bin/install_scuttlebot" +#!/bin/bash +cd /etc/scuttlebot || exit 1 +if ! npm install --arch=$NPM_ARCH scuttlebot@${SCUTTLEBOT_VERSION}; then + exit 2 +fi +if ! npm install --arch=$NPM_ARCH -g git-ssb; then + exit 3 +fi +if ! npm install --arch=$NPM_ARCH -g git-remote-ssb; then + exit 4 +fi +EOF + chroot "$rootdir" /bin/chmod +x /usr/bin/install_scuttlebot + chroot "$rootdir" su -c '/usr/bin/install_scuttlebot' - scuttlebot + rm "$rootdir/usr/bin/install_scuttlebot" + + if [ ! -f "$rootdir/etc/scuttlebot/node_modules/.bin/sbot" ]; then + echo $'Scuttlebot was not installed' + exit 528253 + fi + # daemon { echo '[Unit]'; echo 'Description=Scuttlebot (messaging system)'; @@ -424,7 +422,7 @@ EOF echo 'User=scuttlebot'; echo 'Group=scuttlebot'; echo "WorkingDirectory=/etc/scuttlebot"; - echo 'ExecStart=/usr/local/bin/sbot server'; + echo 'ExecStart=/etc/scuttlebot/node_modules/.bin/sbot server'; echo 'Restart=always'; echo 'Environment="USER=scuttlebot"'; echo ''; @@ -439,8 +437,27 @@ function install_scuttlebot { function_check install_nodejs install_nodejs scuttlebot - npm install -g scuttlebot@${SCUTTLEBOT_VERSION} - if [ ! -f /usr/local/bin/sbot ]; then + if [ ! -d /etc/scuttlebot ]; then + mkdir -p /etc/scuttlebot + fi + + # an unprivileged user to install and run as + useradd -d /etc/scuttlebot/ scuttlebot + + cat < /usr/bin/install_scuttlebot +#!/bin/bash +cd /etc/scuttlebot || exit 1 +if ! npm install scuttlebot@${SCUTTLEBOT_VERSION}; then + exit 2 +fi +exit 0 +EOF + chmod +x /usr/bin/install_scuttlebot + su -c '/usr/bin/install_scuttlebot' - scuttlebot + rm /usr/bin/install_scuttlebot + + if [ ! -f /etc/scuttlebot/node_modules/.bin/sbot ]; then + echo $'Scuttlebot was not installed' exit 528253 fi @@ -448,15 +465,6 @@ function install_scuttlebot { npm install -g git-ssb npm install -g git-remote-ssb - if [ ! -d /etc/scuttlebot ]; then - mkdir -p /etc/scuttlebot - fi - - npm install -g dat - - # an unprivileged user to run as - useradd -d /etc/scuttlebot/ scuttlebot - # daemon { echo '[Unit]'; echo 'Description=Scuttlebot (messaging system)'; @@ -468,7 +476,7 @@ function install_scuttlebot { echo 'User=scuttlebot'; echo 'Group=scuttlebot'; echo "WorkingDirectory=/etc/scuttlebot"; - echo 'ExecStart=/usr/local/bin/sbot server'; + echo 'ExecStart=/etc/scuttlebot/node_modules/.bin/sbot server'; echo 'Restart=always'; echo 'Environment="USER=scuttlebot"'; echo ''; diff --git a/src/freedombone-image-customise b/src/freedombone-image-customise index 30e9c41e..5582bcc7 100755 --- a/src/freedombone-image-customise +++ b/src/freedombone-image-customise @@ -945,7 +945,7 @@ initialise_mesh() { #install_librevault install_patchwork install_web_server - #mesh_install_scuttlebot + mesh_install_scuttlebot #install_ferment chroot "$rootdir" apt-get clean