<div dir="ltr"><div>I disagree; privacy of environment variables to individual users on the system is as fundamental as Unix file permissions. If a privileged process (systemd) is configured to start a service and provide environment variables to an unprivileged service account, it is a reasonable expectation that said environment is only available to root and the service account (and it's child processes), and not other arbitrary users/processes. From a system security engineering perspective, it would be better if systemd didn't start a service at all with 0600 on the unit file, rather than violate the principle of Unix environment privacy, and in fact should actually just check the world-read bit.</div><div><br></div>Thanks aleivag; "systemctl show" was what I was looking for; unprivileged, I was able to see the "Environment=" values, but not the contents of /etc/gopherbot.env. I'm going to go ahead and update the Ansible role to operate that way.<div><br></div><div>Regards,</div><div>-David</div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Nov 13, 2018 at 5:18 AM Lennart Poettering <<a href="mailto:lennart@poettering.net">lennart@poettering.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">On Mo, 12.11.18 17:41, aleivag (<a href="mailto:aleivag@gmail.com" target="_blank">aleivag@gmail.com</a>) wrote:<br>
<br>
> You can define those secrets on /etc/robotsecret.txt, and then on your unit<br>
> you do `EnvironmentFile=/etc/robotsecret.txt`<br>
> <br>
> then you protect /etc/robotsecret.txt as you would normally do<br>
<br>
Don't do this. This is only partially secure, and that only by<br>
coincidence, not by design. env vars are generally not considered<br>
secrets, and will still propagate down the tree.<br>
<br>
If you have secrets pick a place where they are strictly access<br>
controlled, and where this access control is built into the concept<br>
itself. Files on disk work (with their age old UNIX access mode) and<br>
kernel keyrings work too (they have been designed just for this<br>
purpose). env vars do not qualify. Neither in understanding of its<br>
users, not in actual code.<br>
<br>
Lennart<br>
<br>
-- <br>
Lennart Poettering, Red Hat<br>
</blockquote></div>