{"id":55251,"date":"2020-01-16T00:00:00","date_gmt":"2020-01-15T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/fajlovye-razresheniya-v-linux"},"modified":"2020-02-18T14:03:21","modified_gmt":"2020-02-18T11:03:21","slug":"fajlovye-razresheniya-v-linux","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/fajlovye-razresheniya-v-linux","title":{"rendered":"File permissions in Linux","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Hello everyone. We are actively diving into work and already preparing many powerful launches for January. Among other things, we have announced recruitment for a new stream of the beloved course. <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rbVT\/\">Linux Administrator<\/a><\/noindex>Ahead of the launch, we traditionally share a translation of useful material.<\/i><\/p>\n<p><img decoding=\"async\" alt=\"File permissions in Linux\" src=\"\/wp-content\/uploads\/2020\/01\/451acace5e0a9088355acb800d789db9.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<blockquote><p><i>File permissions offer a safe alternative to SUID executables, but they may seem a bit confusing at first glance.<\/i><\/p><\/blockquote>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nWe all know that binary files <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/Setuid#Security\">SUID<\/a><\/noindex> include <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/Setuid#Security\">are a poor solution from a security standpoint.<\/a><\/noindex>Fortunately, if your application requires certain limited privileges, there is a more effective method called <noindex><a rel=\"nofollow\" href=\"http:\/\/www.linuxjournal.com\/article\/5737\">file permissions.<\/a><\/noindex>.<\/p>\n<p>I'll save you time if you want to avoid reading the detailed article above: essentially, file permissions allow processes running under the root user, which therefore have the right to do anything, to retain certain capabilities limited to <noindex><a rel=\"nofollow\" href=\"http:\/\/www.kernel.org\/doc\/man-pages\/online\/pages\/man7\/capabilities.7.html\">this list<\/a><\/noindex>, when they drop privileges and run as an unprivileged user. This means that if an attacker manages to compromise a process through a buffer overflow or another exploit, they will only be able to use the specific minimal privileges that the process genuinely needs.<\/p>\n<p>Permissions work great for services that typically always run as the root user, but what about command-line utilities? Fortunately, this is also supported, provided you have the right utilities installed. If you're using Ubuntu, for instance, you'll need the package <code>libcap2-bin.<\/code>You will also need to run a non-archaic kernel (starting from version<b> 2.6.24<\/b>).<\/p>\n<p>). These features allow you to associate permissions with executables similarly to configuring the SUID bit, but only for a specific set of permissions. The utility <code>setcap<\/code> is used to add and remove permissions from a file.<\/p>\n<p>The first step is to choose the permissions you need. For this article, I assume there is a network diagnostic tool called <code>tracewalk,<\/code>which should be able to use <noindex><a rel=\"nofollow\" href=\"http:\/\/man7.org\/linux\/man-pages\/man7\/raw.7.html\">raw sockets.<\/a><\/noindex>Usually, this requires the application to run as the root user, but upon examination <noindex><a rel=\"nofollow\" href=\"http:\/\/www.kernel.org\/doc\/man-pages\/online\/pages\/man7\/capabilities.7.html\">list <\/a><\/noindex>, it turns out that only the permission <code>CAP_NET_RAW is needed.<\/code>.<\/p>\n<p>Assuming you are in the directory where the binary file is located <code>tracewalk,<\/code>, you can add this capability as follows:<\/p>\n<pre><code class=\"bash\">sudo setcap cap_net_raw=eip tracewalk<\/code><\/pre>\n<p>\nFor now, ignore the suffix <code>=eip<\/code> for the capability; I will explain this in a moment. Note that the capability name is in lowercase. You can now check if you set the permissions correctly with:<\/p>\n<pre><code class=\"bash\">setcap -v cap_new_raw=eip tracewalk<\/code><\/pre>\n<p>\nOr you can list all capabilities set for the given executable file:<\/p>\n<pre><code class=\"bash\">getcap tracewalk\n<\/code><\/pre>\n<p>\nFor your information, you can also remove all capabilities from the executable file with:<\/p>\n<pre><code class=\"bash\">setcap -r tracewalk<\/code><\/pre>\n<p>\nAt this stage, you should be able to run the executable as an unprivileged user, and it should be able to work with raw sockets, but without any other privileges that the root user has.<\/p>\n<p>So, what does this strange suffix mean? <code>=eip<\/code>? \u0417\u0434\u0435\u0441\u044c \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0442\u043e\u043b\u0438\u043a\u0430 \u043f\u043e\u043d\u0438\u043c\u0430\u043d\u0438\u044f \u043f\u0440\u0438\u0440\u043e\u0434\u044b \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439. \u041a\u0430\u0436\u0434\u044b\u0439 \u043f\u0440\u043e\u0446\u0435\u0441\u0441 \u0438\u043c\u0435\u0435\u0442 \u0442\u0440\u0438 \u043d\u0430\u0431\u043e\u0440\u0430 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u2014 <i>effective, inheritable, and permitted (effective, inheritable, and permitted)<\/i>:<\/p>\n<ul>\n<li><b>Effective<\/b> capabilities are those that determine what the process can actually do. For example, it cannot deal with raw sockets if <code>CAP_NET_RAW is needed.<\/code> it is not in the effective set.<\/li>\n<li><b>Permitted<\/b> capabilities are those that the process is allowed to have if it requests them with the appropriate call. They do not allow the process to actually do anything unless it has been specifically written to request the specified capability. This allows processes to gain particularly important permissions in the effective set only for the period when they are truly needed.<\/li>\n<li><b>Inheritable<\/b> capabilities are those that can be inherited in the permitted set of a spawned child process. During the operation <code>fork()<\/code> or <code>clone()<\/code> the child process is always given a copy of the parent process\u2019s capabilities, as at this moment it is still executing the same executable file. The inheritable set is used when <code>exec()<\/code> (or similar) is called to replace the executable file with another. At this stage, the process's permitted set is masked by the inheritable set to get the available set that will be used for the new process.<\/li>\n<\/ul>\n<p>\nThus, the utility <code>setcap<\/code> allows us to add the permissions of these three sets independently for a given executable file. Note that the value of groups is interpreted somewhat differently for file access rights:<\/p>\n<ul>\n<li><b>Available <\/b>file permissions are those that are always available for the executable file, even if the parent process that called it did not have them. They were previously known as 'forced' permissions.<\/li>\n<li><b>Inherited <\/b>file permissions define an additional mask that can also be used to remove permissions from the calling process's set. They are applied in addition to the inherited set of the calling process, so permission is inherited only if it exists in both sets.<\/li>\n<li><b>Effective <\/b>file permissions actually represent just one bit, not a set, and if it is set, then the entire available set is also copied into the effective set of the new process. This can be used to add permissions to processes that were not specifically written to request them. Since this is one bit, if you set it for any permission, it must be set for all permissions. You might think of it as a legacy bit because it is used to allow the use of permissions for applications that do not support them.<\/li>\n<\/ul>\n<p>\nWhen specifying permissions via <code>setcap<\/code> three letters <code>e<\/code>, <code>i<\/code> and <code>p<\/code> correspond to <i>effective, inherited, and permitted<\/i> sets respectively. So, the earlier specification:<\/p>\n<pre><code class=\"bash\">sudo setcap cap_net_raw=eip tracewalk<\/code><\/pre>\n<p>\n\u2026 indicates that the permission <code>CAP_NET_RAW is needed.<\/code> must be added to the permitted and inherited sets and that the effective bit must also be set. This will replace any previously set permissions in the file. To set multiple permissions at once, use a list separated by commas:<\/p>\n<pre><code class=\"bash\">sudo setcap cap_net_admin,cap_net_raw=eip tracewalk<\/code><\/pre>\n<p>\n<noindex><a rel=\"nofollow\" href=\"http:\/\/www.kernel.org\/doc\/man-pages\/online\/pages\/man7\/capabilities.7.html\">The Permissions Guide<\/a><\/noindex> discusses all this in more detail, but hopefully, this post has demystified some of what is happening. It only remains to mention a few caveats and tricks.<\/p>\n<p>First of all, file capabilities do not work with symlinks \u2014 you have to apply them to the binary file itself (that is, to the target of the symlink).<\/p>\n<p>Secondly, they do not work with interpreted scripts. For example, if you have a Python script to which you want to assign permissions, you must assign it to the Python interpreter itself. Clearly, this presents a potential security issue because all scripts executed with this interpreter will have the specified permissions, although it is still significantly better than making it SUID. The most common workaround apparently involves writing a separate executable file in C or an equivalent that can perform the necessary operations and calling it from the script. This is similar to the approach used by Wireshark, which utilizes a binary file <code>\/usr\/bin\/dumpcap<\/code> to perform privileged operations:<\/p>\n<pre><code class=\"bash\">$ getcap \/usr\/bin\/dumpcap \n\/usr\/bin\/dumpcap = cap_net_admin,cap_net_raw+eip<\/code><\/pre>\n<p>\nThirdly, file permissions are disabled if you use an environment variable <code>LD_LIBRARY_PATH<\/code> for obvious security reasons<i>(1)<\/i>. The same applies to <code>LD_PRELOAD<\/code>, as far as I know.<\/p>\n<p><i>1. Since an attacker can evidently substitute one of the standard libraries and use <code>LD_LIBRARY_PATH<\/code>, to cause their library to be called in preference to the system one, and thus have their arbitrary code executed with the same privileges as the calling application. <br \/>\n<\/i><\/p>\n<p><i><b>That's all. More details about the course program will be available at the <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/rbVT\/\">webinar to be held on January 24.<\/a><\/noindex><\/b><\/i><br \/>\n<br \/>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/483934\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041c\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u043b\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u0443 \u0438 \u0443\u0436\u0435 \u0432 \u044f\u043d\u0432\u0430\u0440\u0435 \u0433\u043e\u0442\u043e\u0432\u0438\u043c \u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0449\u043d\u044b\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432. \u0421\u0440\u0435\u0434\u0438 \u043f\u0440\u043e\u0447\u0438\u0445, \u043e\u0431\u044a\u044f\u0432\u043b\u0435\u043d \u043d\u0430\u0431\u043e\u0440 \u043d\u0430 \u043d\u043e\u0432\u044b\u0439 \u043f\u043e\u0442\u043e\u043a \u043f\u043e\u043b\u044e\u0431\u0438\u0432\u0448\u0435\u0433\u043e\u0441\u044f \u0432\u0441\u0435\u043c \u043a\u0443\u0440\u0441\u0430 \u00ab\u0410\u0434\u043c\u0438\u043d\u0438\u0441\u0442\u0440\u0430\u0442\u043e\u0440 Linux\u00bb. \u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0437\u0430\u043f\u0443\u0441\u043a\u0430 \u0442\u0440\u0430\u0434\u0438\u0446\u0438\u043e\u043d\u043d\u043e \u0434\u0435\u043b\u0438\u043c\u0441\u044f \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0433\u043e \u043c\u0430\u0442\u0435\u0440\u0438\u0430\u043b\u0430. \u0424\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e\u0442 \u0431\u0435\u0437\u043e\u043f\u0430\u0441\u043d\u0443\u044e \u0430\u043b\u044c\u0442\u0435\u0440\u043d\u0430\u0442\u0438\u0432\u0443 \u0438\u0441\u043f\u043e\u043b\u043d\u044f\u0435\u043c\u044b\u043c \u0444\u0430\u0439\u043b\u0430\u043c SUID, \u043d\u043e \u043c\u043e\u0433\u0443\u0442 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c\u0441\u044f \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0437\u0430\u043f\u0443\u0442\u0430\u043d\u043d\u044b\u043c\u0438 \u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0439 \u0432\u0437\u0433\u043b\u044f\u0434. \u0412\u0441\u0435 \u043c\u044b \u0437\u043d\u0430\u0435\u043c, \u0447\u0442\u043e [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":55252,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-55251","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041c\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u043b\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u0443 \u0438 \u0443\u0436\u0435 \u0432 \u044f\u043d\u0432\u0430\u0440\u0435 \u0433\u043e\u0442\u043e\u0432\u0438\u043c \u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0449\u043d\u044b\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/fajlovye-razresheniya-v-linux\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0424\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 Linux | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041c\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u043b\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u0443 \u0438 \u0443\u0436\u0435 \u0432 \u044f\u043d\u0432\u0430\u0440\u0435 \u0433\u043e\u0442\u043e\u0432\u0438\u043c \u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0449\u043d\u044b\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/fajlovye-razresheniya-v-linux\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-01-15T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T11:03:21+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47File Permissions in Linux | ProHoster","description":"Hello everyone. We are actively getting to work and we are preparing many powerful launches for January.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/fajlovye-razresheniya-v-linux","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0424\u0430\u0439\u043b\u043e\u0432\u044b\u0435 \u0440\u0430\u0437\u0440\u0435\u0448\u0435\u043d\u0438\u044f \u0432 Linux | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442. \u041c\u044b \u0430\u043a\u0442\u0438\u0432\u043d\u043e \u0432\u043b\u0438\u0432\u0430\u0435\u043c\u0441\u044f \u0432 \u0440\u0430\u0431\u043e\u0442\u0443 \u0438 \u0443\u0436\u0435 \u0432 \u044f\u043d\u0432\u0430\u0440\u0435 \u0433\u043e\u0442\u043e\u0432\u0438\u043c \u043c\u043d\u043e\u0433\u043e \u043c\u043e\u0449\u043d\u044b\u0445 \u0437\u0430\u043f\u0443\u0441\u043a\u043e\u0432.","og:url":"https:\/\/prohoster.info\/en\/blog\/administrirovanie\/fajlovye-razresheniya-v-linux","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-01-15T21:00:00+00:00","article:modified_time":"2020-02-18T11:03:21+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"55251","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 19:47:37","updated":"2022-09-30 13:42:26","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/55251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=55251"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/55251\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media\/55252"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=55251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=55251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=55251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}