Re: Debian Stretch SELinux enforcing causes systemd --user unit to fail

2018-01-31 Thread C J du Preez
>C J du Preez wrote:
>
>>Good day,
>>
> Hi,
>
>>I would like to report a bug, but I am not sure which package to report it 
>>against.
>>I have SELinux enabled and enforcing on Debian Stretch (commandline via SSH 
>>only, no GUI is installed at all). I am trying to start a systemd --user unit 
>>(which I know is correct, because it works without SELinux enabled). When I 
>>try to start the service (using systemctl --user start ssh-agent) I get:
>>Failed to connect to bus: No such file or directory.
>>With SELinux enabled, DBUS_SESSION_BUS_ADDRESS is undefined (with SELinux 
>>disabled it is defined as unix:path=/run/user/1000/bus). With SELinux 
>>disabled that path exists, with SELinux enabled, it does not.
>>Could you also please try in permissive mode as well? That should fix
> the creation of the file on disk, if that problem is fixed I think you
> could open a bug against the selinux-policy-default package.
>
> Regarding the environment variable not being set, I think it's this
> bug[0]. Would you be able to rebuild systemd with this patch[1] applied?
> If that patch fixes the problem, we could maybe try to include that in a
> stable point release.
>
> Otherwise, you should try to upgrade systemd to an higher version using
> the backports.
>
> Kind regards,
>
> Laurent Bigonville
>
>
> [0] https://github.com/systemd/systemd/issues/6120
> [1]
>https://github.com/systemd/systemd/pull/6201/commits/51c7d5aa36e9ac0ec8ca6fef811a5f9deb7e4fd2
>

Hi there,

Please note that I have installed a clean Xen domU VM to better test this issue 
and potentially report a bug. One difference I noticed is that 
DBUS_SESSION_BUS_ADDRESS is not defined in permissive or enforcing modes in 
this clean install. However the systemd --user unit works in permissive mode. 
Here are my findings:

SELinux permissive
==
==

$ sudo sestatus
[sudo] password for testuser:
SELinux status: enabled
SELinuxfs mount:/sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: default
Current mode:   permissive
Mode from config file:  permissive
Policy MLS status:  enabled
Policy deny_unknown status: allowed
Max kernel policy version:  30



$ cat .config/systemd/user/ssh-agent.service
[Unit]
Description=SSH key agent

[Service]
Type=forking
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -a $SSH_AUTH_SOCK

[Install]
WantedBy=default.target



$ cat .profile
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi

export SSH_AUTH_SOCK="$XDG_RUNTIME_DIR/ssh-agent.socket"



$ env
LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xs

Debian Stretch SELinux enforcing causes systemd --user unit to fail

2018-01-29 Thread C J du Preez
Good day,

I would like to report a bug, but I am not sure which package to report it 
against.

I have SELinux enabled and enforcing on Debian Stretch (commandline via SSH 
only, no GUI is installed at all). I am trying to start a systemd --user unit 
(which I know is correct, because it works without SELinux enabled). When I try 
to start the service (using systemctl --user start ssh-agent) I get:

Failed to connect to bus: No such file or directory.

With SELinux enabled, DBUS_SESSION_BUS_ADDRESS is undefined (with SELinux 
disabled it is defined as unix:path=/run/user/1000/bus). With SELinux disabled 
that path exists, with SELinux enabled, it does not.

​Please advise.

Thanks
C J du Preez


​