[systemd-devel] systemd-nspawn at .service is unusable

Peter Lemenkov lemenkov at gmail.com
Fri Dec 5 05:49:22 PST 2014


2014-12-05 16:25 GMT+03:00 Lennart Poettering <lennart at poettering.net>:
> On Fri, 05.12.14 16:58, Peter Lemenkov (lemenkov at gmail.com) wrote:
>
>> Ok, now I've got something. Here is a a diff between good (1st,
>> commandline) and bad (2nd, systemd service) sessions:
>>
>> * https://gist.github.com/lemenkov/ee70c42baedcb9b43189#file-sessions-diff
>>
>> More specifically I found these pieces interesting:
>>
>> * https://gist.github.com/lemenkov/ee70c42baedcb9b43189#file-sessions-diff-L253-L258
>>
>> Notice "open("/dev/urandom", O_RDONLY|O_NOCTTY|O_CLOEXEC) = -1 EACCES
>> (Permission denied)" when started as systemd service:
>>
>> * https://gist.github.com/lemenkov/ee70c42baedcb9b43189#file-sessions-diff-L699-L700
>>
>> Notice "unlink("/run/systemd/journal/dev-log")  = -1 EACCES
>> (Permission denied)" followed by "bind(7, {sa_family=AF_LOCAL,
>> sun_path="/run/systemd/journal/dev-log"}, 30) = -1 EADDRINUSE (Address
>> already in use)".
>>
>> Looks like systemd-nspawn either doesn't mounts (bind mounts) a
>> necessary devices or doesn't create them properly.
>
> Hmm, do you have SELinux enabled and in enforcing mode?
>
> nspawn mounts a tmpfs to /run, very early on, before invoking the
> first binary, it should definitely be writable.

Yes! That's a SELinux denial. I'm sorry for bothering you and for not
trying switching selinux off and on again - I actually thought that
all the SELinux issues are gone already.

In case you're interested - here is a dump of dmesg | audit2allow:


#============= getty_t ==============
allow getty_t devpts_t:chr_file { write getattr setattr read open ioctl };
allow getty_t rpm_var_lib_t:file open;
allow getty_t tmpfs_t:chr_file read;

#============= syslogd_t ==============
allow syslogd_t tmpfs_t:chr_file { read write ioctl open };
allow syslogd_t tmpfs_t:dir { write create add_name };
allow syslogd_t tmpfs_t:file { create setattr };
allow syslogd_t tmpfs_t:sock_file write;

#============= systemd_logind_t ==============
allow systemd_logind_t tmpfs_t:filesystem mount;
allow systemd_logind_t tmpfs_t:sock_file write;
allow systemd_logind_t user_tmp_t:dir mounton;

#============= systemd_sysctl_t ==============

#!!!! This avc can be allowed using the boolean 'domain_kernel_load_modules'
allow systemd_sysctl_t kernel_t:system module_request;

#==========================================

And here is a full explanation:

https://paste.fedoraproject.org/156932/78730514/

I'll try to open a bug reports in RHBZ on each issue found.

-- 
With best regards, Peter Lemenkov.


More information about the systemd-devel mailing list