{"id":36,"date":"2013-02-12T16:42:08","date_gmt":"2013-02-12T21:42:08","guid":{"rendered":"https:\/\/unixed.com\/wpblog\/?p=36"},"modified":"2013-02-12T16:42:08","modified_gmt":"2013-02-12T21:42:08","slug":"the-solaris-11-immutable-zone","status":"publish","type":"post","link":"https:\/\/unixed.com\/index.php\/2013\/02\/12\/the-solaris-11-immutable-zone\/","title":{"rendered":"The Solaris 11 Immutable Zone"},"content":{"rendered":"<p>I\u2019ve been asked several times by my students:<\/p>\n<p>1) \u00a0 \u201cWhat is the advantage of an immutable zone?\u201d<\/p>\n<p>2) \u00a0\u201cHow does the immutable zone compare to the sparse root zone in Solaris 10?\u201d<\/p>\n<p>3) \u00a0&#8220;What&#8217;s the advantage of the four different types of read-only non-global zones in Solaris 11?&#8221;<\/p>\n<h4><span style=\"text-decoration: underline;\"><strong>Background Information: \u00a0Solaris 10 Zones<\/strong><\/span><\/h4>\n<p><strong><\/strong>In Solaris 10, a non-global zone\u2019s root file system could be either whole root or sparse.\u00a0 The whole root zone provided the greatest configuration flexibility because all the required Solaris packages are copied to the zone\u2019s private file system and the root file system is read-writable.<\/p>\n<p>In Solaris 10, a sparse root zone shares parts of the root file system with the global zone.\u00a0 The sparse root zone implemented a read-only loopback file system from the global zone and it installed only a subset of the system root packages locally. The majority of the root file system was shared (inherited) from the global zone, which saved a great deal of disk space.\u00a0\u00a0 The sparse root file system provided a smaller foot print requiring less disk space and a read-only root file system that could not be modified.\u00a0 Although the read-only sparse root zone provided security against unauthorized or accidental changes, the disadvantage is that it was difficult to make authorized modifications to the root file system.\u00a0 In addition, with advances in ZFS file systems such as ZFS data deduplication, sparse root zones are no longer required and have been discontinued and replaced with immutable zones.<\/p>\n<h4><span style=\"text-decoration: underline;\"><strong>Solaris 11 &#8211; Immutable Zones<\/strong><\/span><\/h4>\n<p>Immutable zones are read-only zones, but still contain \u201cwhole root\u201d file systems.\u00a0 The immutable zone can be configured as a completely read-only zone or it can be partially read-only.\u00a0 The immutable zone is controlled by a mandatory write access control (MWAC) kernel policy.\u00a0 This MWAC policy enforces the zone\u2019s root file system write privilege through a zonecfg <span style=\"color: #ff0000;\">file-mac-profile<\/span> property. The policy is enabled at zone boot.<\/p>\n<p><span style=\"font-family: Arial, Helvetica, sans-serif;\">By default, a zone&#8217;s <span style=\"color: #ff0000;\">file-mac-profile<\/span> property is not set in a non-global zone. The default policy for a nonglobal zone is to have a writable root file system. In a Solaris read-only zone, the <span style=\"color: #ff0000;\">file-mac-profile<\/span> property is used to configure a read-only zone root. A read-only root restricts access to the\u00a0run-time\u00a0environment from inside the zone. Through the <span style=\"color: #ff0000;\">zonecfg<\/span> utility, the <span style=\"color: #ff0000;\">file-mac-profile<\/span> can be set to one of the following values.<\/span><\/p>\n<p><strong>\u00a0 \u00a0 \u00a0file-mac-profile Values<\/strong><\/p>\n<table border=\"0\">\n<tbody>\n<tr>\n<td>none<\/td>\n<td>\n<ul>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">Standard, read-write, non-global zone, with no additional protection beyond the existing zones boundaries. Setting the value to none is equivalent to not setting the file-mac-profile property.<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>strict<\/td>\n<td>\n<ul>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">Read-only file system, no exceptions.<\/span><\/li>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">IPS packages cannot be installed.<\/span><\/li>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">Persistently enabled SMF services are fixed.<\/span><\/li>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">SMF manifests cannot be added from the default locations.<\/span><\/li>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">Logging and auditing configuration files are fixed. Data can only be logged remotely.<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>fixed-configuration<\/td>\n<td>\n<ul>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">Permits updates to \/var\/* directories, with the exception of directories that contain system configuration components.<\/span><\/li>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">IPS packages, including new packages, cannot be installed.<\/span><\/li>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">Persistently enabled SMF services are fixed.<\/span><\/li>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">SMF manifests cannot be added from the default locations.<\/span><\/li>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">Logging and auditing configuration files can be local. syslog and the audit configuration files are fixed.<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td>flexible-configuration<\/td>\n<td>\n<ul>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">Permits modification of files in \/etc\/* directories, changes to root&#8217;s home directory, and updates to \/var\/* directories. This configuration provides the closest functionality to the Oracle Solaris 10 native sparse root zone.<\/span><\/li>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">IPS packages, including new packages, cannot be installed.<\/span><\/li>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">Persistently enabled SMF services are fixed.<\/span><\/li>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">SMF manifests cannot be added from the default locations.<\/span><\/li>\n<li><span style=\"color: #000000; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px;\">Logging and auditing configuration files can be local. syslog and the audit configuration can be changed.<\/span><\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>All of the profiles except none will cause the <span style=\"color: #ff0000;\">\/var\/pkg<\/span> directory and its contents to be read-only from inside the zone.<\/p>\n<p>I like to explain things by using examples.\u00a0 The following examples explain each immutable zone model by taking you through the creation of each of the four types immutable zones.<\/p>\n<h4><span style=\"text-decoration: underline;\"><strong>Create a Simple Zone (read-writeable)<\/strong><\/span><\/h4>\n<p>It&#8217;s not required, but I prefer to put my non-global zones on their own ZFS pool, so I create a storage pool named \u201czones\u201d as follows:<\/p>\n<p>root@solaris:~#<strong> zpool create zones c7t2d0<\/strong><\/p>\n<p>Now, let&#8217;s create a simple exclusive-IP zone with no restrictions:<\/p>\n<p>root@solaris:~# <strong>zonecfg -z testzone<br \/>\n<\/strong>Use &#8216;create&#8217; to begin configuring a new zone.<\/p>\n<p>zonecfg:testzone&gt; <strong>create<br \/>\n<\/strong>create: Using system default template &#8216;SYSdefault&#8217;<\/p>\n<p>zonecfg:testzone&gt; <strong>set zonepath=\/zones\/testzone<\/strong><\/p>\n<p>zonecfg:testzone&gt; <strong>exit<\/strong><\/p>\n<p>Use the # <strong>zonecfg<\/strong>\u00a0command to view the zone configuration as follows.<\/p>\n<div>root@solaris:~# <strong>zonecfg -z testzone info<\/strong><\/div>\n<p>zonename: testzone<br \/>\nzonepath: \/zones\/testzone<br \/>\nbrand: solaris<br \/>\nautoboot: false<br \/>\nbootargs:<br \/>\nfile-mac-profile:<br \/>\npool:<br \/>\n&#8230;&lt;output has been truncated&gt;&#8230;<\/p>\n<p>Notice that the <span style=\"color: #ff0000;\">file-mac-profile<\/span>\u00a0property is not set. \u00a0Not setting the value of the <span style=\"color: #ff0000;\">file-mac-profile<\/span> property is equivalent to setting the value to <span style=\"color: #ff0000;\">none<\/span>. This value can be set to any of the four <span style=\"color: #ff0000;\">file-mac-profile<\/span> values described in the previous table. \u00a0The zone is a standard, read-write, non-global zone, with no additional protection beyond the existing zone&#8217;s boundaries.<\/p>\n<p>Install the zone as follows:<\/p>\n<p>root@solaris:~# <strong>zoneadm -z testzone install<\/strong><\/p>\n<p>Boot the zone and connect to the zone console as follows:<\/p>\n<p>root@solaris:~# <strong>zoneadm -z testzone boot; zlogin \u2013C testzone<\/strong><\/p>\n<p>You\u2019ll be asked to answer the typical system configuration questions ( network, time zone, user and root accounts, name services).\u00a0After completing the system configuration tool, log into the zone console.<\/p>\n<p>The\u00a0following\u00a0examples will illustrate that the root file system is unrestricted to the root user.\u00a0 I\u2019ll create the directory <span style=\"color: #ff0000;\">\/usr\/local<\/span>:<\/p>\n<div>root@testzone:~#<strong> mkdir \/usr\/local<\/strong><\/div>\n<p>No errors are displayed because \/usr is writeable.<\/p>\n<h4><span style=\"text-decoration: underline;\"><strong>Set the Zone to Immutable: strict<\/strong><\/span><\/h4>\n<p>The strict configuration profile provides the tightest security because all file systems, except <span style=\"color: #ff0000;\">\u00a0\/tmp<\/span>\u00a0are read-only. \u00a0\u00a0\u00a0This is more strict that the Oracle Solaris 10 sparse root zone.\u00a0 It\u2019s equivalent to booting from the DVD, a read-only file system.\u00a0 Nothing can be changed, added or deleted in this zone including the <span style=\"color: #ff0000;\">\/root<\/span> directory and the <span style=\"color: #ff0000;\">\/export<\/span> file system.<\/p>\n<p>Shut the zone down and reconfigure it with a strict profile as follows:<\/p>\n<p>root@solaris:~# z<strong>onecfg -z testzone set file-mac-profile=strict<\/strong><\/p>\n<p>Verify that the <span style=\"color: #ff0000;\">file-mac-profile<\/span> property was set on the zone by typing:<\/p>\n<p>root@solaris:~# <strong>zonecfg -z testzone info<\/strong><\/p>\n<p dir=\"ltr\" style=\"font-family: Arial, Helvetica, sans-serif; padding-left: 30px;\">zonename: testzone<br \/>\nzonepath: \/zones\/testzone<br \/>\nbrand: solaris<br \/>\nautoboot: false<br \/>\nbootargs:<br \/>\nfile-mac-profile: <span style=\"color: #ff0000;\">strict<\/span><br \/>\npool:<br \/>\nlimitpriv:<em id=\"__mceDel\"><em id=\"__mceDel\"><br \/>\n<em id=\"__mceDel\"><em id=\"__mceDel\"><em id=\"__mceDel\"><em id=\"__mceDel\"><em id=\"__mceDel\"><em id=\"__mceDel\"><em id=\"__mceDel\"><em id=\"__mceDel\">..&lt;output has been truncated&gt;\u2026<\/em><\/em><\/em><\/em><\/em><\/em><\/em><\/em><\/em><\/em><\/p>\n<p>You can also get a quick overview of the <span style=\"color: #ff0000;\">file-mac-profile<\/span> property by typing:<\/p>\n<p>root@solaris:~# <strong>zoneadm list -p<\/strong><\/p>\n<p style=\"padding-left: 30px;\">0:global:running:\/::solaris:shared:-:<span style=\"color: #ff0000;\">none<\/span><br \/>\n2:testzone:running:\/zones\/testzone:2d5ef993-e195-6f6b-98f9-994934362693:solaris:excl:<span style=\"color: #ff0000;\"><b>R:strict<\/b><\/span><\/p>\n<p>Notice that the global zone has a policy of <span style=\"color: #ff0000;\">none<\/span> and the testzone has a <span style=\"color: #ff0000;\">strict<\/span> policy.\u00a0 The <span style=\"color: #ff0000;\"><b>R<\/b><\/span> in the second to last field indicates that the non-global zone is Read-Only.<\/p>\n<p>Boot the zone and log back into the testzone console as follows:<\/p>\n<p>root@solaris:~# <strong>zoneadm -z testzone boot<\/strong><\/p>\n<p>Try to create a subdirectory in the \/usr\/local directory that you created earlier:<\/p>\n<p>root@testzone:\/usr\/local# <strong>mkdir \/usr\/local\/bin<br \/>\n<\/strong><em id=\"__mceDel\"><em id=\"__mceDel\">mkdir: Failed to make directory &#8220;bin&#8221;; Read-only file system<\/em><\/em><\/p>\n<p>The \/usr file system is read-only.\u00a0 \u00a0\u00a0The strict profile allows no exceptions to the read-only policy. \u00a0Everything in the root filesystem is read only, including<span style=\"color: #ff0000;\"> \/var\/tmp<\/span>, the <span style=\"color: #ff0000;\">\/root<\/span> home directory, and <span style=\"color: #ff0000;\">\/export<\/span> as illustrated in the following examples:<\/p>\n<p>root@testzone:\/# <strong>touch \/var\/adm\/foo<br \/>\n<\/strong><em id=\"__mceDel\">touch: cannot create \/var\/adm\/foo: Read-only file system<\/em><\/p>\n<p>root@testzone:\/# <strong>touch \/export\/foo<\/strong><br \/>\n<em id=\"__mceDel\">touch: cannot create \/export\/foo: Read-only file system<\/em><\/p>\n<p>root@testzone:~# <strong>touch \/root\/foo<\/strong><br \/>\n<em id=\"__mceDel\">touch: cannot create \/root\/foo: Read-only file system<\/em><\/p>\n<p>The only file system that is writeable is <span style=\"color: #ff0000;\">\/tmp<\/span>:<\/p>\n<p>root@testzone:\/# <strong>touch \/tmp\/foo<\/strong><\/p>\n<p>In a strict configuration, I can change a service state, but it is not persistent because the SMF repository is read-only as shown next:<\/p>\n<p># <strong>svcadm disable ssh<\/strong><\/p>\n<p>The SMF repository is changed in memory, but not on disk.\u00a0 Therefore, the service is disabled now, but the next time the system boots, this service will return to its default state.\u00a0 The change is not a persistent change.<\/p>\n<p>When the immutable zone is in strict mode:<\/p>\n<ul>\n<li>IPS packages cannot be installed.<\/li>\n<li>Persistently enabled SMF services are fixed.<\/li>\n<li>SMF manifests cannot be added from the default locations.<\/li>\n<li>Logging and auditing configuration files are fixed (ie. syslog.conf). \u00a0Data can only be logged remotely, so syslog cannot write to the \/var\/adm\/messages file.<\/li>\n<\/ul>\n<p>However, you can always shut the zone down, change the\u00a0<span style=\"color: #ff0000;\">file-mac-profile<\/span> property back to <span style=\"color: #ff0000;\">none<\/span> and install packages, update the packages and modify services.\u00a0 When finished, set the zone back to a <span style=\"color: #ff0000;\">strict<\/span> policy.\u00a0 But, there is even an easier method.\u00a0 Simply boot the zone using the <span style=\"color: #ff0000;\">-w<\/span> (write) option as follows:<\/p>\n<p># <strong>zoneadm \u2013z testzone boot -w<\/strong><\/p>\n<p>As the zone boots, the following message is displayed in the testzone console:<\/p>\n<p>[NOTICE: Read-only zone booting up read-write]<\/p>\n<p>From the global zone, view the testzone properties as follows:<\/p>\n<p>root@solaris:~# <strong>zoneadm -z testzone list -p<br \/>\n<\/strong><span id=\"__mceDel\"><b>\u00a0 \u00a0\u00a0<\/b><\/span><em>6:testzone:running:\/zones\/testzone:2d5ef993-e195-6f6b-98f9-994934362693:solaris:excl:<span style=\"color: #ff0000;\">W:strict<\/span><\/em><\/p>\n<p>Notice the <span style=\"color: #ff0000;\">W<\/span> (write) in the second to last field.<\/p>\n<p>Log into the zone and make the required changes. \u00a0In the example, I log into the zone and create a new directory in \/usr\/local and disable the ssh service as follows:<\/p>\n<p>root@testzone:~# <strong>mkdir \/usr\/local\/bin<\/strong><\/p>\n<p>root@testzone:~# <strong>svcadm disable ssh<\/strong><\/p>\n<p>Because the zone is in a writeable state, the service changes were saved in the repository (on disk) and will be persistent across reboots.<\/p>\n<h4><em id=\"__mceDel\"><span style=\"text-decoration: underline;\"><strong><em id=\"__mceDel\">Set the Zone to Immutable: fixed-configuration<\/em><\/strong><\/span><\/em><\/h4>\n<p>A fixed-configuration zone provides more flexibility than the strict profile and allows log files to be created and modified in \/var.\u00a0 A non-global zone is set with a fixed-configuration by setting the <span style=\"color: #ff0000;\">file-mac-profile<\/span> and booting the zone as follows:<\/p>\n<p>root@solaris:~# <strong>zonecfg -z testzone set file-mac-profile=fixed-configuration<\/strong><\/p>\n<p>root@solaris:~# <strong>zoneadm -z testzone boot<\/strong><\/p>\n<p>A fixed-configuration profile allows the zone to write to files in and below \/var, except directories containing configuration files:<\/p>\n<ul>\n<li>\/var\/ld<\/li>\n<li>\/var\/lib\/postrun<\/li>\n<li>\/var\/pkg<\/li>\n<li>\/var\/spool\/cron,<\/li>\n<li>\/var\/spool\/postrun<\/li>\n<li>\/var\/svc\/manifest<\/li>\n<li>\/var\/svc\/profiles<\/li>\n<\/ul>\n<p>When the zone is booted, view the zone properties as follows:<\/p>\n<p>root@solaris:~#<strong> zoneadm -z testzone list -p<br \/>\n<\/strong>2:testzone:running:\/zones\/testzone:2d5ef993-e195-6f6b-98f9-994934362693:solaris:excl:<span style=\"color: #ff0000;\">R:fixed-configuration<\/span><\/p>\n<p>Notice that the global zone has a policy of <span style=\"color: #ff0000;\">none<\/span> and the testzone has a<span style=\"color: #ff0000;\"> fixed-configuration<\/span> policy.\u00a0 The<span style=\"color: #ff0000;\"> <b>R<\/b><\/span> in the second to last field indicates that the non-global zone is Read-Only.<\/p>\n<p>Log into the zone console and the following examples will show that the root file system is still read-only and some of the directories in \/var are writeable. \u00a0For example, <span style=\"color: #ff0000;\">\/var\/tmp<\/span> and <span style=\"color: #ff0000;\">\/tmp<\/span> are writeable:<\/p>\n<p>root@testzone:~# <strong>touch \/var\/tmp\/foo<\/strong><\/p>\n<p>root@testzone:~# <strong>touch \/tmp\/foo<\/strong><\/p>\n<p>The \/var directories which contain configuration files are still read-only as shown when I try to create a file in \/var\/spool\/cron\/crontabs:<\/p>\n<div>root@testzone:\/# <strong>touch \/var\/spool\/cron\/crontabs\/foo<\/strong><\/div>\n<div><em>touch: cannot create \/var\/spool\/cron\/crontabs\/foo: Read-only file system<\/em><\/div>\n<p>The \/export and the \/root home directories are also read-only as shown:<\/p>\n<p>root@testzone:\/# <strong>touch \/export\/foo<br \/>\n<\/strong><em id=\"__mceDel\">touch: cannot create \/export\/foo: Read-only file system<\/em><\/p>\n<p>root@testzone:~# <strong>touch \/root\/foo<br \/>\n<\/strong><em id=\"__mceDel\">touch: cannot create \/root\/foo: Read-only file system<\/em><\/p>\n<h4><em id=\"__mceDel\"><span style=\"text-decoration: underline;\"><strong>Set the Zone to Immutable: flexible-configuration<\/strong><\/span><\/em><\/h4>\n<p>The <span style=\"color: #ff0000;\">flexible-configuration<\/span> provides the closest functionality to the Oracle Solaris 10 sparse root zone.\u00a0 The flexible configuration is equal to the fixed-configuration, but it also allows write access to files in the <span style=\"color: #ff0000;\">\/etc<\/span>, <span style=\"color: #ff0000;\">\/var<\/span>, and <span style=\"color: #ff0000;\">\/root<\/span> home directories.<\/p>\n<p>Set the flexible-configuration on testzone and boot the zone as follows:<\/p>\n<p>root@solaris:~# <strong>zonecfg -z testzone set file-mac-profile=flexible-configuration<\/strong><\/p>\n<p>root@solaris:~# <strong>zoneadm -z testzone boot<\/strong><\/p>\n<p>List the properties for testzone as follows:<\/p>\n<p>root@solaris:~# <strong>zoneadm -z testzone list -p<br \/>\n<\/strong><em id=\"__mceDel\">3:testzone:running:\/zones\/testzone:2d5ef993-e195-6f6b-98f9-994934362693:solaris:excl:<span style=\"color: #ff0000;\">R:flexible-configuration<\/span><\/em><\/p>\n<p>Verify write access to the <span style=\"color: #ff0000;\">\/etc<\/span>,<span style=\"color: #ff0000;\"> \/var<\/span> and <span style=\"color: #ff0000;\">\/root<\/span> directories as follows:<\/p>\n<p>root@testzone:~# <strong>touch \/etc\/hosts<\/strong><\/p>\n<p>root@testzone:~# <strong>touch \/etc\/foo<\/strong><\/p>\n<p>root@testzone:\/#<strong> touch \/root\/foo<\/strong><\/p>\n<p>The <span style=\"color: #ff0000;\">\/export<\/span> file system is still read-only:<\/p>\n<p>root@testzone:\/# <strong>touch \/export\/foo<br \/>\n<\/strong><em id=\"__mceDel\">touch: cannot create \/export\/foo: Read-only file system<\/em><\/p>\n<h4>Summary<\/h4>\n<p>I&#8217;ve provided an explanation and given a few examples of immutable zones for Solaris 11. \u00a0Send me a comment below if there is anything I can help clear up for you.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I\u2019ve been asked several times by my students: 1) \u00a0 \u201cWhat is the advantage of an immutable zone?\u201d 2) \u00a0\u201cHow does the immutable zone compare to the sparse root zone [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"footnotes":""},"categories":[13,15],"tags":[11,12,14],"class_list":["post-36","post","type-post","status-publish","format-standard","hentry","category-solaris-11","category-zones","tag-immutable-root","tag-immutable-zones","tag-solaris-11-zones"],"aioseo_notices":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p9J8F7-A","_links":{"self":[{"href":"https:\/\/unixed.com\/index.php\/wp-json\/wp\/v2\/posts\/36","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unixed.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unixed.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unixed.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unixed.com\/index.php\/wp-json\/wp\/v2\/comments?post=36"}],"version-history":[{"count":0,"href":"https:\/\/unixed.com\/index.php\/wp-json\/wp\/v2\/posts\/36\/revisions"}],"wp:attachment":[{"href":"https:\/\/unixed.com\/index.php\/wp-json\/wp\/v2\/media?parent=36"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unixed.com\/index.php\/wp-json\/wp\/v2\/categories?post=36"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unixed.com\/index.php\/wp-json\/wp\/v2\/tags?post=36"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}