On 1/11/19 8:11 PM, Russell Coker wrote: > Are we really gaining anything from not using net_conf_t? Yes writing to > net_conf_t allows doing more things than changing the hostname, but changing > the hostname is a privileged operation anyway. > > Are we getting a benefit to make up for the increase in types? > Only that I didn't think of using net_conf_t in this instance. And that is probably a reasonable type to use for /etc/hostname. I will resubmit this patch with that change. > On Saturday, 12 January 2019 2:30:54 AM AEDT Sugar, David wrote: >> hostnamectl updates /etc/hostname. >> This change is setting up a private type for the file /etc/hostname (was >> etc_t) and granting hostnamectl permission to edit this file. Note that >> hostnamectl is initially creating a new file .#hostname????? which is why >> the create permissions are requied. >> >> type=AVC msg=audit(1547039052.041:563): avc: denied { write } for >> pid=7564 comm="systemd-hostnam" name="etc" dev="dm-1" ino=101 >> scontext=system_u:system_r:systemd_hostnamed_t:s0 >> tcontext=system_u:object_r:etc_t:s0 tclass=dir permissive=1 type=AVC >> msg=audit(1547039052.041:563): avc: denied { add_name } for pid=7564 >> comm="systemd-hostnam" name=".#hostnamezyqZ9t" >> scontext=system_u:system_r:systemd_hostnamed_t:s0 >> tcontext=system_u:object_r:etc_t:s0 tclass=dir permissive=1 type=AVC >> msg=audit(1547039052.041:563): avc: denied { create } for pid=7564 >> comm="systemd-hostnam" name=".#hostnamezyqZ9t" >> scontext=system_u:system_r:systemd_hostnamed_t:s0 >> tcontext=system_u:object_r:etc_t:s0 tclass=file permissive=1 type=AVC >> msg=audit(1547039052.041:563): avc: denied { write } for pid=7564 >> comm="systemd-hostnam" path="/etc/.#hostnamezyqZ9t" dev="dm-1" ino=1094726 >> scontext=system_u:system_r:systemd_hostnamed_t:s0 >> tcontext=system_u:object_r:etc_t:s0 tclass=file permissive=1 type=SYSCALL >> msg=audit(1547039052.041:563): arch=c000003e syscall=2 success=yes exit=8 >> a0=560d0bba34b0 a1=800c2 a2=180 a3=5c35f14c items=2 ppid=1 pid=7564 >> auid=4294967295 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 >> tty=(none) ses=4294967295 comm="systemd-hostnam" >> exe="/usr/lib/systemd/systemd-hostnamed" >> subj=system_u:system_r:systemd_hostnamed_t:s0 key=(null) type=AVC >> msg=audit(1547039052.041:564): avc: denied { setattr } for pid=7564 >> comm="systemd-hostnam" name=".#hostnamezyqZ9t" dev="dm-1" ino=1094726 >> scontext=system_u:system_r:systemd_hostnamed_t:s0 >> tcontext=system_u:object_r:etc_t:s0 tclass=file permissive=1 type=SYSCALL >> msg=audit(1547039052.041:564): arch=c000003e syscall=91 success=yes exit=0 >> a0=8 a1=1a4 a2=fbad2484 a3=24 items=1 ppid=1 pid=7564 auid=4294967295 uid=0 >> gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=(none) ses=4294967295 >> comm="systemd-hostnam" exe="/usr/lib/systemd/systemd-hostnamed" >> subj=system_u:system_r:systemd_hostnamed_t:s0 key=(null) type=AVC >> msg=audit(1547039052.041:565): avc: denied { remove_name } for pid=7564 >> comm="systemd-hostnam" name=".#hostnamezyqZ9t" dev="dm-1" ino=1094726 >> scontext=system_u:system_r:systemd_hostnamed_t:s0 >> tcontext=system_u:object_r:etc_t:s0 tclass=dir permissive=1 type=AVC >> msg=audit(1547039052.041:565): avc: denied { rename } for pid=7564 >> comm="systemd-hostnam" name=".#hostnamezyqZ9t" dev="dm-1" ino=1094726 >> scontext=system_u:system_r:systemd_hostnamed_t:s0 >> tcontext=system_u:object_r:etc_t:s0 tclass=file permissive=1 type=AVC >> msg=audit(1547039052.041:565): avc: denied { unlink } for pid=7564 >> comm="systemd-hostnam" name="hostname" dev="dm-1" ino=1094712 >> scontext=system_u:system_r:systemd_hostnamed_t:s0 >> tcontext=system_u:object_r:etc_t:s0 tclass=file permissive=1 >> >> Signed-off-by: Dave Sugar <dsugar@xxxxxxxxxx> >> --- >> policy/modules/system/systemd.fc | 1 + >> policy/modules/system/systemd.te | 6 ++++++ >> 2 files changed, 7 insertions(+) >> >> diff --git a/policy/modules/system/systemd.fc >> b/policy/modules/system/systemd.fc index eefcfaf1..2277fc1e 100644 >> --- a/policy/modules/system/systemd.fc >> +++ b/policy/modules/system/systemd.fc >> @@ -1,3 +1,4 @@ >> +/etc/hostname -- gen_context(system_u:object_r:hostname_etc_t,s0) >> /etc/udev/hwdb\.bin -- > gen_context(system_u:object_r:systemd_hwdb_t,s0) >> >> /run/log/journal(/.*)? > gen_context(system_u:object_r:systemd_journal_t,s >> 0) diff --git a/policy/modules/system/systemd.te >> b/policy/modules/system/systemd.te index f5f7dc1b..3704b756 100644 >> --- a/policy/modules/system/systemd.te >> +++ b/policy/modules/system/systemd.te >> @@ -77,6 +77,9 @@ type systemd_detect_virt_t; >> type systemd_detect_virt_exec_t; >> init_daemon_domain(systemd_detect_virt_t, systemd_detect_virt_exec_t) >> >> +type hostname_etc_t; >> +files_config_file(hostname_etc_t) >> + >> type systemd_hostnamed_t; >> type systemd_hostnamed_exec_t; >> init_daemon_domain(systemd_hostnamed_t, systemd_hostnamed_exec_t) >> @@ -317,10 +320,13 @@ seutil_search_default_contexts(systemd_coredump_t) >> # Hostnamed policy >> # >> >> +allow systemd_hostnamed_t hostname_etc_t:file manage_file_perms; >> + >> kernel_read_kernel_sysctls(systemd_hostnamed_t) >> >> dev_read_sysfs(systemd_hostnamed_t) >> >> +files_etc_filetrans(systemd_hostnamed_t, hostname_etc_t, file) >> files_read_etc_files(systemd_hostnamed_t) >> >> seutil_read_file_contexts(systemd_hostnamed_t) > >