* Cannot write policy to allow { relabelto }
@ 2017-04-17 22:02 Ian Pilcher
2017-04-18 6:15 ` Dominick Grift
0 siblings, 1 reply; 7+ messages in thread
From: Ian Pilcher @ 2017-04-17 22:02 UTC (permalink / raw)
To: selinux
I am having a weird problem writing a policy for a service. The service
needs to set SELinux file contexts, so I've created a rule to allow
this:
allow acme_nss_t cert_t : file { read write create getattr setattr
relabelfrom relabelto open } ;
Despite this, I am still getting this denial:
avc: denied { relabelto } for pid=3561 comm="update-mod-nss"
name="cert8.db" dev="dm-0" ino=50343845
scontext=system_u:system_r:acme_nss_t:s0
tcontext=unconfined_u:object_r:cert_t:s0 tclass=file
Any ideas?
--
========================================================================
Ian Pilcher arequipeno@gmail.com
-------- "I grew up before Mark Zuckerberg invented friendship" --------
========================================================================
^ permalink raw reply [flat|nested] 7+ messages in thread* Re: Cannot write policy to allow { relabelto } 2017-04-17 22:02 Cannot write policy to allow { relabelto } Ian Pilcher @ 2017-04-18 6:15 ` Dominick Grift 2017-04-18 12:03 ` Ian Pilcher 0 siblings, 1 reply; 7+ messages in thread From: Dominick Grift @ 2017-04-18 6:15 UTC (permalink / raw) To: selinux [-- Attachment #1: Type: text/plain, Size: 1706 bytes --] On Mon, Apr 17, 2017 at 05:02:14PM -0500, Ian Pilcher wrote: > I am having a weird problem writing a policy for a service. The service > needs to set SELinux file contexts, so I've created a rule to allow > this: > > allow acme_nss_t cert_t : file { read write create getattr setattr > relabelfrom relabelto open } ; > > Despite this, I am still getting this denial: > > avc: denied { relabelto } for pid=3561 comm="update-mod-nss" > name="cert8.db" dev="dm-0" ino=50343845 > scontext=system_u:system_r:acme_nss_t:s0 > tcontext=unconfined_u:object_r:cert_t:s0 tclass=file > > Any ideas? acme_nss_t needs to be associate with "can_change_object_identity" to be able to change the object identity from system_u to unconfined_u typeattribute acme_nss_t can_change_object_identity; or the appropriate macro: domain_obj_id_change_exemption(acme_nss_t) But there is no need to change the object identity in the first place, system_u will do fine. > > -- > ======================================================================== > Ian Pilcher arequipeno@gmail.com > -------- "I grew up before Mark Zuckerberg invented friendship" -------- > ======================================================================== > _______________________________________________ > Selinux mailing list > Selinux@tycho.nsa.gov > To unsubscribe, send email to Selinux-leave@tycho.nsa.gov. > To get help, send an email containing "help" to Selinux-request@tycho.nsa.gov. -- Key fingerprint = 5F4D 3CDB D3F8 3652 FBD8 02D5 3B6C 5F1D 2C7B 6B02 https://sks-keyservers.net/pks/lookup?op=get&search=0x3B6C5F1D2C7B6B02 Dominick Grift [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Cannot write policy to allow { relabelto } 2017-04-18 6:15 ` Dominick Grift @ 2017-04-18 12:03 ` Ian Pilcher 2017-04-18 12:10 ` Dominick Grift 0 siblings, 1 reply; 7+ messages in thread From: Ian Pilcher @ 2017-04-18 12:03 UTC (permalink / raw) To: selinux On 04/18/2017 01:15 AM, Dominick Grift wrote: > acme_nss_t needs to be associate with "can_change_object_identity" to > be able to change the object identity from system_u to unconfined_u > > typeattribute acme_nss_t can_change_object_identity; > > or the appropriate macro: > > domain_obj_id_change_exemption(acme_nss_t) Excellent, thank you! > > But there is no need to change the object identity in the first > place, system_u will do fine. I'll have to think about this. I'm actually copying a directory tree from one place to another and copying the context from the source to destination with getfilecon() and setfilecon(). What APIs should I use if I *only* wanted to copy the type? -- ======================================================================== Ian Pilcher arequipeno@gmail.com -------- "I grew up before Mark Zuckerberg invented friendship" -------- ======================================================================== ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Cannot write policy to allow { relabelto } 2017-04-18 12:03 ` Ian Pilcher @ 2017-04-18 12:10 ` Dominick Grift 2017-04-18 12:11 ` Dominick Grift 2017-04-18 13:26 ` Ian Pilcher 0 siblings, 2 replies; 7+ messages in thread From: Dominick Grift @ 2017-04-18 12:10 UTC (permalink / raw) To: selinux [-- Attachment #1: Type: text/plain, Size: 1774 bytes --] On Tue, Apr 18, 2017 at 07:03:23AM -0500, Ian Pilcher wrote: > On 04/18/2017 01:15 AM, Dominick Grift wrote: > > acme_nss_t needs to be associate with "can_change_object_identity" to > > be able to change the object identity from system_u to unconfined_u > > > > typeattribute acme_nss_t can_change_object_identity; > > > > or the appropriate macro: > > > > domain_obj_id_change_exemption(acme_nss_t) > > Excellent, thank you! > > > > > But there is no need to change the object identity in the first > > place, system_u will do fine. > > I'll have to think about this. I'm actually copying a directory tree > from one place to another and copying the context from the source to > destination with getfilecon() and setfilecon(). If you would be using getfilecon() then you would, most likely, not end up with unconfined_u as the identity where are you copying that object to? There should be no content with type "cert_t" in a user home directory > > What APIs should I use if I *only* wanted to copy the type? > > -- > ======================================================================== > Ian Pilcher arequipeno@gmail.com > -------- "I grew up before Mark Zuckerberg invented friendship" -------- > ======================================================================== > _______________________________________________ > Selinux mailing list > Selinux@tycho.nsa.gov > To unsubscribe, send email to Selinux-leave@tycho.nsa.gov. > To get help, send an email containing "help" to Selinux-request@tycho.nsa.gov. -- Key fingerprint = 5F4D 3CDB D3F8 3652 FBD8 02D5 3B6C 5F1D 2C7B 6B02 https://sks-keyservers.net/pks/lookup?op=get&search=0x3B6C5F1D2C7B6B02 Dominick Grift [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Cannot write policy to allow { relabelto } 2017-04-18 12:10 ` Dominick Grift @ 2017-04-18 12:11 ` Dominick Grift 2017-04-18 13:26 ` Ian Pilcher 1 sibling, 0 replies; 7+ messages in thread From: Dominick Grift @ 2017-04-18 12:11 UTC (permalink / raw) To: selinux [-- Attachment #1: Type: text/plain, Size: 2172 bytes --] On Tue, Apr 18, 2017 at 02:10:16PM +0200, Dominick Grift wrote: > On Tue, Apr 18, 2017 at 07:03:23AM -0500, Ian Pilcher wrote: > > On 04/18/2017 01:15 AM, Dominick Grift wrote: > > > acme_nss_t needs to be associate with "can_change_object_identity" to > > > be able to change the object identity from system_u to unconfined_u > > > > > > typeattribute acme_nss_t can_change_object_identity; > > > > > > or the appropriate macro: > > > > > > domain_obj_id_change_exemption(acme_nss_t) > > > > Excellent, thank you! > > > > > > > > But there is no need to change the object identity in the first > > > place, system_u will do fine. > > > > I'll have to think about this. I'm actually copying a directory tree > > from one place to another and copying the context from the source to > > destination with getfilecon() and setfilecon(). > > If you would be using getfilecon() then you would, most likely, not end up with unconfined_u as the identity if there is a getfilecon_default() then try that instead of getfilecon() > > where are you copying that object to? There should be no content with type "cert_t" in a user home directory > > > > > What APIs should I use if I *only* wanted to copy the type? > > > > -- > > ======================================================================== > > Ian Pilcher arequipeno@gmail.com > > -------- "I grew up before Mark Zuckerberg invented friendship" -------- > > ======================================================================== > > _______________________________________________ > > Selinux mailing list > > Selinux@tycho.nsa.gov > > To unsubscribe, send email to Selinux-leave@tycho.nsa.gov. > > To get help, send an email containing "help" to Selinux-request@tycho.nsa.gov. > > -- > Key fingerprint = 5F4D 3CDB D3F8 3652 FBD8 02D5 3B6C 5F1D 2C7B 6B02 > https://sks-keyservers.net/pks/lookup?op=get&search=0x3B6C5F1D2C7B6B02 > Dominick Grift -- Key fingerprint = 5F4D 3CDB D3F8 3652 FBD8 02D5 3B6C 5F1D 2C7B 6B02 https://sks-keyservers.net/pks/lookup?op=get&search=0x3B6C5F1D2C7B6B02 Dominick Grift [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Cannot write policy to allow { relabelto } 2017-04-18 12:10 ` Dominick Grift 2017-04-18 12:11 ` Dominick Grift @ 2017-04-18 13:26 ` Ian Pilcher 2017-04-18 14:07 ` Dominick Grift 1 sibling, 1 reply; 7+ messages in thread From: Ian Pilcher @ 2017-04-18 13:26 UTC (permalink / raw) To: selinux On 04/18/2017 07:10 AM, Dominick Grift wrote: > where are you copying that object to? There should be no content with > type "cert_t" in a user home directory I'm copying the mod_nss NSS database directory (/etc/httpd/alias). The program is intended to update Let's Encrypt certificates in mod_nss. I've moved the actual mod_nss database into a directory named something like /etc/httpd/alias-20170218081357 and /etc/httpd/alias is now a symbolic link to that directory. My program does this following: * Create a new directory with a current timestamp: /etc/httpd/alias-20170408143539 for example. * Copy the NSS database files (cert8.db, key3.db, and secmod.db) from the "old" directory to the new directory. I can get away with this, because mod_nss always opens the database read-only. * Open the NSS database in the new directory, delete any existing certificates with the matching nickname (hostname), and import the new certificate. * Recursively copy any other content (files, symlinks, subdirectories) from the old directory to the new directory. This step also copies the ownership, permissions, and SELinux context of *all* objects, including the NSS database files. (This is where I hit the relabelto denial.) * Create a new symbolic link, /etc/httpd/alias.new, that points to the new directory. * Rename the /etc/httpd/alias.new symbolic link to /etc/httpd/alias. * Recursively delete the old directory. * Reload (SIGUSR1) httpd, so it will start using the new certificate. (Actually, systemd does this in an ExecStartPost.) -- ======================================================================== Ian Pilcher arequipeno@gmail.com -------- "I grew up before Mark Zuckerberg invented friendship" -------- ======================================================================== ^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Cannot write policy to allow { relabelto } 2017-04-18 13:26 ` Ian Pilcher @ 2017-04-18 14:07 ` Dominick Grift 0 siblings, 0 replies; 7+ messages in thread From: Dominick Grift @ 2017-04-18 14:07 UTC (permalink / raw) To: selinux [-- Attachment #1: Type: text/plain, Size: 2921 bytes --] On Tue, Apr 18, 2017 at 08:26:50AM -0500, Ian Pilcher wrote: > On 04/18/2017 07:10 AM, Dominick Grift wrote: > > where are you copying that object to? There should be no content with > > type "cert_t" in a user home directory > > I'm copying the mod_nss NSS database directory (/etc/httpd/alias). The > program is intended to update Let's Encrypt certificates in mod_nss. > > I've moved the actual mod_nss database into a directory named something > like /etc/httpd/alias-20170218081357 and /etc/httpd/alias is now a > symbolic link to that directory. > > My program does this following: > > * Create a new directory with a current timestamp: > /etc/httpd/alias-20170408143539 for example. > > * Copy the NSS database files (cert8.db, key3.db, and secmod.db) from > the "old" directory to the new directory. I can get away with this, > because mod_nss always opens the database read-only. > > * Open the NSS database in the new directory, delete any existing > certificates with the matching nickname (hostname), and import the > new certificate. > > * Recursively copy any other content (files, symlinks, subdirectories) > from the old directory to the new directory. This step also copies > the ownership, permissions, and SELinux context of *all* objects, > including the NSS database files. (This is where I hit the relabelto > denial.) Okay so i suppose that behaves like `cp -a`. That copies the file context as well. I think then you are stuck with the object id change exemption solution because AFAIK there is no `cp -a-minus-selinux-context` or equivalent This is also an issue with dracut, where it cp -a a bunch of files from / to /var/tmp/dracut to create the initramfs forcing us the me to allow dracut to manage and relabel a lot of files > > * Create a new symbolic link, /etc/httpd/alias.new, that points to the > new directory. > > * Rename the /etc/httpd/alias.new symbolic link to /etc/httpd/alias. > > * Recursively delete the old directory. > > * Reload (SIGUSR1) httpd, so it will start using the new certificate. > (Actually, systemd does this in an ExecStartPost.) > > -- > ======================================================================== > Ian Pilcher arequipeno@gmail.com > -------- "I grew up before Mark Zuckerberg invented friendship" -------- > ======================================================================== > _______________________________________________ > Selinux mailing list > Selinux@tycho.nsa.gov > To unsubscribe, send email to Selinux-leave@tycho.nsa.gov. > To get help, send an email containing "help" to Selinux-request@tycho.nsa.gov. -- Key fingerprint = 5F4D 3CDB D3F8 3652 FBD8 02D5 3B6C 5F1D 2C7B 6B02 https://sks-keyservers.net/pks/lookup?op=get&search=0x3B6C5F1D2C7B6B02 Dominick Grift [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 659 bytes --] ^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2017-04-18 14:07 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-04-17 22:02 Cannot write policy to allow { relabelto } Ian Pilcher
2017-04-18 6:15 ` Dominick Grift
2017-04-18 12:03 ` Ian Pilcher
2017-04-18 12:10 ` Dominick Grift
2017-04-18 12:11 ` Dominick Grift
2017-04-18 13:26 ` Ian Pilcher
2017-04-18 14:07 ` Dominick Grift
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.