[Slackbuilds-users] Amendments to syncthing scripts to accommodate running as non-root user

Matteo Bernardini matteo.bernardini at gmail.com
Mon Jun 8 12:39:54 UTC 2015


2015-06-08 14:34 GMT+02:00 Sebastian Arcus <s.arcus at open-t.co.uk>:
> As per my previous post to the SBo list, syncthing developers recommend that
> it should never be run as root - even when run as a demon - as it has not
> been designed with that level of security in mind.
>
> As the uid:gid 307 has been approved for the syncthing user/group on SBo,
> may I suggest the patches below to accommodate this user/group in the
> scripts provided with syncthing on SBo. The patches do the following:
>
> 1. Amend rc.syncthing to start syncthing as "syncthing" user.
> 2. Provide a configurable location for the home/config directory under
> /var/lib - as it is the custom for data owned by demons (as opposed to real
> human users) under Linux.
> 3. Amend syncthing.Slackbuild script to request the creation of the
> syncthing user/group, if it doesn't exit.
> 4. Amend the syncthing.Slackbuild script to create the following dirs and
> set their permissions accordingly: /var/lib/syncthing/config and
> /var/run/syncthing
>
> I hope the above makes sense. If any of it is incorrect or unsuitable, could
> you please suggest alternatives.
>
> ##############################################
>
> --- syncthing.SlackBuild        2015-06-08 13:03:54.758485646 +0100
> +++ syncthing.SlackBuild.new    2015-06-08 13:18:32.529446783 +0100
> @@ -49,6 +49,14 @@
>
>  set -e
>
> +# Check if the syncthing user and group exist. If not, then bail.
> +if [ "$(id -g syncthing 2> /dev/null)" != "307" -o "$(id -u syncthing 2>
> /dev/null)" != "307" ]; then
> +  echo "  You must have an 'syncthing' user and group to run this script."
> +  echo "    # groupadd -g 307 exim"
> +  echo "    # useradd -d /var/lib/syncthing -g syncthing -s /bin/bash -u
> 307 syncthing"
> +  exit 1
> +fi
> +
>  rm -rf $PKG
>  mkdir -p $TMP $PKG $OUTPUT
>  cd $TMP
> @@ -72,8 +80,9 @@
>  mkdir -p $PKG/etc/rc.d
>  cat $CWD/rc.syncthing > $PKG/etc/rc.d/rc.syncthing.new
>
> -mkdir -p $PKG/var/lib/syncthing
> +mkdir -p $PKG/var/lib/syncthing/config
>  mkdir -p $PKG/var/run/syncthing
> +chown -R syncthing.syncthing /var/{lib,run}/syncthing
>
>  mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
>  cp -a *.txt *.pdf $PKG/usr/doc/$PRGNAM-$VERSION
>
>
> ########################################################
>
> --- rc.syncthing        2015-06-08 13:04:20.237858026 +0100
> +++ rc.syncthing.new    2015-06-08 13:09:14.033831997 +0100
> @@ -2,6 +2,9 @@
>  #
>  # syncthing start script
>
> +$ST_USER="syncthing"
> +$CONFDIR="/var/lib/syncthing/config"
> +
>  case "$1" in
>         stop)
>                 PID=/var/run/syncthing/syncthing.pid
> @@ -15,7 +18,7 @@
>                 ;;
>         start)
>                 echo "Start Syncthing..."
> -               /usr/bin/syncthing
> +                su - $ST_USER -c "$SYNCTHING -home=$CONFDIR" &
>                 ;;
>         restart)
>                 $0 stop

I reserved the 307 uid/gid for syncthing as you asked, but I thought
you already contacted the maintainer about it first: I think he has
the last word on this.

Matteo


More information about the SlackBuilds-users mailing list