58fb413582e0a513c1819f66a36ccf47a3f36306
[arvados.git] / tools / arvbox / lib / arvbox / docker / createusers.sh
1 #!/bin/bash
2 # Copyright (C) The Arvados Authors. All rights reserved.
3 #
4 # SPDX-License-Identifier: AGPL-3.0
5
6 set -e -o pipefail
7
8 if ! grep "^arvbox:" /etc/passwd >/dev/null 2>/dev/null ; then
9     HOSTUID=$(ls -nd /usr/src/arvados | sed 's/ */ /' | cut -d' ' -f4)
10     HOSTGID=$(ls -nd /usr/src/arvados | sed 's/ */ /' | cut -d' ' -f5)
11
12     mkdir -p /var/lib/arvados/git /var/lib/gems \
13           /var/lib/passenger /var/lib/gopath \
14           /var/lib/pip /var/lib/npm
15
16     if test -z "$ARVBOX_HOME" ; then
17         ARVBOX_HOME=/var/lib/arvados
18     fi
19
20     groupadd --gid $HOSTGID --non-unique arvbox
21     groupadd --gid $HOSTGID --non-unique git
22     useradd --home-dir $ARVBOX_HOME \
23             --uid $HOSTUID --gid $HOSTGID \
24             --non-unique \
25             --groups docker \
26             --shell /bin/bash \
27             arvbox
28     useradd --home-dir /var/lib/arvados/git --uid $HOSTUID --gid $HOSTGID --non-unique git
29     useradd --groups docker crunch
30
31     if [[ "$1" != --no-chown ]] ; then
32         chown arvbox:arvbox -R /usr/local /var/lib/arvados /var/lib/gems \
33               /var/lib/passenger /var/lib/postgresql \
34               /var/lib/nginx /var/log/nginx /etc/ssl/private \
35               /var/lib/gopath /var/lib/pip /var/lib/npm
36     fi
37
38     mkdir -p /var/lib/gems/ruby
39     chown arvbox:arvbox -R /var/lib/gems/ruby
40
41     mkdir -p /tmp/crunch0 /tmp/crunch1
42     chown crunch:crunch -R /tmp/crunch0 /tmp/crunch1
43
44     echo "arvbox    ALL=(crunch) NOPASSWD: ALL" >> /etc/sudoers
45
46     cat <<EOF > /etc/profile.d/paths.sh
47 export PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/go/bin:/var/lib/gems/bin:$(ls -d /usr/local/node-*)/bin
48 export GEM_HOME=/var/lib/gems
49 export GEM_PATH=/var/lib/gems
50 export npm_config_cache=/var/lib/npm
51 export npm_config_cache_min=Infinity
52 export R_LIBS=/var/lib/Rlibs
53 export GOPATH=/var/lib/gopath
54 EOF
55
56     mkdir -p /etc/arvados
57     chown -R arvbox:arvbox /etc/arvados
58 fi
59
60 if ! grep "^fuse:" /etc/group >/dev/null 2>/dev/null ; then
61     if test -c /dev/fuse ; then
62         FUSEGID=$(ls -nd /dev/fuse | sed 's/ */ /' | cut -d' ' -f5)
63         groupadd --gid $FUSEGID --non-unique fuse
64         adduser arvbox fuse
65         adduser crunch fuse
66     fi
67 fi