Merge #12255: Update bitcoin.service to conform to init.md

bad1716c6d30fdf4be6d5050a04e1211f920bbd6 init: Modify docs and add release note for 12255 (Carl Dong)
b0c7b54d0c2e116d61e686b1adfdea6a1f7f02fe init: Use systemd automatic directory creation (Carl Dong)

Pull request description:

  - `-datadir` option specified.
  - Ask systemd to create and set the right mode for PID directory, configuration directory, and data directory.
  - Tell systemd our group so it will set the right owner for aforementioned directories.

  More information: https://www.freedesktop.org/software/systemd/man/systemd.exec.html

Tree-SHA512: a6fad1efa2be433c1fdd863df3ff232736ed709a9e281f51a003b40987d8c213dc64a52bc13a19c85bf85680e78f0be112ecaf32ac274b1ff93bac84a1208845
This commit is contained in:
Wladimir J. van der Laan 2019-02-04 19:51:00 +01:00 committed by Munkybooty
parent aefeef25b8
commit 7c3c6ef71f
3 changed files with 63 additions and 6 deletions

View File

@ -5,21 +5,45 @@
# See "man systemd.service" for details.
# Note that almost all daemon options could be specified in
# /etc/dash/dash.conf
# /etc/dash/dash.conf, except for those explicitly specified as arguments
# in ExecStart=
[Unit]
Description=Dash daemon
After=network.target
[Service]
ExecStart=/usr/bin/dashd -daemon -conf=/etc/dash/dash.conf -pid=/run/dashd/dashd.pid
# Creates /run/dash owned by dashcore
RuntimeDirectory=dashd
User=dashcore
ExecStart=/usr/bin/dashd -daemon \
-pid=/run/dashd/dashd.pid \
-conf=/etc/dash/dash.conf \
-datadir=/var/lib/dashd
# Process management
####################
Type=forking
PIDFile=/run/dashd/dashd.pid
Restart=on-failure
# Directory creation and permissions
####################################
# Run as dash:dash
User=dashcore
Group=dashcore
# /run/dashd
RuntimeDirectory=dashd
RuntimeDirectoryMode=0710
# /etc/dash
ConfigurationDirectory=dash
ConfigurationDirectoryMode=0710
# /var/lib/dashd
StateDirectory=dashd
StateDirectoryMode=0710
# Hardening measures
####################

View File

@ -56,7 +56,7 @@ All three configurations assume several paths that might need to be adjusted.
Binary: `/usr/bin/dashd`
Configuration file: `/etc/dashcore/dash.conf`
Data directory: `/var/lib/dashd`
PID file: `/var/run/dashd/dashd.pid` (OpenRC and Upstart) or `/var/lib/dashd/dashd.pid` (systemd)
PID file: `/var/run/dashd/dashd.pid` (OpenRC and Upstart) or `/run/dashd/dashd.pid` (systemd)
Lock file: `/var/lock/subsys/dashd` (CentOS)
The configuration file, PID directory (if applicable) and data directory
@ -65,6 +65,22 @@ reasons to make the configuration file and data directory only readable by the
dashcore user and group. Access to dash-cli and other dashd rpc clients
can then be controlled by group membership.
NOTE: When using the systemd .service file, the creation of the aforementioned
directories and the setting of their permissions is automatically handled by
systemd. Directories are given a permission of 710, giving the dashcore user and group
access to files under it _if_ the files themselves give permission to the
dashcore user and group to do so (e.g. when `-sysperms` is specified). This does not allow
for the listing of files under the directory.
NOTE: It is not currently possible to override `datadir` in
`/etc/dash/dash.conf` with the current systemd, OpenRC, and Upstart init
files out-of-the-box. This is because the command line options specified in the
init files take precedence over the configurations in
`/etc/dash/dash.conf`. However, some init systems have their own
configuration mechanisms that would allow for overriding the command line
options specified in the init files (e.g. setting `BITCOIND_DATADIR` for
OpenRC).
### macOS
Binary: `/usr/local/bin/dashd`

View File

@ -0,0 +1,17 @@
systemd init file
=========
The systemd init file (`contrib/init/dashd.service`) has been changed to use
`/var/lib/dashd` as the data directory instead of `~dash/.dash`. This
change makes Dash Core more consistent with other services, and makes the
systemd init config more consistent with existing Upstart and OpenRC configs.
The configuration, PID, and data directories are now completely managed by
systemd, which will take care of their creation, permissions, etc. See
[`systemd.exec (5)`](https://www.freedesktop.org/software/systemd/man/systemd.exec.html#RuntimeDirectory=)
for more details.
When using the provided init files under `contrib/init`, overriding the
`datadir` option in `/etc/dash/dash.conf` will have no effect. This is
because the command line arguments specified in the init files take precedence
over the options specified in `/etc/dash/dash.conf`.