-
Notifications
You must be signed in to change notification settings - Fork 1.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
sefcontext module should support equivalent paths #1193
Comments
Files identified in the description: If these files are inaccurate, please update the |
Just curious on the status of this. Are there plans to add this functionality? |
I don't think this module is actively maintained by anyone, so nothing will happen until someone creates a PR for this functionality. |
Files identified in the description: If these files are incorrect, please update the |
First commit for feedback, missing docs and tests.
First commit for feedback, missing docs and tests.
First commit for feedback, missing docs and tests.
* sefcontext: add path substitution support (#1193) First commit for feedback, missing docs and tests. * sefcontext: add documentation * Add changelog fragment * Documentation formatting * Delete extra newline * pep8 fixes Fix indentation * Add version_added to arg docs * Add examples * Don't delete non-matching path substitutions * Add integration tests * Delete only substitutions if such arg passed Don't delete existing regular file context mappings if deletion of a path substitution was requested with the presence of the `equal` arg - delete only path substitutions in such case. Path substitutions and regular mappings may overlap. * Can only add args in minor releases :( * Cleanup before tests * Fix deletion using substitution Was comparing wrong var. * Fix test checking wrong var * Improve args documentation and examples List the default values for selevel, seuser. Add example for deleting path substitutions only. * Add attributes documentation block Not sure if should add become/delegate/async, shouldn't those work just like that without any specific code added for them? * and fix indentation on attribute block * Consistent indentation for attributes Confusing, most plugins indent with 4 spaces. But some use 2 like the rest of the code, so use 2. * Add missing ref for attribute block * Use correct c.g version in doc block Co-authored-by: Felix Fontein <felix@fontein.de> * Add full stop to changelog fragment Co-authored-by: Felix Fontein <felix@fontein.de> * Streamline documentation Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> * Support limiting deletion to setype Deleting file context mappings may be limited by passing setype or equal, if neither arg is passed then delete either setype/equal mappings that match. * Change arg name, diff mode output fix Change arg name from equal to substitute. Print target = subsitute in diff mode same way as semanage does. Also put back platform attribute, try to improve clumsy language in the substitute arg docs. * Delete even if arg setype not match existing Test 5 indicates that deletion is supposed to not check that the arg setype passed when deleting matches the setype of the mapping to delete. Delete any mapping that matches target, regardless of setype arg value. * Update arg name in tests * Too eager replacing Accidentally replaced seobject function names so fix them back * 4564: Fix invalid setype in doc example Change from httpd_git_rw_content_t which does not exist to httpd_sys_rw_content_t Fixes #4564 * Fix documentation attributes Additional fragment Co-authored-by: Felix Fontein <felix@fontein.de> * Update version_added in docs Bumping minor to 6.4.0 since it didn't make 6.3.0. * Add more description to the new arg docs Try to improve discoverability of the new feature and make it easier to understand without deep SELinux understanding. * Update platform to Linux in documentation * Add equal as alias for the new argument Improve discoverability of the new feature by adding an alias to the new module argument. The argument name "equal" will be easy to find for users who are not familiar with SELinux and who just try to match to the CLI tool `semanage`. * And add alias argument properly Previous commit missed actually adding the alias (added to docs only). --------- Co-authored-by: Felix Fontein <felix@fontein.de> Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com>
* sefcontext: add path substitution support (#1193) First commit for feedback, missing docs and tests. * sefcontext: add documentation * Add changelog fragment * Documentation formatting * Delete extra newline * pep8 fixes Fix indentation * Add version_added to arg docs * Add examples * Don't delete non-matching path substitutions * Add integration tests * Delete only substitutions if such arg passed Don't delete existing regular file context mappings if deletion of a path substitution was requested with the presence of the `equal` arg - delete only path substitutions in such case. Path substitutions and regular mappings may overlap. * Can only add args in minor releases :( * Cleanup before tests * Fix deletion using substitution Was comparing wrong var. * Fix test checking wrong var * Improve args documentation and examples List the default values for selevel, seuser. Add example for deleting path substitutions only. * Add attributes documentation block Not sure if should add become/delegate/async, shouldn't those work just like that without any specific code added for them? * and fix indentation on attribute block * Consistent indentation for attributes Confusing, most plugins indent with 4 spaces. But some use 2 like the rest of the code, so use 2. * Add missing ref for attribute block * Use correct c.g version in doc block Co-authored-by: Felix Fontein <felix@fontein.de> * Add full stop to changelog fragment Co-authored-by: Felix Fontein <felix@fontein.de> * Streamline documentation Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> * Support limiting deletion to setype Deleting file context mappings may be limited by passing setype or equal, if neither arg is passed then delete either setype/equal mappings that match. * Change arg name, diff mode output fix Change arg name from equal to substitute. Print target = subsitute in diff mode same way as semanage does. Also put back platform attribute, try to improve clumsy language in the substitute arg docs. * Delete even if arg setype not match existing Test 5 indicates that deletion is supposed to not check that the arg setype passed when deleting matches the setype of the mapping to delete. Delete any mapping that matches target, regardless of setype arg value. * Update arg name in tests * Too eager replacing Accidentally replaced seobject function names so fix them back * 4564: Fix invalid setype in doc example Change from httpd_git_rw_content_t which does not exist to httpd_sys_rw_content_t Fixes #4564 * Fix documentation attributes Additional fragment Co-authored-by: Felix Fontein <felix@fontein.de> * Update version_added in docs Bumping minor to 6.4.0 since it didn't make 6.3.0. * Add more description to the new arg docs Try to improve discoverability of the new feature and make it easier to understand without deep SELinux understanding. * Update platform to Linux in documentation * Add equal as alias for the new argument Improve discoverability of the new feature by adding an alias to the new module argument. The argument name "equal" will be easy to find for users who are not familiar with SELinux and who just try to match to the CLI tool `semanage`. * And add alias argument properly Previous commit missed actually adding the alias (added to docs only). --------- Co-authored-by: Felix Fontein <felix@fontein.de> Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> (cherry picked from commit c8a2ac3)
…th substitutions (#6098) sefcontext: add support for path substitutions (#5830) * sefcontext: add path substitution support (#1193) First commit for feedback, missing docs and tests. * sefcontext: add documentation * Add changelog fragment * Documentation formatting * Delete extra newline * pep8 fixes Fix indentation * Add version_added to arg docs * Add examples * Don't delete non-matching path substitutions * Add integration tests * Delete only substitutions if such arg passed Don't delete existing regular file context mappings if deletion of a path substitution was requested with the presence of the `equal` arg - delete only path substitutions in such case. Path substitutions and regular mappings may overlap. * Can only add args in minor releases :( * Cleanup before tests * Fix deletion using substitution Was comparing wrong var. * Fix test checking wrong var * Improve args documentation and examples List the default values for selevel, seuser. Add example for deleting path substitutions only. * Add attributes documentation block Not sure if should add become/delegate/async, shouldn't those work just like that without any specific code added for them? * and fix indentation on attribute block * Consistent indentation for attributes Confusing, most plugins indent with 4 spaces. But some use 2 like the rest of the code, so use 2. * Add missing ref for attribute block * Use correct c.g version in doc block Co-authored-by: Felix Fontein <felix@fontein.de> * Add full stop to changelog fragment Co-authored-by: Felix Fontein <felix@fontein.de> * Streamline documentation Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> * Support limiting deletion to setype Deleting file context mappings may be limited by passing setype or equal, if neither arg is passed then delete either setype/equal mappings that match. * Change arg name, diff mode output fix Change arg name from equal to substitute. Print target = subsitute in diff mode same way as semanage does. Also put back platform attribute, try to improve clumsy language in the substitute arg docs. * Delete even if arg setype not match existing Test 5 indicates that deletion is supposed to not check that the arg setype passed when deleting matches the setype of the mapping to delete. Delete any mapping that matches target, regardless of setype arg value. * Update arg name in tests * Too eager replacing Accidentally replaced seobject function names so fix them back * 4564: Fix invalid setype in doc example Change from httpd_git_rw_content_t which does not exist to httpd_sys_rw_content_t Fixes #4564 * Fix documentation attributes Additional fragment Co-authored-by: Felix Fontein <felix@fontein.de> * Update version_added in docs Bumping minor to 6.4.0 since it didn't make 6.3.0. * Add more description to the new arg docs Try to improve discoverability of the new feature and make it easier to understand without deep SELinux understanding. * Update platform to Linux in documentation * Add equal as alias for the new argument Improve discoverability of the new feature by adding an alias to the new module argument. The argument name "equal" will be easy to find for users who are not familiar with SELinux and who just try to match to the CLI tool `semanage`. * And add alias argument properly Previous commit missed actually adding the alias (added to docs only). --------- Co-authored-by: Felix Fontein <felix@fontein.de> Co-authored-by: Alexei Znamensky <103110+russoz@users.noreply.github.com> (cherry picked from commit c8a2ac3) Co-authored-by: bluikko <14869000+bluikko@users.noreply.github.com>
7.3.0 Major Changes ------------- kubernetes.core ~~~~~~~~~~~~~~~ - refactor K8sAnsibleMixin into module_utils/k8s/ (ansible-collections/kubernetes.core#481). Minor Changes ------------- Ansible-core ~~~~~~~~~~~~ - Make using blocks as handlers a parser error (ansible/ansible#79968) - ansible-test - Specify the configuration file location required by test plugins when the config file is not found. This resolves issue: ansible/ansible#79411 - ansible-test - Update error handling code to use Python 3.x constructs, avoiding direct use of ``errno``. - ansible-test acme test container - update version to update used Pebble version, underlying Python and Go base containers, and Python requirements (ansible/ansible#79783). cisco.aci ~~~~~~~~~ - Add Node Profile BGP Peer and Route Control Profile functionalities to aci_l3out_bgp_peer module - Add SVI auto state support (auto_state attribute) to aci_l3out_interface - Add aci_aaa_domain, aci_aaa_role and aci_custom_privilege modules - Add aci_fabric_pod_policy_group module - Add aci_interface_policy_leaf_profile_fex_policy_group module and add FEX support to aci_access_port_to_interface_policy_leaf_profile - Add aci_tenant_span_src_group_src module - Add action_groups for module_defaults - Add support for filter direction in aci_contract_subject and aci_contract_subject_to_filter - Update modules to assign roles and permissions to a user cisco.nxos ~~~~~~~~~~ - `nxos_acls` - Support ICMPv6 option. Please refer to module doc for all new options (ansible-collections/cisco.nxos#624). - `nxos_facts` - Update facts gathering logic to ensure that `gather_network_resources: all` does not fail for NX-OS on MDS switches. - `nxos_l2_interfaces` - Add new mode dot1q-tunnel (ansible-collections/cisco.nxos#600). community.crypto ~~~~~~~~~~~~~~~~ - get_certificate - adds ``ciphers`` option for custom cipher selection (ansible-collections/community.crypto#571). community.general ~~~~~~~~~~~~~~~~~ - dnsimple - set custom User-Agent for API requests to DNSimple (ansible-collections/community.general#5927). - flatpak_remote - add new boolean option ``enabled``. It controls, whether the remote is enabled or not (ansible-collections/community.general#5926). - gitlab_project - add ``releases_access_level``, ``environments_access_level``, ``feature_flags_access_level``, ``infrastructure_access_level``, ``monitor_access_level``, and ``security_and_compliance_access_level`` options (ansible-collections/community.general#5986). - jc filter plugin - added the ability to use parser plugins (ansible-collections/community.general#6043). - keycloak_group - add new optional module parameter ``parents`` to properly handle keycloak subgroups (ansible-collections/community.general#5814). - keycloak_user_federation - make ``org.keycloak.storage.ldap.mappers.LDAPStorageMapper`` the default value for mappers ``providerType`` (ansible-collections/community.general#5863). - ldap modules - add ``xorder_discovery`` option (ansible-collections/community.general#6045, ansible-collections/community.general#6109). - lxd_container - add diff and check mode (ansible-collections/community.general#5866). - mattermost, rocketchat, slack - replace missing default favicon with docs.ansible.com favicon (ansible-collections/community.general#5928). - modprobe - add ``persistent`` option (ansible-collections/community.general#4028, ansible-collections/community.general#542). - osx_defaults - include stderr in error messages (ansible-collections/community.general#6011). - proxmox - suppress urllib3 ``InsecureRequestWarnings`` when ``validate_certs`` option is ``false`` (ansible-collections/community.general#5931). - redfish_command - adding ``EnableSecureBoot`` functionality (ansible-collections/community.general#5899). - redfish_command - adding ``VerifyBiosAttributes`` functionality (ansible-collections/community.general#5900). - sefcontext - add support for path substitutions (ansible-collections/community.general#1193). community.grafana ~~~~~~~~~~~~~~~~~ - able to set `uid` for datasources in grafana via module grafana_datasource community.mongodb ~~~~~~~~~~~~~~~~~ - 491 mongodb_shell - Add feature to detect if mongo or mongosh is available. - 494 mongodb_auth - Removes module_defaults from role. - 494 mongodb_shutdown - Fix examples block. - 511 mongodb_auth - Adds support for deletion of users. - 514 mongodb_linux - Remove extended FQCN for pam_limits. - 524 mongodb_auth - Add supports for Amazon Linux 2. - 528 multiple roles - Use first ip address when multiple bind IPs provided. - 530 mongodb_role - Adds new module to manage MongoDB roles. - 536 mongodb_auth - Add user after enabling authentication. - 544 mongodb_replicaset - Module documentation improvements. - 547 mongodb_repository - Bump default of MongoDB to 6.0. community.mysql ~~~~~~~~~~~~~~~ - mysql_info - add ``connector_name`` and ``connector_version`` to returned values (ansible-collections/community.mysql#497). - mysql_role - enable auto_commit to avoid MySQL metadata table lock (ansible-collections/community.mysql#479). - mysql_user - add plugin_auth_string as optional parameter to use a specific pam service if pam/auth_pam plugin is used (ansible-collections/community.mysql#445). - mysql_user - add the ``session_vars`` argument to set session variables at the beginning of module execution (ansible-collections/community.mysql#478). - mysql_user - display a more informative invalid privilege exception. Changes the exception handling of the granting permission logic to show the query executed , params and the exception message granting privileges fails` (ansible-collections/community.mysql#465). - mysql_user - enable auto_commit to avoid MySQL metadata table lock (ansible-collections/community.mysql#479). - setup_mysql - update MySQL tarball URL (ansible-collections/community.mysql#491). community.vmware ~~~~~~~~~~~~~~~~ - vmware_guest_disk - Add support for IDE disk add, remove or reconfigure, and change to gather same VM disk info as in vmware_guest_disk_info (ansible-collections/community.vmware#1428). - vmware_guest_disk - Extend return value documentation for vmware_guest_disk (ansible-collections/community.vmware#1641) - vmware_guest_disk_info - Move gather VM disk info function to vm_device_helper.py (ansible-collections/community.vmware#1617) - vmware_vmotion - New parameter timeout in order to allow vmotions running longer than 1 hour (https://github.com/ansible-collections/community.vmware/pulls/1629). grafana.grafana ~~~~~~~~~~~~~~~ - Updated the return message in grafana.grafana.folder module hetzner.hcloud ~~~~~~~~~~~~~~ - hcloud_server - add private_networks_info containing name and private ip in responses - hcloud_server_info - add private_networks_info containing name and private ip in responses - inventory plugin - Add list of all private networks to server variables. - inventory plugin - Add new connect_with setting public_ipv6 to connect to discovered servers via public IPv6 address. - inventory plugin - Add public IPv6 address to server variables. - inventory plugin - Log warning instead of crashing when some servers do not work with global connect_with setting. inspur.ispim ~~~~~~~~~~~~ - Change the ansible-test.yml application file version. - Change the description of the edit_bios module file_url field. - Modify the description information of the backup module item field. - Modify the description of the media_attach, retry_count, and retry_time_interval fields of the edit_kvm module. - Modify the description of the secure_channel field of the edit_media_instance module. - Modify the description of the slot and vname fields of the add_ldisk module. - Modify the edit_ntp module example. - Modify the edit_snmp_trap module version field description information. - Modify the mode field description information of update_fw module. - Modify the name field description of the user_group module. - Modify the restore module example. - Modify the supporting properties and description information of the edit_ncsi module edit_ncsi field. - The edit_power_budget module adds the except_action field. kubernetes.core ~~~~~~~~~~~~~~~ - Adjust k8s_user_impersonation tests to be compatible with Kubernetes 1.24 (ansible-collections/kubernetes.core#520). - add support for dry run with kubernetes client version >=18.20 (ansible-collections/kubernetes.core#245). - added ignore.txt for Ansible 2.14 devel branch. - fixed module_defaults by removing routing hacks from runtime.yml (ansible-collections/kubernetes.core#347). - helm - add support for -set-file, -set-json, -set and -set-string options when running helm install (ansible-collections/kubernetes.core#533). - helm - add support for helm dependency update (ansible-collections/kubernetes.core#208). - helm - add support for post-renderer flag (ansible-collections/kubernetes.core#30). - helm - add support for timeout cli parameter to allow setting Helm timeout independent of wait (ansible-collections/kubernetes.core#67). - helm - add support for wait parameter for helm uninstall command. (https://github.com/ansible-collections/kubernetes/core/issues/33). - helm - support repo location for helm diff (ansible-collections/kubernetes.core#174). - helm - when ansible is executed in check mode, return the diff between what's deployed and what will be deployed. - helm, helm_plugin, helm_info, helm_plugin_info, kubectl - add support for in-memory kubeconfig. (ansible-collections/kubernetes.core#492). - helm_info - add hooks, notes and manifest as part of returned information (ansible-collections/kubernetes.core#546). - helm_info - add release state as a module argument (ansible-collections/kubernetes.core#377). - helm_info - added possibility to get all values by adding get_all_values parameter (ansible-collections/kubernetes.core#531). - helm_plugin - Add plugin_version parameter to the helm_plugin module (ansible-collections/kubernetes.core#157). - helm_plugin - Add support for helm plugin update using state=update. - helm_repository - Ability to replace (overwrite) the repo if it already exists by forcing (ansible-collections/kubernetes.core#491). - helm_repository - add support for pass-credentials cli parameter (ansible-collections/kubernetes.core#282). - helm_repository - added support for ``host``, ``api_key``, ``validate_certs``, and ``ca_cert``. - helm_repository - mark `pass_credentials` as no_log=True to silence false warning (ansible-collections/kubernetes.core#412). - helm_template - add name (NAME of release) and disable_hook as optional module arguments (ansible-collections/kubernetes.core#313). - helm_template - add show_only and release_namespace as module arguments (ansible-collections/kubernetes.core#313). - helm_template - add support for -set-file, -set-json, -set and -set-string options when running helm template (ansible-collections/kubernetes.core#546). - k8s - add no_proxy support to k8s* (ansible-collections/kubernetes.core#272). - k8s - add support for server_side_apply. (ansible-collections/kubernetes.core#87). - k8s - add support for user impersonation. (https://github.com/ansible-collections/kubernetes/core/issues/40). - k8s - allow resource definition using metadata.generateName (ansible-collections/kubernetes.core#35). - k8s lookup plugin - Enable turbo mode via environment variable (ansible-collections/kubernetes.core#291). - k8s, k8s_scale, k8s_service - add support for resource definition as manifest via. (ansible-collections/kubernetes.core#451). - k8s_cp - remove dependency with 'find' executable on remote pod when state=from_pod (ansible-collections/kubernetes.core#486). - k8s_drain - Adds ``delete_emptydir_data`` option to ``k8s_drain.delete_options`` to evict pods with an ``emptyDir`` volume attached (ansible-collections/kubernetes.core#322). - k8s_exec - select first container from the pod if none specified (ansible-collections/kubernetes.core#358). - k8s_exec - update deprecation warning for `return_code` (ansible-collections/kubernetes.core#417). - k8s_json_patch - minor typo fix in the example section (ansible-collections/kubernetes.core#411). - k8s_log - add the ``all_containers`` for retrieving all containers' logs in the pod(s). - k8s_log - added the `previous` parameter for retrieving the previously terminated pod logs (ansible-collections/kubernetes.core#437). - k8s_log - added the `tail_lines` parameter to limit the number of lines to be retrieved from the end of the logs (ansible-collections/kubernetes.core#488). - k8s_rollback - add support for check_mode. (https://github.com/ansible-collections/kubernetes/core/issues/243). - k8s_scale - add support for check_mode. (https://github.com/ansible-collections/kubernetes/core/issues/244). - kubectl - wait for dd command to complete before proceeding (ansible-collections/kubernetes.core#321). - kubectl.py - replace distutils.spawn.find_executable with shutil.which in the kubectl connection plugin (ansible-collections/kubernetes.core#456). netapp.ontap ~~~~~~~~~~~~ - na_ontap_aggregate - new option ``allow_flexgroups`` added. - na_ontap_cifs - new options ``access_based_enumeration``, ``change_notify``, ``encryption``, ``home_directory``, ``oplocks``, ``show_snapshot``, ``allow_unencrypted_access``, ``namespace_caching`` and ``continuously_available`` added in REST. - na_ontap_dns - ``skip_validation`` option requires 9.9.1 or later with REST and ignored for cluster DNS operations. - na_ontap_dns - support cluster scope for modify and delete. - na_ontap_interface - do not attempt to migrate FC interface if desired ``home_port``, ``home_node`` and ``current_port``, ``current_node`` are same. - na_ontap_license - support for NLF v2 license files. - na_ontap_nfs - new options ``root``, ``windows`` and ``security`` added in REST. - na_ontap_user_role - ``command_directory_name`` is required if ``privileges`` not set in REST. - na_ontap_user_role - ``path`` is required if ``privileges`` set in REST. - na_ontap_volume_efficiency - REST support for ``policy`` requires 9.7 or later, ``path`` requires 9.9.1 or later and ``volume_efficiency`` and ``start_ve_scan_old_data`` requires 9.11.1 or later. - na_ontap_volume_efficiency - ``schedule``, ``start_ve_scan_all``, ``start_ve_build_metadata``, ``start_ve_delete_checkpoint``, ``start_ve_queue_operation``, ``start_ve_qos_policy`` and ``stop_ve_all_operations`` options are not supported with REST. - na_ontap_volume_efficiency - new option ``volume_name`` added. - na_ontap_volume_efficiency - updated private cli with REST API. netbox.netbox ~~~~~~~~~~~~~ - nb_inventory - Add serial and asset tag to extracted attributes purestorage.flasharray ~~~~~~~~~~~~~~~~~~~~~~ - purefa_network - Added support for NVMe-RoCE and NVMe-TCP service types - purefa_user - Added Ops Admin role to choices - purefa_vlan - Added support for NVMe-TCP service type Breaking Changes / Porting Guide -------------------------------- hetzner.hcloud ~~~~~~~~~~~~~~ - inventory plugin - Python v3.5+ is now required. Deprecated Features ------------------- - Since the google.cloud collection seems to be maintained again, we `cancelled the removal process <https://github.com/ansible-collections/overview/blob/main/removal_from_ansible.rst#cancelling-removal-of-an-unmaintained-collection>`__. So contrary to an earlier announcement, this collection is NOT deprecated and will NOT be removed from Ansible 8 (ansible-community/community-topics#105). community.general ~~~~~~~~~~~~~~~~~ - gitlab_runner - the option ``access_level`` will lose its default value in community.general 8.0.0. From that version on, you have set this option to ``ref_protected`` explicitly, if you want to have a protected runner (ansible-collections/community.general#5925).
SUMMARY
This is a duplicate of ansible/ansible#46367 as that issue was closed because of the collection migration. I'm including the text of the issue below:
The
semanage fcontext
command has a-e
/--equal
argument that allows a user to specify a source path to use for filesystem contexts for another directory.For example,
/var/www/html
typically has SELinux contexts applied so that web servers can serve content from that directory. However, if a user decides to put web content in/opt/web
, that directory won't have the correct SELinux contexts applied. The user could then do something like:This would instruct SELinux to apply the same contexts to
/opt/web
that it would normally apply to/var/www/html
.ISSUE TYPE
COMPONENT NAME
sefcontext
ADDITIONAL INFORMATION
It would be nice if this was part of the sefcontext module but maybe it needs to be its own module.
The text was updated successfully, but these errors were encountered: