Subject: [bug#54561] [PATCH 1/4] services: Add samba service.

From: Simon Streit <[email-masked]>
Date: Sun, 27 Mar 2022 20:32:16 +0200

Maxime Devos <[email-masked]> writes:

> fesoj000 schreef op zo 27-03-2022 om 03:07 [+0200]:
>> > +(define (samba-activation config)
>> > +  (let ((package (samba-configuration-package config))
>> > +        (config-file (samba-configuration-config-file config)))
>> > +    (with-imported-modules '((guix build utils))
>> > +      (let ((lib-directory "/var/lib/samba")
>> > +            (log-directory "/var/log/samba")
>> > +            (run-directory "/var/run/samba")
>> > +            (smb.conf "/etc/samba/smb.conf"))
>
> Is it necessary to put the configuration file there?
> Can be we do something like (system* "/.../testparm" #$smb.conf), where
> smb.conf is the generated configuration file?

No, not really.  The Samba suit has a lot of tools that may want to look
into the default config directory.  It seems that any relevant
configuration belonging to Samba lands in smb.conf, that is looked into
anytime when needed.  That is my impression, and thus
placed it there.

>> Is it a good idea to create all those directories with the default
>> umask? I always wanted to investigate which of those directories
>> contains sensitive data. I never got around to.

I'm not so sure myself.  That was the end result of what had to be
created to have the service successfully initiate itself.  True that I
have not investigated this myself yet.  While writing this service I was
comparing the directory structure with Debian and Arch Linux, to be sure
that it would work. 
>
> FWIW, you can use 'mkdir-p/perms' to set the permission bits.
> The (string-append ...) can be simplified to:
>
>   (system* #$(file-append package "/bin/testparm" "--suppres-prompt
> #$smb.conf).
>
> Also, would it be a good idea to use (invoke ...) instead of system, to
> make sure errors are detected?  What is the 'suppress-prompt' for?

My understanding now would be better to write invoke.  Thanks for
pointing this out.