Skip to content

Commit f5b768d

Browse files
WOnder93zpytela
authored andcommitted
Conditionally allow virt guests to read certificates in user home directories
This appears to be needed for user session VMs with PKCS Smartcard device added. It requires expanding the userdom_home_reader_certs_type attribute and do some refactoring around userdom_read_home_certs(), so that it can be enabled under a boolean. Original AVC: type=AVC msg=audit(1743337047.390:2649): avc: denied { read } for pid=17278 comm="qemu-system-x86" name="pkcs11.txt" dev="dm-0" ino=1557247 scontext=unconfined_u:unconfined_r:svirt_t:s0:c45,c54 tcontext=unconfined_u:object_r:home_cert_t:s0 tclass=file permissive=0 Resolves: rhbz#2356061 Signed-off-by: Ondrej Mosnacek <[email protected]>
1 parent f6a71c2 commit f5b768d

File tree

3 files changed

+56
-16
lines changed

3 files changed

+56
-16
lines changed

policy/modules/contrib/virt.te

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1257,6 +1257,7 @@ optional_policy(`
12571257
')
12581258

12591259
optional_policy(`
1260+
userdom_read_home_certs_tunable(virt_use_pcscd, virt_domain)
12601261
tunable_policy(`virt_use_pcscd',`
12611262
pcscd_stream_connect(virt_domain)
12621263
')

policy/modules/system/userdomain.if

Lines changed: 55 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6016,6 +6016,30 @@ interface(`userdom_delete_all_user_tmp_content',`
60166016
files_delete_tmp_dir_entry($1)
60176017
')
60186018

6019+
########################################
6020+
## <summary>
6021+
## Common permissions for reading SSL certificates in the user
6022+
## homedir. (INTERNAL)
6023+
## </summary>
6024+
## <param name="domain">
6025+
## <summary>
6026+
## Domain allowed access.
6027+
## </summary>
6028+
## </param>
6029+
#
6030+
interface(`userdom_read_home_certs_common',`
6031+
gen_require(`
6032+
type home_cert_t;
6033+
')
6034+
6035+
userdom_search_user_home_content($1)
6036+
6037+
list_dirs_pattern($1, home_cert_t, home_cert_t)
6038+
read_files_pattern($1, home_cert_t, home_cert_t)
6039+
read_lnk_files_pattern($1, home_cert_t, home_cert_t)
6040+
allow $1 home_cert_t:file map;
6041+
')
6042+
60196043
########################################
60206044
## <summary>
60216045
## Read system SSL certificates in the users homedir.
@@ -6027,11 +6051,39 @@ interface(`userdom_delete_all_user_tmp_content',`
60276051
## </param>
60286052
#
60296053
interface(`userdom_read_home_certs',`
6030-
gen_require(`
6031-
attribute userdom_home_reader_certs_type;
6054+
userdom_read_home_certs_common($1)
6055+
6056+
tunable_policy(`use_ecryptfs_home_dirs',`
6057+
fs_read_ecryptfs_files($1)
6058+
fs_read_ecryptfs_symlinks($1)
60326059
')
6060+
')
60336061

6034-
typeattribute $1 userdom_home_reader_certs_type;
6062+
########################################
6063+
## <summary>
6064+
## Read system SSL certificates in the users homedir (for use
6065+
## with a boolean).
6066+
## </summary>
6067+
## <param name="boolean">
6068+
## <summary>
6069+
## Boolean that will allow the access.
6070+
## </summary>
6071+
## </param>
6072+
## <param name="domain">
6073+
## <summary>
6074+
## Domain allowed access.
6075+
## </summary>
6076+
## </param>
6077+
#
6078+
template(`userdom_read_home_certs_tunable',`
6079+
tunable_policy($1, `
6080+
userdom_read_home_certs_common($2)
6081+
')
6082+
6083+
tunable_policy(`$1 && use_ecryptfs_home_dirs',`
6084+
fs_read_ecryptfs_files($2)
6085+
fs_read_ecryptfs_symlinks($2)
6086+
')
60356087
')
60366088

60376089
########################################

policy/modules/system/userdomain.te

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,6 @@ attribute unpriv_userdomain;
5353

5454
attribute user_home_content_type;
5555

56-
attribute userdom_home_reader_certs_type;
5756
attribute userdom_home_reader_type;
5857
attribute userdom_home_manager_type;
5958
attribute userdom_filetrans_type;
@@ -217,18 +216,6 @@ optional_policy(`
217216
systemd_userdbd_stream_connect(userdomain)
218217
')
219218

220-
# rules for types which can read home certs
221-
allow userdom_home_reader_certs_type home_cert_t:dir list_dir_perms;
222-
read_files_pattern(userdom_home_reader_certs_type, home_cert_t, home_cert_t)
223-
read_lnk_files_pattern(userdom_home_reader_certs_type, home_cert_t, home_cert_t)
224-
userdom_search_user_home_content(userdom_home_reader_certs_type)
225-
allow userdom_home_reader_certs_type home_cert_t:file map;
226-
227-
tunable_policy(`use_ecryptfs_home_dirs',`
228-
fs_read_ecryptfs_files(userdom_home_reader_certs_type)
229-
fs_read_ecryptfs_symlinks(userdom_home_reader_certs_type)
230-
')
231-
232219
tunable_policy(`use_nfs_home_dirs',`
233220
fs_list_auto_mountpoints(userdom_home_reader_type)
234221
fs_read_nfs_files(userdom_home_reader_type)

0 commit comments

Comments
 (0)