mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2025-01-11 13:49:23 -05:00
services: tor: Switch to 'least-authority-wrapper'.
* gnu/services/networking.scm (tor-configuration->torrc): Remove "User" and "PidFile". (tor-shepherd-service): Use 'least-authority-wrapper' and 'make-forkexec-constructor' instead of 'make-forkexec-constructor/container'.
This commit is contained in:
parent
f0acb12db9
commit
fb868cd779
1 changed files with 28 additions and 19 deletions
|
@ -918,9 +918,7 @@ (define (tor-configuration->torrc config)
|
|||
(lambda (port)
|
||||
(display "\
|
||||
### These lines were generated from your system configuration:
|
||||
User tor
|
||||
DataDirectory /var/lib/tor
|
||||
PidFile /var/run/tor/tor.pid
|
||||
Log notice syslog\n" port)
|
||||
(when (eq? 'unix '#$socks-socket-type)
|
||||
(display "\
|
||||
|
@ -960,7 +958,25 @@ (define (tor-shepherd-service config)
|
|||
"Return a <shepherd-service> running Tor."
|
||||
(match config
|
||||
(($ <tor-configuration> tor)
|
||||
(let ((torrc (tor-configuration->torrc config)))
|
||||
(let* ((torrc (tor-configuration->torrc config))
|
||||
(tor (least-authority-wrapper
|
||||
(file-append tor "/bin/tor")
|
||||
#:name "tor"
|
||||
#:mappings (list (file-system-mapping
|
||||
(source "/var/lib/tor")
|
||||
(target source)
|
||||
(writable? #t))
|
||||
(file-system-mapping
|
||||
(source "/dev/log") ;for syslog
|
||||
(target source))
|
||||
(file-system-mapping
|
||||
(source "/var/run/tor")
|
||||
(target source)
|
||||
(writable? #t))
|
||||
(file-system-mapping
|
||||
(source torrc)
|
||||
(target source)))
|
||||
#:namespaces (delq 'net %namespaces))))
|
||||
(with-imported-modules (source-module-closure
|
||||
'((gnu build shepherd)
|
||||
(gnu system file-systems)))
|
||||
|
@ -974,22 +990,15 @@ (define (tor-shepherd-service config)
|
|||
(modules '((gnu build shepherd)
|
||||
(gnu system file-systems)))
|
||||
|
||||
(start #~(make-forkexec-constructor/container
|
||||
(list #$(file-append tor "/bin/tor") "-f" #$torrc)
|
||||
|
||||
#:log-file "/var/log/tor.log"
|
||||
#:mappings (list (file-system-mapping
|
||||
(source "/var/lib/tor")
|
||||
(target source)
|
||||
(writable? #t))
|
||||
(file-system-mapping
|
||||
(source "/dev/log") ;for syslog
|
||||
(target source))
|
||||
(file-system-mapping
|
||||
(source "/var/run/tor")
|
||||
(target source)
|
||||
(writable? #t)))
|
||||
#:pid-file "/var/run/tor/tor.pid"))
|
||||
;; XXX: #:pid-file won't work because the wrapped 'tor'
|
||||
;; program would print its PID within the user namespace
|
||||
;; instead of its actual PID outside. There's no inetd or
|
||||
;; systemd socket activation support either (there's
|
||||
;; 'sd_notify' though), so we're stuck with that.
|
||||
(start #~(make-forkexec-constructor
|
||||
(list #$tor "-f" #$torrc)
|
||||
#:user "tor" #:group "tor"
|
||||
#:log-file "/var/log/tor.log"))
|
||||
(stop #~(make-kill-destructor))
|
||||
(documentation "Run the Tor anonymous network overlay."))))))))
|
||||
|
||||
|
|
Loading…
Reference in a new issue