{"id":3395,"date":"2023-02-17T23:22:59","date_gmt":"2023-02-18T04:22:59","guid":{"rendered":"https:\/\/dft.wiki\/?p=3395"},"modified":"2023-03-21T23:22:35","modified_gmt":"2023-03-22T03:22:35","slug":"introduction-to-unix-for-linux-users","status":"publish","type":"post","link":"https:\/\/dft.wiki\/?p=3395","title":{"rendered":"Introduction to UNIX for Linux Users"},"content":{"rendered":"<p>While Linux is not a direct descendant of any particular version of Unix, it was inspired by Unix and designed to be similar to Unix in many ways.<\/p>\n<p>Unix is a family of multi-user, multitasking operating systems that is known for its portability, scalability, and stability. It is the foundation of macOS, by the way.<\/p>\n<p>BSD stands for Berkeley Software Distribution, which is a Unix operating system, and this acronym is carried over to name popular distributions FreeBSD and OpenBSD that will be introduced in this post.<\/p>\n<p><strong>FreeBSD<\/strong> [<a href=\"https:\/\/www.freebsd.org\/where\/\">Link<\/a>] and <strong>OpenBSD<\/strong> [<a href=\"https:\/\/www.openbsd.org\/faq\/faq4.html#Download\">Link<\/a>] are well-known for performance, stability, and security. The main ideological difference is the license, where FreeBSD allow forks to be proprietary and OpenBSD enforces the same original license of being public to any derivation.<\/p>\n<p>Minimum requirements:<\/p>\n<ul>\n<li><strong>FreeBSD<\/strong>\n<ul>\n<li>CPU: 1 core<\/li>\n<li>RAM: 1 GB<\/li>\n<li>Storage: 2 GB<\/li>\n<\/ul>\n<\/li>\n<li><strong>OpenBSD<\/strong>\n<ul>\n<li>CPU: 1 core<\/li>\n<li>RAM: 64 MB<\/li>\n<li>Storage: 1 GB<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>The main difference that reflect on the amount of resources each distribution used is the amount of modules that come pre-installed. OpenBSD is more minimalistic and only comes with the bare minimum out of the box, while FreeBSD comes with a collection of features.<\/p>\n<p><strong>Note:<\/strong> TrueNAS (FreeNAS), pfSense, and OPNsense are based on FreeBSD.<\/p>\n<hr \/>\n<p><strong>INSTALLATION<\/strong><\/p>\n<p>For Linux users, the CLI installation of both distributions might not be a big deal and it all depends on the environment and what the system will be used for.<\/p>\n<p>The ISO image will provide the most flexible installation source because it contains wider variety of hardware drivers but if it is going to be running a specific hardware such as a SBC (like Raspberry Pi) or as a VM, there are tailored images from them too.<\/p>\n<ul>\n<li><strong>FreeBSD<\/strong><\/li>\n<\/ul>\n<p>It&#8217;s installation is straight forward and does not offer much challenge to a Linux user.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3399\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-15-22-19-03.png\" alt=\"\" width=\"740\" height=\"499\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-15-22-19-03.png 740w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-15-22-19-03-300x202.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<ul>\n<li><strong>OpenBSD<\/strong><\/li>\n<\/ul>\n<p>Don&#8217;t expect anything fancy on OpenBSD, it is not pretty or friendly.<\/p>\n<p>When you see the following screen, don&#8217;t panic! That is how it looks.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3407\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-33-21.png\" alt=\"\" width=\"740\" height=\"499\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-33-21.png 740w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-33-21-300x202.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p>Follow the steps:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3408\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-35-33.png\" alt=\"\" width=\"740\" height=\"499\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-35-33.png 740w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-35-33-300x202.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3409\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-36-27.png\" alt=\"\" width=\"740\" height=\"499\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-36-27.png 740w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-36-27-300x202.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3410\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-46-09.png\" alt=\"\" width=\"740\" height=\"499\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-46-09.png 740w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-46-09-300x202.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3411\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-47-26.png\" alt=\"\" width=\"740\" height=\"499\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-47-26.png 740w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-47-26-300x202.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3412\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-48-29.png\" alt=\"\" width=\"740\" height=\"499\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-48-29.png 740w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-48-29-300x202.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p>They are sorted by latency after a ping test. It is recommended to use the first.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3413\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-49-09.png\" alt=\"\" width=\"740\" height=\"499\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-49-09.png 740w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-49-09-300x202.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3414\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-50-12.png\" alt=\"\" width=\"740\" height=\"499\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-50-12.png 740w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-50-12-300x202.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3415\" src=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-55-59.png\" alt=\"\" width=\"740\" height=\"499\" srcset=\"https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-55-59.png 740w, https:\/\/dft.wiki\/wp-content\/uploads\/sites\/15\/2023\/02\/Screenshot-from-2023-02-17-21-55-59-300x202.png 300w\" sizes=\"auto, (max-width: 740px) 100vw, 740px\" \/><\/p>\n<p>Remember to remove the installation media or it will keep prompting to start the installation on boot.<\/p>\n<hr \/>\n<p><strong>FIRST ACCESS<\/strong><\/p>\n<p>Log with the root credentials set during the installation.<\/p>\n<p>First of all, how to reboot and shut it down.<\/p>\n<pre>reboot<\/pre>\n<pre>shutdown -p now<\/pre>\n<p>If not informed <code>-p<\/code> it will not power off after shutdown, like if you only issue the command <code>halt<\/code>.<\/p>\n<p>List processes.<\/p>\n<pre>ps aux\r\ntop<\/pre>\n<hr \/>\n<p><strong>UPDATING, UPGRADING, AND INSTALLING PACKAGES<\/strong><\/p>\n<p>Regular package manager update and upgrade all its packages.<\/p>\n<p><strong>For FreeBSD:<\/strong><\/p>\n<pre>pkg update &amp;&amp; pkg upgrade<\/pre>\n<p><strong>For OpenBSD:<\/strong><\/p>\n<pre>pkg_add -Uu<\/pre>\n<p>Audit the vulnerable installed packages (FreeBSD only).<\/p>\n<pre>pkg audit -F &amp;&amp; pkg audit<\/pre>\n<p>Fetch and install system updates (FreeBSD only).<\/p>\n<pre>freebsd-version\r\nfreebsd-update fetch install<\/pre>\n<p>Before it install the updates the <code>vi<\/code> file editor with some output for review and approval. It is not expected by Linux users, so take time to read and understand before proceeding with the installation if in a production environment. A reboot is always recommended right after.<\/p>\n<p>There is no <code>nano<\/code> but <code>vi<\/code> gets the job done for those who like it. I don&#8217;t!<\/p>\n<p><strong>For FreeBSD:<\/strong><\/p>\n<pre>pkg install nano<\/pre>\n<p><strong>For OpenBSD:<\/strong><\/p>\n<pre>pkg_add nano<\/pre>\n<p>It will probably ask you to first install the package manager then it will prompt for the confirmation to install the desired package. But if there is no Internet because the network interfaces need configuration, follow the next steps first.<\/p>\n<hr \/>\n<p><strong>NETWORK CONFIGURATION<\/strong><\/p>\n<p>Most likely, two network interfaces will be required and for this demo I will consider the first interface as a WAN (has Internet access) and the second as a LAN (has only internal network access).<\/p>\n<pre>ifconfig<\/pre>\n<p>Three network interfaces might show up: <strong>em0<\/strong> (WAN), <strong>em1<\/strong> (LAN), and <strong>lo0<\/strong> (loopback). If any was not properly configured during the installation of the system forllow the next steps.<\/p>\n<p><strong>For FreeBSD:<\/strong><\/p>\n<pre>nano \/etc\/rc.conf<\/pre>\n<pre>...\r\n# WAN (em0)\r\nifconfig_em0=\"DHCP\"\r\n# LAN (em1)\r\nifconfig_em1=\"inet 10.0.0.10 netmask 255.255.255.0\"\r\n...<\/pre>\n<p>Optionally, if the DHCP does not provide a default a default gateway can be added to this same configuration file as follows:<\/p>\n<pre>...\r\ndefaultrouter=\"10.1.1.1\"\r\n...<\/pre>\n<p>Out-of-the-box, FreeBSD and OpenBSD are native routers, capable of routing traffic between all configured interfaces but it requires a single flag to be turned on:<\/p>\n<pre>gateway_enable=\"YES\"<\/pre>\n<p>Apply the configuration by restarting the network service.<\/p>\n<pre>service netif restart<\/pre>\n<p>Check the networks and routes.<\/p>\n<pre>netstat -r\r\nnetstat -nr<\/pre>\n<p>Setting a static route:<\/p>\n<pre>route add -net 192.168.0.0\/16 10.2.2.1<\/pre>\n<p>To make it persist reboots:<\/p>\n<pre>nano \/etc\/rc.conf<\/pre>\n<pre>...\r\nstatic_routes=\"net2\"\r\nroute_net2=\"-net 192.168.0.0\/16 10.2.2.1\"\r\n...<\/pre>\n<p>For more then one:<\/p>\n<pre>...\r\nstatic_routes=\"net2 net3\"\r\nroute_net2=\"-net 192.168.0.0\/16 10.2.2.1\"\r\nroute_net3=\"-net 172.16.0.0\/24 10.2.2.1\"\r\n...<\/pre>\n<p>If configured to use DHCP, it will automatically populate the file <code>\/etc\/resolv.conf<\/code>, and like on Linux it can always be manually managed and the auto population can be suppressed as follows:<\/p>\n<pre>\/etc\/dhclient-enter-hooks<\/pre>\n<pre>...\r\nadd_new_resolv_conf() {\r\n        # Do not overwritte \/etc\/resolv.conf with the DHCP configuration.\r\n        return 0\r\n}\r\n...<\/pre>\n<p><strong>For OpenBSD:<\/strong><\/p>\n<pre>nano \/etc\/hostname.em0<\/pre>\n<p>For HDCP:<\/p>\n<pre>inet autoconf<\/pre>\n<p>For static IP:<\/p>\n<pre>inet 10.1.1.2 255.255.255.0 10.1.1.1<\/pre>\n<p>Apply<\/p>\n<pre>sh \/etc\/netstart<\/pre>\n<hr \/>\n<p><strong>MANAGING USERS<\/strong><\/p>\n<p>Create a new used.<\/p>\n<pre>adduser userName<\/pre>\n<p>Delete a user:<\/p>\n<pre>rmuser userName<\/pre>\n<p>Changing current user&#8217;s password and another user&#8217;s password:<\/p>\n<pre>passwd<\/pre>\n<pre>passwd userName<\/pre>\n<p>To make it an administrator add it to the <code>wheel<\/code> group.<\/p>\n<p><strong>For FreeBSD:<\/strong><\/p>\n<pre>pw groupmod -n wheel -m userName<\/pre>\n<p>To remove, replace the argument <code>-m<\/code> with <code>-d<\/code>. Then, list the members of the <code>wheel<\/code> group.<\/p>\n<pre>pw groupshow -n wheel<\/pre>\n<p><strong>For OpenBSD:<\/strong><\/p>\n<pre>usermod -G wheel userName<\/pre>\n<p>List what groups the user is part of.<\/p>\n<pre>id userName<\/pre>\n<p>Since by default the <code>root<\/code> user is not allowed to SSH (like in most Linux systems), use the newly created user to connect from remote then switch to root with the command <code>su<\/code>.<\/p>\n<p>Probably it will require to restart the the SSHd service to allow the new user to connect.<\/p>\n<p><strong>For FreeBSD:<\/strong><\/p>\n<pre>service sshd restart\r\nservice status restart<\/pre>\n<p><strong>For OpenBSD:<\/strong><\/p>\n<pre>rcctl restart sshd\r\nrcctl check sshd<\/pre>\n<hr \/>\n<p><strong>FILE SYSTEM<\/strong><\/p>\n<p>Originally, <strong>UFS<\/strong> (Unix File System) was the default file system but now <strong>ZFS<\/strong> (Zettabyte File System) is the default one because it supports advanced features like snapshots, compression, RAID&#8230;<\/p>\n<p>Besides UFS and ZFS, there is also another native file systems called <strong>HUMMER<\/strong> (Highly Available, Multi-Master, Elastic Replicated Object Store). It was developed by DragonFly BSD that can provide high availability and fault tolerance. It is worthy taking a look into it if these features are desirable for your use case.<\/p>\n<p>It also supports <strong>FAT<\/strong>, <strong>NTFS<\/strong>, <strong>EXT2 <\/strong>to<strong> EXT4<\/strong>, <strong>APFS<\/strong>, and <strong>ISP 9660<\/strong> plus the network <strong>NFS<\/strong> (Linux) and <strong>CIFS<\/strong> (Windows). Note that it does <span style=\"text-decoration: underline;\">NOT<\/span> officially suport XFS.<\/p>\n<p>Linux users feel familiar with most of the Directory Structure and how to navigate and manager files, directories, permissions and so on.<\/p>\n<hr \/>\n<p><strong>FIREWALL ON FREEBSD<\/strong><\/p>\n<p>Enable the firewall.<\/p>\n<pre>nano \/etc\/rc.conf<\/pre>\n<pre>...\r\nfirewall_enable=\"YES\"\r\n...<\/pre>\n<p>Create the set of rules.<\/p>\n<pre>nano \/etc\/ipfw.rules<\/pre>\n<pre>ipfw add allow tcp from any to any 80 in\r\nipfw add allow ip from any to any 21 out\r\nipfw add allow tcp from 10.20.30.0\/24 to 10.1.1.1 22 in\r\nipfw add deny udp from any to any 53\r\nipfw add deny all from 192.168.0.10 to any in\r\nipfw add deny tcp from any to any 22 in via em0\r\nipfw add deny tcp from any to any 10000-2000 fwd em0<\/pre>\n<ul>\n<li><strong>in <\/strong>\/<strong> out<\/strong>\n<ul>\n<li>only applied to and from the local system.<\/li>\n<\/ul>\n<\/li>\n<li><strong>in<\/strong> <strong>via<\/strong> \/ <strong>out via<\/strong>\n<ul>\n<li>applied the rule to the traffic on the interface, which also applied to the forwarded packets.<\/li>\n<\/ul>\n<\/li>\n<li><strong>fwd<\/strong>\n<ul>\n<li>only applied the filter to the packets being forwarded to the specified interface.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Load the rules to the kernel.<\/p>\n<pre>\/sbin\/ipfw \/etc\/ipfw.rules<\/pre>\n<p>Make firewall rules persist to reboots, add the same line to the following file.<\/p>\n<pre>nano \/etc\/rc.local<\/pre>\n<pre>...\r\n\/sbin\/ipfw \/etc\/ipfw.rules\r\n...<\/pre>\n<hr \/>\n<p><strong>FIREWALL ON OPENBSD<\/strong><\/p>\n<pre>nano \/etc\/pf.conf<\/pre>\n<pre>wan=\"em0\"\r\nlan=\"em1\"\r\n\r\nset skip on lo0\r\nset block-policy drop\r\n\r\nblock drop all\r\n\r\nblock in all\r\nblock out all\r\n\r\npass quick in all keep state\r\npass in on $wan proto tcp from any to any port 80\r\npass in on $lan proto { tcp udp } from $lan:network to port { 139 445 }\r\npass out inet proto icpm icmp-type { echoreq }\r\npass in on $lan proto icmp all icmp-type { echoreq, echorep }<\/pre>\n<p>Optionally, replace <code>keep state<\/code> with <code>modulate state<\/code> for additional security because it randomises the initial sequence number pf TCP packet to prevent prevention and TCP session hijacking attack.<\/p>\n<p>Apply<\/p>\n<pre>pfctl -f \/etc\/pf.conf<\/pre>\n<p>Enable the firewall on boot.<\/p>\n<pre>nano \/etc\/rc.conf.local<\/pre>\n<pre>...\r\npf=YES\r\n...<\/pre>\n<p>Check the status of the firewall.<\/p>\n<pre>pfctl -si<\/pre>\n<p>Check the applied roles.<\/p>\n<pre>pfctl -sr<\/pre>\n<hr \/>\n<p><strong>TROUBLESHOOTING<\/strong><\/p>\n<ul>\n<li><strong>System Logs<\/strong><\/li>\n<\/ul>\n<p>Watch the logs\u00a0as they happens.<\/p>\n<pre>tail -f \/var\/log\/messages<\/pre>\n<p>Search for a specific entry type.<\/p>\n<pre>tail -f \/var\/log\/messages | grep error<\/pre>\n<pre>grep ssh \/var\/log\/messages<\/pre>\n<ul>\n<li><strong><span style=\"color: #777777; font-size: 1rem;\">Diagnostic Tools<\/span><\/strong><\/li>\n<\/ul>\n<pre>ping 8.8.8.8<\/pre>\n<pre>traceroute 1.1.1.1<\/pre>\n<pre>top<\/pre>\n<pre>tcpdump -i em0<\/pre>\n<pre>dmesg | less<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>While Linux is not a direct descendant of any particular version of Unix, it was [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-3395","post","type-post","status-publish","format-standard","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/posts\/3395","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/dft.wiki\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3395"}],"version-history":[{"count":14,"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/posts\/3395\/revisions"}],"predecessor-version":[{"id":3503,"href":"https:\/\/dft.wiki\/index.php?rest_route=\/wp\/v2\/posts\/3395\/revisions\/3503"}],"wp:attachment":[{"href":"https:\/\/dft.wiki\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3395"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dft.wiki\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3395"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dft.wiki\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3395"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}