€•/xŒsphinx.addnodes”Œdocument”“”)�”}”(Œ rawsource”Œ”Œchildren”]”(Œ translations”Œ LanguagesNode”“”)�”}”(hhh]”(hŒ pending_xref”“”)�”}”(hhh]”Œdocutils.nodes”ŒText”“”ŒChinese (Simplified)”…”�”}”Œparent”hsbaŒ attributes”}”(Œids”]”Œclasses”]”Œnames”]”Œdupnames”]”Œbackrefs”]”Œ refdomain”Œstd”Œreftype”Œdoc”Œ reftarget”Œ,/translations/zh_CN/userspace-api/check_exec”Œmodname”NŒ classname”NŒ refexplicit”ˆuŒtagname”hhh ubh)�”}”(hhh]”hŒChinese (Traditional)”…”�”}”hh2sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/zh_TW/userspace-api/check_exec”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒItalian”…”�”}”hhFsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/it_IT/userspace-api/check_exec”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒJapanese”…”�”}”hhZsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/ja_JP/userspace-api/check_exec”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒKorean”…”�”}”hhnsbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/ko_KR/userspace-api/check_exec”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒPortuguese (Brazilian)”…”�”}”hh‚sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/pt_BR/userspace-api/check_exec”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubh)�”}”(hhh]”hŒSpanish”…”�”}”hh–sbah}”(h]”h ]”h"]”h$]”h&]”Œ refdomain”h)Œreftype”h+Œ reftarget”Œ,/translations/sp_SP/userspace-api/check_exec”Œmodname”NŒ classname”NŒ refexplicit”ˆuh1hhh ubeh}”(h]”h ]”h"]”h$]”h&]”Œcurrent_language”ŒEnglish”uh1h hhŒ _document”hŒsource”NŒline”NubhŒcomment”“”)�”}”(hŒ SPDX-License-Identifier: GPL-2.0”h]”hŒ SPDX-License-Identifier: GPL-2.0”…”�”}”hh·sbah}”(h]”h ]”h"]”h$]”h&]”Œ xml:space”Œpreserve”uh1hµhhh²hh³ŒF/var/lib/git/docbuild/linux/Documentation/userspace-api/check_exec.rst”h´Kubh¶)�”}”(hŒ'Copyright © 2024 Microsoft Corporation”h]”hŒ'Copyright © 2024 Microsoft Corporation”…”�”}”hhÈsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhhh²hh³hÇh´KubhŒsection”“”)�”}”(hhh]”(hŒtitle”“”)�”}”(hŒExecutability check”h]”hŒExecutability check”…”�”}”(hhÝh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhhØh²hh³hÇh´KubhŒ paragraph”“”)�”}”(hX:The ``AT_EXECVE_CHECK`` :manpage:`execveat(2)` flag, and the ``SECBIT_EXEC_RESTRICT_FILE`` and ``SECBIT_EXEC_DENY_INTERACTIVE`` securebits are intended for script interpreters and dynamic linkers to enforce a consistent execution security policy handled by the kernel. See the `samples/check-exec/inc.c`_ example.”h]”(hŒThe ”…”�”}”(hhíh²hh³Nh´NubhŒliteral”“”)�”}”(hŒ``AT_EXECVE_CHECK``”h]”hŒAT_EXECVE_CHECK”…”�”}”(hh÷h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhhíubhŒ ”…”�”}”(hhíh²hh³Nh´NubhŒmanpage”“”)�”}”(hŒ:manpage:`execveat(2)`”h]”hŒ execveat(2)”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”hÅhÆŒpath”Œ execveat(2)”Œpage”Œexecveat”Œsection”Œ2”uh1j hhíubhŒ flag, and the ”…”�”}”(hhíh²hh³Nh´Nubhö)�”}”(hŒ``SECBIT_EXEC_RESTRICT_FILE``”h]”hŒSECBIT_EXEC_RESTRICT_FILE”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhhíubhŒ and ”…”�”}”(hhíh²hh³Nh´Nubhö)�”}”(hŒ ``SECBIT_EXEC_DENY_INTERACTIVE``”h]”hŒSECBIT_EXEC_DENY_INTERACTIVE”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhhíubhŒ— securebits are intended for script interpreters and dynamic linkers to enforce a consistent execution security policy handled by the kernel. See the ”…”�”}”(hhíh²hh³Nh´NubhŒ reference”“”)�”}”(hŒ`samples/check-exec/inc.c`_”h]”hŒsamples/check-exec/inc.c”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”Œname”Œsamples/check-exec/inc.c”Œrefuri”Œ`https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/samples/check-exec/inc.c”uh1jGhhíŒresolved”KubhŒ example.”…”�”}”(hhíh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhì)�”}”(hXKWhether an interpreter should check these securebits or not depends on the security risk of running malicious scripts with respect to the execution environment, and whether the kernel can check if a script is trustworthy or not. For instance, Python scripts running on a server can use arbitrary syscalls and access arbitrary files. Such interpreters should then be enlighten to use these securebits and let users define their security policy. However, a JavaScript engine running in a web browser should already be sandboxed and then should not be able to harm the user's environment.”h]”hXMWhether an interpreter should check these securebits or not depends on the security risk of running malicious scripts with respect to the execution environment, and whether the kernel can check if a script is trustworthy or not. For instance, Python scripts running on a server can use arbitrary syscalls and access arbitrary files. Such interpreters should then be enlighten to use these securebits and let users define their security policy. However, a JavaScript engine running in a web browser should already be sandboxed and then should not be able to harm the user’s environment.”…”�”}”(hjfh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubhì)�”}”(hX™Script interpreters or dynamic linkers built for tailored execution environments (e.g. hardened Linux distributions or hermetic container images) could use ``AT_EXECVE_CHECK`` without checking the related securebits if backward compatibility is handled by something else (e.g. atomic update ensuring that all legitimate libraries are allowed to be executed). It is then recommended for script interpreters and dynamic linkers to check the securebits at run time by default, but also to provide the ability for custom builds to behave like if ``SECBIT_EXEC_RESTRICT_FILE`` or ``SECBIT_EXEC_DENY_INTERACTIVE`` were always set to 1 (i.e. always enforce restrictions).”h]”(hŒœScript interpreters or dynamic linkers built for tailored execution environments (e.g. hardened Linux distributions or hermetic container images) could use ”…”�”}”(hjth²hh³Nh´Nubhö)�”}”(hŒ``AT_EXECVE_CHECK``”h]”hŒAT_EXECVE_CHECK”…”�”}”(hj|h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjtubhXp without checking the related securebits if backward compatibility is handled by something else (e.g. atomic update ensuring that all legitimate libraries are allowed to be executed). It is then recommended for script interpreters and dynamic linkers to check the securebits at run time by default, but also to provide the ability for custom builds to behave like if ”…”�”}”(hjth²hh³Nh´Nubhö)�”}”(hŒ``SECBIT_EXEC_RESTRICT_FILE``”h]”hŒSECBIT_EXEC_RESTRICT_FILE”…”�”}”(hjŽh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjtubhŒ or ”…”�”}”(hjth²hh³Nh´Nubhö)�”}”(hŒ ``SECBIT_EXEC_DENY_INTERACTIVE``”h]”hŒSECBIT_EXEC_DENY_INTERACTIVE”…”�”}”(hj h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjtubhŒ9 were always set to 1 (i.e. always enforce restrictions).”…”�”}”(hjth²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KhhØh²hubh×)�”}”(hhh]”(hÜ)�”}”(hŒAT_EXECVE_CHECK”h]”hŒAT_EXECVE_CHECK”…”�”}”(hj»h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hÛhj¸h²hh³hÇh´K"ubhì)�”}”(hXPassing the ``AT_EXECVE_CHECK`` flag to :manpage:`execveat(2)` only performs a check on a regular file and returns 0 if execution of this file would be allowed, ignoring the file format and then the related interpreter dependencies (e.g. ELF libraries, script's shebang).”h]”(hŒ Passing the ”…”�”}”(hjÉh²hh³Nh´Nubhö)�”}”(hŒ``AT_EXECVE_CHECK``”h]”hŒAT_EXECVE_CHECK”…”�”}”(hjÑh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjÉubhŒ flag to ”…”�”}”(hjÉh²hh³Nh´Nubj )�”}”(hŒ:manpage:`execveat(2)`”h]”hŒ execveat(2)”…”�”}”(hjãh²hh³Nh´Nubah}”(h]”h ]”j ah"]”h$]”h&]”hÅhÆjŒ execveat(2)”jŒexecveat”jjuh1j hjÉubhŒÓ only performs a check on a regular file and returns 0 if execution of this file would be allowed, ignoring the file format and then the related interpreter dependencies (e.g. ELF libraries, script’s shebang).”…”�”}”(hjÉh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K$hj¸h²hubhì)�”}”(hX£Programs should always perform this check to apply kernel-level checks against files that are not directly executed by the kernel but passed to a user space interpreter instead. All files that contain executable code, from the point of view of the interpreter, should be checked. However the result of this check should only be enforced according to ``SECBIT_EXEC_RESTRICT_FILE`` or ``SECBIT_EXEC_DENY_INTERACTIVE.``.”h]”(hX`Programs should always perform this check to apply kernel-level checks against files that are not directly executed by the kernel but passed to a user space interpreter instead. All files that contain executable code, from the point of view of the interpreter, should be checked. However the result of this check should only be enforced according to ”…”�”}”(hjýh²hh³Nh´Nubhö)�”}”(hŒ``SECBIT_EXEC_RESTRICT_FILE``”h]”hŒSECBIT_EXEC_RESTRICT_FILE”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjýubhŒ or ”…”�”}”(hjýh²hh³Nh´Nubhö)�”}”(hŒ!``SECBIT_EXEC_DENY_INTERACTIVE.``”h]”hŒSECBIT_EXEC_DENY_INTERACTIVE.”…”�”}”(hjh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjýubhŒ.”…”�”}”(hjýh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K)hj¸h²hubhì)�”}”(hXVThe main purpose of this flag is to improve the security and consistency of an execution environment to ensure that direct file execution (e.g. ``./script.sh``) and indirect file execution (e.g. ``sh script.sh``) lead to the same result. For instance, this can be used to check if a file is trustworthy according to the caller's environment.”h]”(hŒ�The main purpose of this flag is to improve the security and consistency of an execution environment to ensure that direct file execution (e.g. ”…”�”}”(hj/h²hh³Nh´Nubhö)�”}”(hŒ``./script.sh``”h]”hŒ ./script.sh”…”�”}”(hj7h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhj/ubhŒ$) and indirect file execution (e.g. ”…”�”}”(hj/h²hh³Nh´Nubhö)�”}”(hŒ``sh script.sh``”h]”hŒ sh script.sh”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhj/ubhŒ…) lead to the same result. For instance, this can be used to check if a file is trustworthy according to the caller’s environment.”…”�”}”(hj/h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K0hj¸h²hubhì)�”}”(hXsIn a secure environment, libraries and any executable dependencies should also be checked. For instance, dynamic linking should make sure that all libraries are allowed for execution to avoid trivial bypass (e.g. using ``LD_PRELOAD``). For such secure execution environment to make sense, only trusted code should be executable, which also requires integrity guarantees.”h]”(hŒÜIn a secure environment, libraries and any executable dependencies should also be checked. For instance, dynamic linking should make sure that all libraries are allowed for execution to avoid trivial bypass (e.g. using ”…”�”}”(hjah²hh³Nh´Nubhö)�”}”(hŒ``LD_PRELOAD``”h]”hŒ LD_PRELOAD”…”�”}”(hjih²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjaubhŒ‰). For such secure execution environment to make sense, only trusted code should be executable, which also requires integrity guarantees.”…”�”}”(hjah²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K6hj¸h²hubhì)�”}”(hŒ¸To avoid race conditions leading to time-of-check to time-of-use issues, ``AT_EXECVE_CHECK`` should be used with ``AT_EMPTY_PATH`` to check against a file descriptor instead of a path.”h]”(hŒITo avoid race conditions leading to time-of-check to time-of-use issues, ”…”�”}”(hj�h²hh³Nh´Nubhö)�”}”(hŒ``AT_EXECVE_CHECK``”h]”hŒAT_EXECVE_CHECK”…”�”}”(hj‰h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhj�ubhŒ should be used with ”…”�”}”(hj�h²hh³Nh´Nubhö)�”}”(hŒ``AT_EMPTY_PATH``”h]”hŒ AT_EMPTY_PATH”…”�”}”(hj›h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhj�ubhŒ6 to check against a file descriptor instead of a path.”…”�”}”(hj�h²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kh²hh³hÇh´NubjB)�”}”(hX}``SECBIT_EXEC_RESTRICT_FILE=1`` and ``SECBIT_EXEC_DENY_INTERACTIVE=0`` Deny script interpretation if they are not executable, but allow arbitrary user commands. The threat is (potential) malicious scripts run by trusted (and not fooled) users. That can protect against unintended script executions (e.g. ``sh /tmp/*.sh``). This makes sense for (semi-restricted) user sessions. ”h]”(hì)�”}”(hŒF``SECBIT_EXEC_RESTRICT_FILE=1`` and ``SECBIT_EXEC_DENY_INTERACTIVE=0``”h]”(hö)�”}”(hŒ``SECBIT_EXEC_RESTRICT_FILE=1``”h]”hŒSECBIT_EXEC_RESTRICT_FILE=1”…”�”}”(hjÁh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhj½ubhŒ and ”…”�”}”(hj½h²hh³Nh´Nubhö)�”}”(hŒ"``SECBIT_EXEC_DENY_INTERACTIVE=0``”h]”hŒSECBIT_EXEC_DENY_INTERACTIVE=0”…”�”}”(hjÓh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhj½ubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kxhj¹ubhì)�”}”(hŒYDeny script interpretation if they are not executable, but allow arbitrary user commands.”h]”hŒYDeny script interpretation if they are not executable, but allow arbitrary user commands.”…”�”}”(hjçh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kzhj¹ubhì)�”}”(hŒÙThe threat is (potential) malicious scripts run by trusted (and not fooled) users. That can protect against unintended script executions (e.g. ``sh /tmp/*.sh``). This makes sense for (semi-restricted) user sessions.”h]”(hŒ�The threat is (potential) malicious scripts run by trusted (and not fooled) users. That can protect against unintended script executions (e.g. ”…”�”}”(hjõh²hh³Nh´Nubhö)�”}”(hŒ``sh /tmp/*.sh``”h]”hŒ sh /tmp/*.sh”…”�”}”(hjýh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjõubhŒ9). This makes sense for (semi-restricted) user sessions.”…”�”}”(hjõh²hh³Nh´Nubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K}hj¹ubeh}”(h]”h ]”h"]”h$]”h&]”uh1jAhj>h²hh³hÇh´NubjB)�”}”(hX§``SECBIT_EXEC_RESTRICT_FILE=0`` and ``SECBIT_EXEC_DENY_INTERACTIVE=1`` Always interpret scripts, but deny arbitrary user commands. This use case may be useful for secure services (i.e. without interactive user session) where scripts' integrity is verified (e.g. with IMA/EVM or dm-verity/IPE) but where access rights might not be ready yet. Indeed, arbitrary interactive commands would be much more difficult to check. ”h]”(hì)�”}”(hŒF``SECBIT_EXEC_RESTRICT_FILE=0`` and ``SECBIT_EXEC_DENY_INTERACTIVE=1``”h]”(hö)�”}”(hŒ``SECBIT_EXEC_RESTRICT_FILE=0``”h]”hŒSECBIT_EXEC_RESTRICT_FILE=0”…”�”}”(hj#h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjubhŒ and ”…”�”}”(hjh²hh³Nh´Nubhö)�”}”(hŒ"``SECBIT_EXEC_DENY_INTERACTIVE=1``”h]”hŒSECBIT_EXEC_DENY_INTERACTIVE=1”…”�”}”(hj5h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K�hjubhì)�”}”(hŒ;Always interpret scripts, but deny arbitrary user commands.”h]”hŒ;Always interpret scripts, but deny arbitrary user commands.”…”�”}”(hjIh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´Kƒhjubhì)�”}”(hX!This use case may be useful for secure services (i.e. without interactive user session) where scripts' integrity is verified (e.g. with IMA/EVM or dm-verity/IPE) but where access rights might not be ready yet. Indeed, arbitrary interactive commands would be much more difficult to check.”h]”hX#This use case may be useful for secure services (i.e. without interactive user session) where scripts’ integrity is verified (e.g. with IMA/EVM or dm-verity/IPE) but where access rights might not be ready yet. Indeed, arbitrary interactive commands would be much more difficult to check.”…”�”}”(hjWh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K…hjubeh}”(h]”h ]”h"]”h$]”h&]”uh1jAhj>h²hh³hÇh´NubjB)�”}”(hXB``SECBIT_EXEC_RESTRICT_FILE=1`` and ``SECBIT_EXEC_DENY_INTERACTIVE=1`` Deny script interpretation if they are not executable, and also deny any arbitrary user commands. The threat is malicious scripts run by untrusted users (but trusted code). This makes sense for system services that may only execute trusted scripts. ”h]”(hì)�”}”(hŒF``SECBIT_EXEC_RESTRICT_FILE=1`` and ``SECBIT_EXEC_DENY_INTERACTIVE=1``”h]”(hö)�”}”(hŒ``SECBIT_EXEC_RESTRICT_FILE=1``”h]”hŒSECBIT_EXEC_RESTRICT_FILE=1”…”�”}”(hjsh²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjoubhŒ and ”…”�”}”(hjoh²hh³Nh´Nubhö)�”}”(hŒ"``SECBIT_EXEC_DENY_INTERACTIVE=1``”h]”hŒSECBIT_EXEC_DENY_INTERACTIVE=1”…”�”}”(hj…h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hõhjoubeh}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KŠhjkubhì)�”}”(hŒaDeny script interpretation if they are not executable, and also deny any arbitrary user commands.”h]”hŒaDeny script interpretation if they are not executable, and also deny any arbitrary user commands.”…”�”}”(hj™h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´KŒhjkubhì)�”}”(hŒ–The threat is malicious scripts run by untrusted users (but trusted code). This makes sense for system services that may only execute trusted scripts.”h]”hŒ–The threat is malicious scripts run by untrusted users (but trusted code). This makes sense for system services that may only execute trusted scripts.”…”�”}”(hj§h²hh³Nh´Nubah}”(h]”h ]”h"]”h$]”h&]”uh1hëh³hÇh´K�hjkubeh}”(h]”h ]”h"]”h$]”h&]”uh1jAhj>h²hh³hÇh´Nubeh}”(h]”h ]”h"]”h$]”h&]”Œenumtype”Œarabic”Œprefix”hŒsuffix”Œ.”uh1j<hj»h²hh³hÇh´Kmubh¶)�”}”(hŒLinks”h]”hŒLinks”…”�”}”hjÆsbah}”(h]”h ]”h"]”h$]”h&]”hÅhÆuh1hµhj»h²hh³hÇh´K’ubhŒtarget”“”)�”}”(hŒ�.. _samples/check-exec/inc.c: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/samples/check-exec/inc.c”h]”h}”(h]”Œsamples-check-exec-inc-c”ah ]”h"]”Œsamples/check-exec/inc.c”ah$]”h&]”jYjZuh1jÔh´K“hj»h²hh³hÇŒ referenced”Kubeh}”(h]”Œ:secbit-exec-restrict-file-and-secbit-exec-deny-interactive”ah ]”h"]”Œ:secbit_exec_restrict_file and secbit_exec_deny_interactive”ah$]”h&]”uh1hÖhhØh²hh³hÇh´KAubeh}”(h]”Œexecutability-check”ah ]”h"]”Œexecutability check”ah$]”h&]”uh1hÖhhh²hh³hÇh´Kubeh}”(h]”h ]”h"]”h$]”h&]”Œsource”hÇuh1hŒcurrent_source”NŒ current_line”NŒsettings”Œdocutils.frontend”ŒValues”“”)�”}”(hÛNŒ generator”NŒ datestamp”NŒ source_link”NŒ source_url”NŒ toc_backlinks”Œentry”Œfootnote_backlinks”KŒ sectnum_xform”KŒstrip_comments”NŒstrip_elements_with_classes”NŒ strip_classes”NŒ report_level”KŒ halt_level”KŒexit_status_level”KŒdebug”NŒwarning_stream”NŒ traceback”ˆŒinput_encoding”Œ utf-8-sig”Œinput_encoding_error_handler”Œstrict”Œoutput_encoding”Œutf-8”Œoutput_encoding_error_handler”jŒerror_encoding”Œutf-8”Œerror_encoding_error_handler”Œbackslashreplace”Œ language_code”Œen”Œrecord_dependencies”NŒconfig”NŒ id_prefix”hŒauto_id_prefix”Œid”Œ dump_settings”NŒdump_internals”NŒdump_transforms”NŒdump_pseudo_xml”NŒexpose_internals”NŒstrict_visitor”NŒ_disable_config”NŒ_source”hÇŒ _destination”NŒ _config_files”]”Œ7/var/lib/git/docbuild/linux/Documentation/docutils.conf”aŒfile_insertion_enabled”ˆŒ raw_enabled”KŒline_length_limit”M'Œpep_references”NŒ pep_base_url”Œhttps://peps.python.org/”Œpep_file_url_template”Œpep-%04d”Œrfc_references”NŒ rfc_base_url”Œ&https://datatracker.ietf.org/doc/html/”Œ tab_width”KŒtrim_footnote_reference_space”‰Œsyntax_highlight”Œlong”Œ smart_quotes”ˆŒsmartquotes_locales”]”Œcharacter_level_inline_markup”‰Œdoctitle_xform”‰Œ docinfo_xform”KŒsectsubtitle_xform”‰Œ image_loading”Œlink”Œembed_stylesheet”‰Œcloak_email_addresses”ˆŒsection_self_link”‰Œenv”NubŒreporter”NŒindirect_targets”]”Œsubstitution_defs”}”Œsubstitution_names”}”Œrefnames”}”Œsamples/check-exec/inc.c”]”jIasŒrefids”}”Œnameids”}”(jðjíj¸jµjèjåjßjÜuŒ nametypes”}”(jð‰j¸‰jè‰j߈uh}”(jíhØjµj¸jåj»jÜjÖuŒ footnote_refs”}”Œ citation_refs”}”Œ autofootnotes”]”Œautofootnote_refs”]”Œsymbol_footnotes”]”Œsymbol_footnote_refs”]”Œ footnotes”]”Œ citations”]”Œautofootnote_start”KŒsymbol_footnote_start”KŒ id_counter”Œ collections”ŒCounter”“”}”…”R”Œparse_messages”]”Œtransform_messages”]”Œ transformer”NŒ include_log”]”Œ decoration”Nh²hub.