{"id":20284,"date":"2026-08-03T11:50:45","date_gmt":"2026-08-03T09:50:45","guid":{"rendered":"https:\/\/webhosting.de\/linux-capabilities-root-rechte-granular-aufteilen-sicherheitskonzept\/"},"modified":"2026-08-03T11:50:45","modified_gmt":"2026-08-03T09:50:45","slug":"linux-capabilities-root-privileges-granular-allocation-security-concept","status":"publish","type":"post","link":"https:\/\/webhosting.de\/en\/linux-capabilities-root-rechte-granular-aufteilen-sicherheitskonzept\/","title":{"rendered":"Linux Capabilities: Secure and Granular Distribution of Root Privileges"},"content":{"rendered":"<p>With Linux Capabilities, I break down root privileges into small, clearly defined privileges, thereby drastically reducing the risk. This allows me to precisely control which processes are allowed to perform specific actions and limit the attack surface of each application.<\/p>\n\n<h2>Key points<\/h2>\n\n<ul>\n  <li><strong>fine-grained<\/strong> Instead of having unlimited power: Break down root privileges into smaller, more granular privileges.<\/li>\n  <li><strong>File Capabilities<\/strong> Instead of Set-UID: Bind the required permissions directly to the binary files.<\/li>\n  <li><strong>Capability Sets<\/strong> Configure the following in a targeted manner: Permitted, Effective, Inheritable, Bounding.<\/li>\n  <li><strong>Privilege Separation<\/strong>: Keep services, tools, and tasks strictly separate.<\/li>\n  <li><strong>Defense-in-Depth<\/strong>: Supplement capabilities with sudo, roles, and logs.<\/li>\n<\/ul>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img fetchpriority=\"high\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/linux-serververwaltung-8291.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Why separate root privileges?<\/h2>\n\n<p>A root account grants <strong>Full access<\/strong> on the file and process levels, but that\u2019s exactly what invites serious errors. One wrong command or exploit is enough to bring down an entire installation. I therefore limit far-reaching actions to what is absolutely necessary, thereby reducing the extent of damage and recovery time. The principle of least privilege keeps services small and manageable. I disable direct root login, rely on roles, and maintain comprehensive logs.<\/p>\n\n<h2>Linux Capabilities Explained in a Nutshell<\/h2>\n\n<p>Linux capabilities break down traditional root privileges into clearly defined <strong>Privileges<\/strong>. Each process receives only the building blocks it actually needs to perform its task, such as binding to ports below 1024 or sending special signals. This allows me to avoid the previous all-or-nothing approach. The kernel manages these building blocks on a per-process basis and enforces them strictly. This ensures that control remains granular and traceable.<\/p>\n\n<p>From a technical standpoint, I link skills to either <strong>Processes<\/strong> (based on their capability sets) or to <strong>Files<\/strong> (as extended attributes <code>security.capability<\/code> ELF binaries). When <code>execve()<\/code>-When the kernel starts, it merges the file capabilities with the process sets: Put simply, permitted capabilities from the file attribute, combined with the inheritable permissions of the calling process, are combined into the new Permitted set and\u2014if marked as such\u2014simultaneously activated in the Effective set. This avoids Set-UID workarounds and keeps privileges visible and verifiable.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/linux_rechte_besprechung_3820.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Understanding Capability Sets in a Process Context<\/h2>\n\n<p>Every process has several sets of permissions, which I can specifically <strong>control<\/strong>. The Permitted Set defines what a process is generally allowed to have. The Effective Set specifies what is currently active. The Inheritable Set determines which privileges can be passed on to child processes. The Bounding Set sets a strict upper limit and prevents processes from exceeding it.<\/p>\n\n<h2>Ambient Capabilities and Securebits<\/h2>\n\n<p>In addition to the well-known sets, there is the <strong>Ambient Set<\/strong>, which at the <code>execve()<\/code> does not expire automatically. I use it when an unprivileged process specifically needs minimal permissions across multiple <code>exec<\/code>-across levels (such as when calling external utilities). Ambient permissions are only included in the effective permissions if the called file itself does not set any file capabilities\u2014this is how I prevent unintended escalation.<\/p>\n\n<p>With the <strong>Securebits<\/strong> I control the details of the transitions, such as whether a process is allowed to retain its previously set capabilities after its UID changes (<code>keepcaps<\/code>) or whether he is generally prohibited from obtaining new privileges (<code>no_new_privs<\/code>). In practice, I configure Securebits strictly and sacrifice convenience in order to break exploit chains.<\/p>\n\n<h2>File Capabilities Instead of Set-UID<\/h2>\n\n<p>I'm replacing set-UID binaries with file capabilities to reduce the risk of <strong>lower<\/strong>. Instead of granting root privileges to a program, I just set the necessary permissions. A typical change looks like this: <code>setcap 'cap_net_bind_service=+ep' \/usr\/bin\/meinserver<\/code>. With <code>getcap -r \/<\/code> I check which files contain capabilities. This significantly reduces the number of potential escalation paths.<\/p>\n\n<p>It is important that file capabilities are applied only to <strong>ELF Binaries<\/strong> work. Interpreter scripts (e.g., Python, Bash) do not reliably inherit them. In such cases, I encapsulate the privileged action in a small, statically checked helper program or use socket activation so that my service doesn\u2019t have to bind itself in the first place. I also keep a close eye on file permissions: Capabilities grant special privileges with respect to the kernel, but do not replace <strong>none<\/strong> standard ACLs or POSIX permissions.<\/p>\n\n<p>Skills are quickly lost when copying or packing: <code>cp<\/code> without XATTR support, incorrectly set <code>umask<\/code> or remove a build artifact from a file system without extended attributes <code>security.capability<\/code> Implicitly. That's why I work in a reproducible manner and use: <code>cp --preserve=xattr ...<\/code>, <code>tar --xattrs<\/code>, <code>rsync -X<\/code>. In package builds, I explicitly set file capabilities in the install script, test the installation in a clean VM, and verify <code>getcap<\/code> in the CI.<\/p>\n\n<h2>Privilege Separation with Realistic Scenarios<\/h2>\n\n<p>A web server needs access to ports 80 and 443, but not to kernel modules or system reboots, so I set <strong>CAP_NET_BIND_SERVICE<\/strong> and nothing else. A backup agent is allowed to read and write files, but cannot change the network configuration. A monitoring tool is granted read access to metrics but has no rights to make changes. These restrictions confine attacks to a local scope rather than allowing them to affect the entire system. It is precisely this separation that keeps services manageable and misconfigurations in check.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/balancing-linux-capabilities-5618.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Combining sudo with Roles<\/h2>\n\n<p>Capabilities are no substitute for a clean <strong>Role Structure<\/strong>, they complement them. I grant sudo privileges sparingly, use full command paths, and steer clear of blanket rules like \u201eALL=(ALL) ALL.\u201c I log every permission grant. Groups consolidate responsibilities, while capabilities set technical limits on processes. This creates clear lines of responsibility without excessive privileges.<\/p>\n\n<h2>Common Pitfalls and Best Practices<\/h2>\n\n<ul>\n  <li><strong>Do not use CAP_SYS_ADMIN as an abbreviation:<\/strong> This law is a catch-all. I'm replacing it with more specific alternatives (e.g.,. <code>CAP_SYS_CHROOT<\/code>, <code>CAP_SYS_TIME<\/code>, <code>CAP_SYS_NICE<\/code>) or skip it altogether.<\/li>\n  <li><strong>File permissions remain strictly enforced:<\/strong> Capabilities do not generally override DAC. Without <code>CAP_DAC_OVERRIDE<\/code> The kernel continues to respect owner and mode bits. So I continue to grant only minimal read permissions.<\/li>\n  <li><strong>Path hardening:<\/strong> If I assign file capabilities to a binary, I prevent PATH spoofing (absolute paths in <code>sudoers<\/code>, write permissions disabled on directories in the search path).<\/li>\n  <li><strong>Drop early, drop often:<\/strong> Processes may start with more permissions than necessary. I remove unnecessary permissions immediately after the critical step (<code>prctl()<\/code>\/libcap) and set <code>no_new_privs<\/code>, where possible.<\/li>\n  <li><strong>Limiting inheritance:<\/strong> I keep the Inheritable and Ambient sets small. Child processes must not open any new doors.<\/li>\n  <li><strong>Check the build and deployment pipeline:<\/strong> I confirm that <code>security.capability<\/code> is preserved, and no staging steps (container layers, NFS, artifact scanners) remove XATTRs.<\/li>\n<\/ul>\n\n<h2>Overview of Key Capabilities and Risks<\/h2>\n\n<p>Before assigning privileges, I clearly define the privileges required and assess their risk. The following table shows typical examples along with their effects and classifications. I always consider alternatives to avoid granting excessive privileges. In particular, <strong>CAP_SYS_ADMIN<\/strong> I grant them very sparingly. Whenever possible, I replace broad privileges with targeted, narrow ones.<\/p>\n\n<table>\n  <thead>\n    <tr>\n      <th>Capability<\/th>\n      <th>Purpose<\/th>\n      <th>Risk<\/th>\n      <th>Example<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>CAP_NET_BIND_SERVICE<\/td>\n      <td>Bind to ports &lt; 1024<\/td>\n      <td>Low to medium<\/td>\n      <td>Web server on ports 80\/443<\/td>\n    <\/tr>\n    <tr>\n      <td>CAP_SYS_BOOT<\/td>\n      <td>Restart the system<\/td>\n      <td>High<\/td>\n      <td>Scheduled Reboot<\/td>\n    <\/tr>\n    <tr>\n      <td>CAP_SYS_MODULE<\/td>\n      <td>Loading\/Unloading Kernel Modules<\/td>\n      <td>Very high<\/td>\n      <td>Driver Management<\/td>\n    <\/tr>\n    <tr>\n      <td>CAP_SYS_ADMIN<\/td>\n      <td>Versatile Administrative Operations<\/td>\n      <td>Very high<\/td>\n      <td>Various maintenance tasks<\/td>\n    <\/tr>\n    <tr>\n      <td>CAP_SETUID \/ CAP_SETGID<\/td>\n      <td>Change UID\/GID<\/td>\n      <td>Medium to high<\/td>\n      <td>Change of Rights While on Duty<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/linux_capabilities_tech-office_4738.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<p>Beyond the table, I'm currently evaluating <code>CAP_SYS_PTRACE<\/code> (Debugging processes), <code>CAP_NET_ADMIN<\/code> (network parameterization) and <code>CAP_DAC_OVERRIDE<\/code> (Bypassing file access restrictions) is highly controversial. There are often patterns that avoid these permissions: dedicated metrics endpoints instead of process snooping, socket activation or port forwarding instead of bind permissions, and proper file permissions instead of blanket DAC bypasses.<\/p>\n\n<h2>Hardening in Containers and Hosting<\/h2>\n\n<p>In multi-tenant environments, I consider capabilities to be radically <strong>small<\/strong> and prevent inheritance into child processes. Containers benefit significantly once the bounding set is tightly defined. I combine this with isolated filesystem and process spaces. This introduction to isolation approaches helps me get an overview of <a href=\"https:\/\/webhosting.de\/en\/process-isolation-hosting-chroot-cagefs-container-jails-security-comparison\/\">Process isolation<\/a>. This keeps services separate, even if an application malfunctions.<\/p>\n\n<p>In practice, I set containers to \u201edrop everything, add selectively\u201c by default: <code>--cap-drop=ALL --cap-add=NET_BIND_SERVICE<\/code> for web services, no mount permissions, no <code>SYS_ADMIN<\/code>. In orchestrated environments, I maintain the profile centrally and validate it against policies. Important: I do not rely on file capabilities in the image; instead, I assign runtime permissions in the orchestrator\u2014in a way that is reproducible and auditable.<\/p>\n\n<h2>Interaction with SELinux and AppArmor<\/h2>\n\n<p>Capabilities control what a process is allowed to do, while MAC profiles determine what it can access, and the two work in harmony <strong>good<\/strong>. I set capabilities strictly and let SELinux or AppArmor restrict access to files and sockets. This creates layered protection that puts multiple hurdles in the way of exploits. I found a quick comparison here: <a href=\"https:\/\/webhosting.de\/en\/selinux-vs-apparmor-linux-security-server-hardening-protection\/\">SELinux vs. AppArmor<\/a>. This keeps a compromised service contained and limits the damage it can cause.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/entwickler_schreibtisch2345.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Practical Application: A Step-by-Step Approach<\/h2>\n\n<p>I'll start by taking stock of all the services and their <strong>Requirements<\/strong>. After that, I remove unnecessary Set-UID binaries or replace them with specific file capabilities. I configure `sudo` restrictively and document every entry. I assign tasks to roles and groups and keep permissions to a minimum. I then test the system under load and check log entries for unexpected denials.<\/p>\n\n<p>A short checklist helps me with the transition:<\/p>\n<ul>\n  <li>Document the requirements for each service in writing (only what is truly necessary).<\/li>\n  <li>Take inventory of existing special rights (<code>find \/ -perm -4000<\/code>, <code>getcap -r \/<\/code>).<\/li>\n  <li>Targeted replacement: Remove Set-UID, set file capabilities, and revoke permissions early on.<\/li>\n  <li>Close inheritance: Tighten the bounding set; minimize Inheritable\/Ambient.<\/li>\n  <li>Securing Systemd\/Container Profiles (<code>CapabilityBoundingSet=<\/code>, <code>NoNewPrivileges=yes<\/code>).<\/li>\n  <li>Test under load, review logs and audit entries, and document exceptions.<\/li>\n<\/ul>\n\n<h2>Monitoring, Namespaces, and Continuous Audits<\/h2>\n\n<p>I monitor log files, alerts, and system calls so that unwanted actions are immediately <strong>stand out<\/strong>. I regularly validate changes to capabilities, sudo rules, and roles. Where appropriate, I further isolate workloads using kernel isolation mechanisms. This overview provides a good starting point for <a href=\"https:\/\/webhosting.de\/en\/server-context-isolation-namespaces-cgroups-hosting-security\/\">Namespaces and Cgroups<\/a>. That way, I can spot any abnormalities early on and keep the area clean.<\/p>\n\n<p>In my daily life, I use simple tests: <code>capsh --print<\/code> Show me the current set of skills, <code>getpcaps<\/code> lists procedural rights and in <code>\/proc\/\/status<\/code> I read <code>CapEff<\/code>, <code>CapPrm<\/code>, <code>CapBnd<\/code>. With <code>auditd<\/code> I track changes to the capability status (e.g., rule set to <code>capset<\/code>), I correlate events with deployments and set up alerts if extensive permissions suddenly appear. For tricky cases, I find it helpful to <code>strace -e capget,capset<\/code>, to highlight rights manipulations.<\/p>\n\n\n<figure class=\"wp-block-image size-full is-resized\">\n  <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/webhosting.de\/wp-content\/uploads\/2026\/08\/linux-capabilities-8123.png\" alt=\"\" width=\"1536\" height=\"1024\"\/>\n<\/figure>\n\n\n<h2>Practical Examples of Systemd and Containers<\/h2>\n\n<p>I run many services as systemd units and encapsulate permissions there:<\/p>\n<ul>\n  <li><code>CapabilityBoundingSet=CAP_NET_BIND_SERVICE<\/code> reduces the available rights window to the bare minimum.<\/li>\n  <li><code>AmbientCapabilities=CAP_NET_BIND_SERVICE<\/code> Gives the service the right to bind to ports 80\/443 without file capabilities.<\/li>\n  <li><code>NoNewPrivileges=yes<\/code> prevents future expansions of legal rights.<\/li>\n  <li><code>User=<\/code>, <code>Group=<\/code>, <code>ProtectSystem=strict<\/code>, <code>PrivateTmp=yes<\/code> complete the insulation.<\/li>\n<\/ul>\n<p>In containers, I start processes with as few resources as possible: <code>docker run --cap-drop=ALL --cap-add=NET_BIND_SERVICE --read-only<\/code>. For short-lived jobs, I use runtime capabilities instead of file capabilities in the image so that builds remain reproducible and permissions are tied to the environment.<\/p>\n\n<h2>Real-World Migration Examples<\/h2>\n\n<ul>\n  <li><strong>ping without Set-UID:<\/strong> Instead of <code>setuid root<\/code> I set <code>setcap 'cap_net_raw=+ep' \/bin\/ping<\/code>. This allows any user to open ICMP sockets without full root privileges. I regularly check using <code>getcap \/bin\/ping<\/code>, whether the attribute is preserved.<\/li>\n  <li><strong>Web service on port 80\/443:<\/strong> I run my service as a non-privileged user and only provide <code>cap_net_bind_service<\/code>. If the service is already behind a reverse proxy, I can alternatively bind to ports 80\/443 there and use a high port internally\u2014without needing any additional skills.<\/li>\n  <li><strong>Change of Parties in the Lawsuit:<\/strong> For tools that need elevated privileges for a short time (e.g., setting nice levels), I set <code>cap_sys_nice<\/code>, complete the action early and then drop the ability again. I avoid permanently increased rights.<\/li>\n<\/ul>\n\n<h2>Limits and Alternatives<\/h2>\n\n<p>Not every use case requires capabilities. Often, there are secure alternatives that involve less risk:<\/p>\n<ul>\n  <li><strong>Socket Activation:<\/strong> The init service (e.g., systemd) opens privileged sockets and passes them to the process. My service then does not need bind privileges.<\/li>\n  <li><strong>Port Forwarding:<\/strong> I use firewall rules to redirect ports 80 and 443 to a high-numbered port. The service remains unprivileged, and the system behavior does not change.<\/li>\n  <li><strong>Unprivileged low-ports:<\/strong> Where appropriate, I can raise the threshold for unprivileged ports. However, that expands the leeway for all processes\u2014I carefully weigh the risks against the benefits.<\/li>\n  <li><strong>Small Helpers Instead of Jack-of-All-Trades:<\/strong> I'd rather have a tiny, audited binary with exactly one capability than a huge monolith with a broad set of permissions.<\/li>\n<\/ul>\n\n<h2>Briefly summarized<\/h2>\n\n<p>With <strong>Linux Capabilities<\/strong> I break down root privileges into small, easily manageable privileges. File capabilities replace risky Set-UID binaries and mitigate the consequences of an attack. Combined with strict sudo rules, roles, and MAC profiles, this creates layered protection with clear boundaries. Bounding and Inheritable sets limit inheritance and keep processes on track. Taking this approach significantly reduces the attack surface and keeps administrative overhead manageable.<\/p>","protected":false},"excerpt":{"rendered":"<p>Linux capabilities divide root privileges into granular privileges. Learn how the capability model strengthens your server security and enables privilege separation on Linux systems.<\/p>","protected":false},"author":1,"featured_media":20277,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[794],"tags":[],"class_list":["post-20284","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sicherheit-computer_und_internet"],"acf":[],"_wp_attached_file":null,"_wp_attachment_metadata":null,"litespeed-optimize-size":null,"litespeed-optimize-set":null,"_elementor_source_image_hash":null,"_wp_attachment_image_alt":null,"stockpack_author_name":null,"stockpack_author_url":null,"stockpack_provider":null,"stockpack_image_url":null,"stockpack_license":null,"stockpack_license_url":null,"stockpack_modification":null,"color":null,"original_id":null,"original_url":null,"original_link":null,"unsplash_location":null,"unsplash_sponsor":null,"unsplash_exif":null,"unsplash_attachment_metadata":null,"_elementor_is_screenshot":null,"surfer_file_name":null,"surfer_file_original_url":null,"envato_tk_source_kit":null,"envato_tk_source_index":null,"envato_tk_manifest":null,"envato_tk_folder_name":null,"envato_tk_builder":null,"envato_elements_download_event":null,"_menu_item_type":null,"_menu_item_menu_item_parent":null,"_menu_item_object_id":null,"_menu_item_object":null,"_menu_item_target":null,"_menu_item_classes":null,"_menu_item_xfn":null,"_menu_item_url":null,"_trp_menu_languages":null,"rank_math_primary_category":null,"rank_math_title":null,"inline_featured_image":null,"_yoast_wpseo_primary_category":null,"rank_math_schema_blogposting":null,"rank_math_schema_videoobject":null,"_oembed_049c719bc4a9f89deaead66a7da9fddc":null,"_oembed_time_049c719bc4a9f89deaead66a7da9fddc":null,"_yoast_wpseo_focuskw":null,"_yoast_wpseo_linkdex":null,"_oembed_27e3473bf8bec795fbeb3a9d38489348":null,"_oembed_c3b0f6959478faf92a1f343d8f96b19e":null,"_trp_translated_slug_en_us":null,"_wp_desired_post_slug":null,"_yoast_wpseo_title":null,"tldname":null,"tldpreis":null,"tldrubrik":null,"tldpolicylink":null,"tldsize":null,"tldregistrierungsdauer":null,"tldtransfer":null,"tldwhoisprivacy":null,"tldregistrarchange":null,"tldregistrantchange":null,"tldwhoisupdate":null,"tldnameserverupdate":null,"tlddeletesofort":null,"tlddeleteexpire":null,"tldumlaute":null,"tldrestore":null,"tldsubcategory":null,"tldbildname":null,"tldbildurl":null,"tldclean":null,"tldcategory":null,"tldpolicy":null,"tldbesonderheiten":null,"tld_bedeutung":null,"_oembed_d167040d816d8f94c072940c8009f5f8":null,"_oembed_b0a0fa59ef14f8870da2c63f2027d064":null,"_oembed_4792fa4dfb2a8f09ab950a73b7f313ba":null,"_oembed_33ceb1fe54a8ab775d9410abf699878d":null,"_oembed_fd7014d14d919b45ec004937c0db9335":null,"_oembed_21a029d076783ec3e8042698c351bd7e":null,"_oembed_be5ea8a0c7b18e658f08cc571a909452":null,"_oembed_a9ca7a298b19f9b48ec5914e010294d2":null,"_oembed_f8db6b27d08a2bb1f920e7647808899a":null,"_oembed_168ebde5096e77d8a89326519af9e022":null,"_oembed_cdb76f1b345b42743edfe25481b6f98f":null,"_oembed_87b0613611ae54e86e8864265404b0a1":null,"_oembed_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_oembed_time_27aa0e5cf3f1bb4bc416a4641a5ac273":null,"_tldname":null,"_tldclean":null,"_tldpreis":null,"_tldcategory":null,"_tldsubcategory":null,"_tldpolicy":null,"_tldpolicylink":null,"_tldsize":null,"_tldregistrierungsdauer":null,"_tldtransfer":null,"_tldwhoisprivacy":null,"_tldregistrarchange":null,"_tldregistrantchange":null,"_tldwhoisupdate":null,"_tldnameserverupdate":null,"_tlddeletesofort":null,"_tlddeleteexpire":null,"_tldumlaute":null,"_tldrestore":null,"_tldbildname":null,"_tldbildurl":null,"_tld_bedeutung":null,"_tldbesonderheiten":null,"_oembed_ad96e4112edb9f8ffa35731d4098bc6b":null,"_oembed_8357e2b8a2575c74ed5978f262a10126":null,"_oembed_3d5fea5103dd0d22ec5d6a33eff7f863":null,"_eael_widget_elements":null,"_oembed_0d8a206f09633e3d62b95a15a4dd0487":null,"_oembed_time_0d8a206f09633e3d62b95a15a4dd0487":null,"_aioseo_description":null,"_eb_attr":null,"_eb_data_table":null,"_oembed_819a879e7da16dd629cfd15a97334c8a":null,"_oembed_time_819a879e7da16dd629cfd15a97334c8a":null,"_acf_changed":null,"_wpcode_auto_insert":null,"_edit_last":null,"_edit_lock":null,"_oembed_e7b913c6c84084ed9702cb4feb012ddd":null,"_oembed_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_time_bfde9e10f59a17b85fc8917fa7edf782":null,"_oembed_03514b67990db061d7c4672de26dc514":null,"_oembed_time_03514b67990db061d7c4672de26dc514":null,"rank_math_news_sitemap_robots":null,"rank_math_robots":null,"_eael_post_view_count":"103","_trp_automatically_translated_slug_ru_ru":null,"_trp_automatically_translated_slug_et":null,"_trp_automatically_translated_slug_lv":null,"_trp_automatically_translated_slug_fr_fr":null,"_trp_automatically_translated_slug_en_us":null,"_wp_old_slug":null,"_trp_automatically_translated_slug_da_dk":null,"_trp_automatically_translated_slug_pl_pl":null,"_trp_automatically_translated_slug_es_es":null,"_trp_automatically_translated_slug_hu_hu":null,"_trp_automatically_translated_slug_fi":null,"_trp_automatically_translated_slug_ja":null,"_trp_automatically_translated_slug_lt_lt":null,"_elementor_edit_mode":null,"_elementor_template_type":null,"_elementor_version":null,"_elementor_pro_version":null,"_wp_page_template":null,"_elementor_page_settings":null,"_elementor_data":null,"_elementor_css":null,"_elementor_conditions":null,"_happyaddons_elements_cache":null,"_oembed_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_time_75446120c39305f0da0ccd147f6de9cb":null,"_oembed_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_time_3efb2c3e76a18143e7207993a2a6939a":null,"_oembed_59808117857ddf57e478a31d79f76e4d":null,"_oembed_time_59808117857ddf57e478a31d79f76e4d":null,"_oembed_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_time_965c5b49aa8d22ce37dfb3bde0268600":null,"_oembed_81002f7ee3604f645db4ebcfd1912acf":null,"_oembed_time_81002f7ee3604f645db4ebcfd1912acf":null,"_elementor_screenshot":null,"_oembed_7ea3429961cf98fa85da9747683af827":null,"_oembed_time_7ea3429961cf98fa85da9747683af827":null,"_elementor_controls_usage":null,"_elementor_page_assets":[],"_elementor_screenshot_failed":null,"theplus_transient_widgets":null,"_eael_custom_js":null,"_wp_old_date":null,"_trp_automatically_translated_slug_it_it":null,"_trp_automatically_translated_slug_pt_pt":null,"_trp_automatically_translated_slug_zh_cn":null,"_trp_automatically_translated_slug_nl_nl":null,"_trp_automatically_translated_slug_pt_br":null,"_trp_automatically_translated_slug_sv_se":null,"rank_math_analytic_object_id":null,"rank_math_internal_links_processed":"1","_trp_automatically_translated_slug_ro_ro":null,"_trp_automatically_translated_slug_sk_sk":null,"_trp_automatically_translated_slug_bg_bg":null,"_trp_automatically_translated_slug_sl_si":null,"litespeed_vpi_list":null,"litespeed_vpi_list_mobile":null,"rank_math_seo_score":null,"rank_math_contentai_score":null,"ilj_limitincominglinks":null,"ilj_maxincominglinks":null,"ilj_limitoutgoinglinks":null,"ilj_maxoutgoinglinks":null,"ilj_limitlinksperparagraph":null,"ilj_linksperparagraph":null,"ilj_blacklistdefinition":null,"ilj_linkdefinition":null,"_eb_reusable_block_ids":null,"rank_math_focus_keyword":"Linux Capabilities","rank_math_og_content_image":null,"_yoast_wpseo_metadesc":null,"_yoast_wpseo_content_score":null,"_yoast_wpseo_focuskeywords":null,"_yoast_wpseo_keywordsynonyms":null,"_yoast_wpseo_estimated-reading-time-minutes":null,"rank_math_description":null,"surfer_last_post_update":null,"surfer_last_post_update_direction":null,"surfer_keywords":null,"surfer_location":null,"surfer_draft_id":null,"surfer_permalink_hash":null,"surfer_scrape_ready":null,"_thumbnail_id":"20277","footnotes":null,"_links":{"self":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts\/20284","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/comments?post=20284"}],"version-history":[{"count":0,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/posts\/20284\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/media\/20277"}],"wp:attachment":[{"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/media?parent=20284"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/categories?post=20284"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/webhosting.de\/en\/wp-json\/wp\/v2\/tags?post=20284"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}