diff --git a/refpolicy/policy/modules/system/getty.te b/refpolicy/policy/modules/system/getty.te new file mode 100644 index 0000000..3a2616c --- /dev/null +++ b/refpolicy/policy/modules/system/getty.te @@ -0,0 +1,77 @@ +type getty_t; #, privfd +domain_make_domain(getty_t) + +type getty_exec_t; +domain_make_entrypoint_file(getty_t,getty_exec_t) + +type getty_etc_t; +typealias getty_etc_t alias etc_getty_t; + +type getty_tmp_t; +files_make_file(getty_tmp_t) + +type getty_log_t; +logging_make_log_file(getty_log_t) + +######################################## +# +# Getty local policy +# + +# Use capabilities. +allow getty_t self:capability { dac_override chown sys_resource sys_tty_config }; +# fbgetty needs fsetid for some reason +#allow getty_t self:capability fsetid; + +allow getty_t self:process { getpgid getsession }; + +allow getty_t getty_etc_t:dir { getattr search read }; +allow getty_t getty_etc_t:file { getattr read }; + +allow getty_t getty_tmp_t:file { getattr create read setattr write setattr unlink }; +allow getty_t getty_tmp_t:dir { getattr search create read setattr write setattr unlink rmdir }; +allow getty_t getty_log_t:file { getattr append setattr }; + +kernel_read_hardware_state(getty_t) + +files_create_private_config(getty_t,getty_etc_t,{ file dir }) +files_create_private_tmp_data(getty_t,getty_tmp_t,{ file dir }) + +authlogin_modify_login_records(getty_t) +logging_send_system_log_message(getty_t) + +# Write to /var/run/utmp. +files_modify_system_runtime_data(getty_t) + +files_manage_general_lock_files(getty_t) +files_read_runtime_system_config(getty_t) +files_read_general_system_config(getty_t) +miscfiles_read_localization(getty_t) + +# for error condition handling +filesystem_read_persistent_filesystem_stats(getty_t) + +# Chown, chmod, read and write ttys. +terminal_use_all_terminals(getty_t) + +############## +# TODO Items + +# TODO:May need to create a new interface for setting device node attributes +#allow getty_t console_device_t:chr_file setattr; + +# TODO: to allow w to display everyone... +#bool user_ttyfile_stat false; +#if (user_ttyfile_stat) { +#allow userdomain ttyfile:chr_file getattr; +#} + +# TODO: Run login in local_login_t domain. +#allow getty_t bin_t:dir search; +#domain_auto_trans(getty_t, login_exec_t, local_login_t) + +# TODO: There is no interface for this in init.if yet. +#allow getty_t initrc_devpts_t:chr_file { read write }; + +# TODO: This needs to go into the init module. Allow init module to transition into getty domain. +#getty_transition(init_t)