

{"id":109220,"date":"2022-07-13T11:00:49","date_gmt":"2022-07-13T05:30:49","guid":{"rendered":"https:\/\/data-flair.training\/blogs\/?p=109220"},"modified":"2022-07-13T11:04:23","modified_gmt":"2022-07-13T05:34:23","slug":"selinux","status":"publish","type":"post","link":"https:\/\/data-flair.training\/blogs\/selinux\/","title":{"rendered":"SELinux &#8211; Security Enhanced Linux"},"content":{"rendered":"<p>In this article, you will learn what SELinux is, its features, and its uses. We will also be looking into the modes of Se Linux and how it works. In the end, we will take a brief look at some of the commands used with regard to SElinux.<\/p>\n<h3>What is SELinux?<\/h3>\n<p>Let&#8217;s get the obvious question out of the way. SELinux stands for Security-Enhanced Linux, like Linux was not secure enough already! Jokes aside, Se Linux is extremely useful to system administrators as it allows them to have more control over who can access the system and who cannot.<\/p>\n<p>Security-Enhanced Linux or SELinux is a security architecture for Linux systems that allows administrators to define access controls over applications, processes, and files on a system.<\/p>\n<p>It used security policies, which are a set of rules that tells SELinux what is accessible. SELinux is a set of kernel modifications and user-space tools that provide a mechanism for supporting access control security policies.<\/p>\n<p>It provides various security policies like U.S Department of Defence style mandatory Access Control (MAC). SELinux was originally developed by the United States Security Agency (NSA) as a series of patches to the heart of Linux using Linux Security Modules (LSM)<\/p>\n<h3>Why SELinux?<\/h3>\n<p>We all know that Linux-based operating systems are the safest out there. Linux asks for authentication in the form of a password before running and executing every program or application. Then why do we need SELinux?<\/p>\n<p>In Linux for every file and directory the user, user group, and other users have the permissions for reading (r), writing (w), and executing (x). Using the chmod command, the user can change these permissions and give himself all the permission, leaving the group and other users with no permission.<\/p>\n<p>In such a case, the system administrator can use security policies to stop users from running scripts or files from their home directories. Hence with SELinux, you can specify access controls for users. This is just one such case where SELinux comes to help, there are various other cases where the administrator can use SELinux.<\/p>\n<h3>Features of SELinux<\/h3>\n<p>Here are some of the features that SELinux includes:<\/p>\n<p>1. SE Linux provides a clean separation of policy from enforcement.<\/p>\n<p>2. It has well-defined policy interfaces<\/p>\n<p>3. Flexible policy<\/p>\n<p>4. Provides support for policy changes<\/p>\n<p>5. It controls the use of \u201ccapabilities\u201d<\/p>\n<p>6. It keeps individual labels and controls for kernel objects and services<\/p>\n<p>7. Independence of certain security-label formats and contents<\/p>\n<p>8. It controls open file descriptors, files, directories, and filesystems<\/p>\n<p>9. It has a default-deny policy<\/p>\n<p>10. It takes measures to protect system integrity and data confidentiality<\/p>\n<p>11. Controls network interfaces, sockets, and messages<\/p>\n<p>12. Independence of certain policies and policy languages<\/p>\n<p>13. Control over process initialization and execution<\/p>\n<p>14. Provides support for application querying the policy<\/p>\n<p>15. Cached information on access decisions through the AVC<\/p>\n<h3>How does SELinux work?<\/h3>\n<p>SE Linux uses security policies, which are a set of rules that define what can and can not be accessed.<\/p>\n<p>Whenever a process or application makes a request to access a file or any other object for that matter, SE Linux checks with an access vector cache (AVC).<\/p>\n<p>If at all SE Linux cannot make decisions regarding checked permissions or access-based, it sends the request to the security server. The server checks for the security context of the file or app and then grants or denies permission accordingly. If a permission id is denied, the message of denial from AVC will be available in the \u201c\/var\/log.messages\u201d directory.<\/p>\n<h3>Sudo apt install policycoreutils<\/h3>\n<p>The initial work of SE Linux was directed toward normalizing an approach providing compulsory and voluntary access controls (MAC and DAC) within a UNIX-based computing interface that can be assigned to the National Security Agency\u2019s (NSA) trusted UNIX working group.<\/p>\n<p>Security-Enhanced Linux was designed to demonstrate the value of compulsory access controls to the Linux community. The NSA, who is the key developer of SE Linux. Released the very first version on the 22nd of December 2000. They released the source code under the GNU GPL license making it open source as anyone can access it and make changes for free.<\/p>\n<p>The software was later merged into the mainline Linux kernel on the 8th of August 2003.<\/p>\n<h3>Users of SELinux<\/h3>\n<p>Roles and SE Linux need not be related to the actual system users and roles. For every user or process, SE Linux allocates a 3-string context. This string consists of a username, role, and domain.<\/p>\n<p>This system of generating assigning a 3-string context is more flexible than required. Most of the real users share the same SE Linux username, and all the access control is managed through the domain.<\/p>\n<h3>Policies and security contexts of SELinux<\/h3>\n<p>We have seen that SE Linux has many policies and security contexts in the feature section. Let dive a little deeper to see what exactly the policies contain and what their uses are.<br \/>\nGeneral policy rules include explicit permissions like which domain the user must possess to perform specific actions with the given target.<\/p>\n<p>The Policy of SE Linux consists of a rule file, a mapping file, and an interface file. Thes 3 files must be put together with the SE Linux tools to produce a single policy file. The final compiled policy can be loaded into the kernel to make it active.<\/p>\n<h3>Command Line Utilities of SELinux<\/h3>\n<p>SELinux can clearly control which activities a system allows for each process, daemon, and user. Let us look at some of the command-line utilities included:<\/p>\n<p>1. selinux-policy-upgrade<\/p>\n<p>2. load-policy<\/p>\n<p>3. semodule-package<\/p>\n<p>4. checkmodule<\/p>\n<p>5. selinux-config-enforcing<\/p>\n<p>6. selinuxenabled<\/p>\n<p>7. secon<\/p>\n<p>8. check-selinux-installation<\/p>\n<p>9. getsebool<\/p>\n<p>10. checkmodule<\/p>\n<h3>Labeling and type enforcement in SELinux<\/h3>\n<p>Before proceeding any further, we must discuss 2 of the most important concepts in SE Linux, they are labeling and type enforcement.<\/p>\n<p><strong>Labeling<\/strong>: Security-Enhanced Linux works as a labeling system. This means that all of the ports, files, processes, and files in the system have an SE Linux label connected with them. Labels, as the name suggests is a way of grouping things together.<\/p>\n<p><strong>Type enforcement:<\/strong> the use of type enforcement in SE Linux is to enforce a policy that is defined in the system. It is a type of SE Linux policy that defines if a process running with a certain type can access a file labeled with a certain type.<\/p>\n<h3>Modes of SELinux<\/h3>\n<p>SELinux has 3 modes, actually speaking it is just 2 modes, however, we even count the disabled mode of SELinux.<\/p>\n<h4>1. Enforcing<\/h4>\n<p>The default state of SELinux is the enforcing mode. This mode enforces the SELinux security policy. Unless SELinux security policy rules permit users and programs, they are denied access.<\/p>\n<h4>2. Permissive<\/h4>\n<p>This mode of SELinux is a diagnostic state. In the permissive mode, the security policies are not enforced instead, SELinux sends denial messages to a log file. This mode allows you to see the denied parts if SELinux was running in the enforcing mode.<\/p>\n<h4>3. Disabled<\/h4>\n<p>Don\u2019t even know why people account for this as a mode of SELinux, but as the name suggests, SELinux is not enabled and it does not enforce a security policy. Well, it doesn&#8217;t enforce, because there is no policy loaded in the kernel. It is disabled!<\/p>\n<h3>Installing SELinux<\/h3>\n<p>Now obviously if we want to use SELinux, we will first have to install it. SELinux does not come preinstalled in Linux distros. We can install SELinux by using the command below:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">Sudo apt install policycoreutils<\/pre>\n<p>Once you do so, the system prompts you to enter your password. It also prompts you to press \u2018y\u2019 to confirm installation:<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/installing-selinux.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-109316\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/installing-selinux.webp\" alt=\"installing selinux\" width=\"1119\" height=\"869\" \/><\/a><\/p>\n<h3>Checking the status of SELinux<\/h3>\n<p>Now that you have installed it, let&#8217;s check the status of SELinux by typing the command \u201csestatus\u201d<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/checking-status-of-selinux.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-109317\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/checking-status-of-selinux.webp\" alt=\"checking status of selinux\" width=\"773\" height=\"125\" \/><\/a><\/p>\n<p>Since you have just installed SELinux, it will be disabled.<\/p>\n<h3>Enabling SELinux<\/h3>\n<p>To enable SELinux, you first have to type in the command \u201csudo nano \/etc\/selinux\/config\u201d in the terminal as shown below.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/command-to-change-mode-of-selinux.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-109318\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/command-to-change-mode-of-selinux.webp\" alt=\"command to change mode of selinux\" width=\"772\" height=\"43\" \/><\/a><\/p>\n<p>Upon typing the command \u201csudo nano \/etc\/selinux\/config\u201d, the terminal will open up the configuration files of SELinux in the nano text editor. Here you must change the text \u2018disabled\u2019 to either \u2018enforcing\u2019 or \u2018permissive\u2019.<\/p>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/changing-mode-in-nano-editor.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-109319\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/changing-mode-in-nano-editor.webp\" alt=\"changing mode in nano editor\" width=\"959\" height=\"637\" \/><\/a><\/p>\n<p>Once you make the changes in the text editor, you have to press \u201cctrl\u201d + \u201cx\u201d to exit from the configuration files opened in the nano text editor. Then press \u201cy\u201d and \u201center\u201d to confirm your changes. You must then reboot your computer to see the changes, you can directly restart your PC by typing the command \u201csudo reboot\u201d.<\/p>\n<p>After rebooting, you can check if your changes have worked by using the \u201csestatus\u201d command.<\/p>\n<h3>Changing nodes of SELinux:<\/h3>\n<p>After enabling SELinux, you can switch between the modes enforcing and permissive.<\/p>\n<p>To Switch from enforcing mode to permissive mode, you can type the command:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">sudo setenforce = 0<\/pre>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/setenforce0.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-109320\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/setenforce0.webp\" alt=\"setenforce0\" width=\"772\" height=\"52\" \/><\/a><\/p>\n<p>This command will turn off enforcing mode, thereby turning on permissive mode.<\/p>\n<p>To Switch from permissive mode to enforcing mode, you can type the command:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">sudo setenforce = 1<\/pre>\n<p><a href=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/setenforce1.webp\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-109321\" src=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/setenforce1.webp\" alt=\"setenforce1\" width=\"769\" height=\"47\" \/><\/a><\/p>\n<p>This command will turn on enforcing mode, thereby turning off permissive mode.<\/p>\n<h4>Viewing policy modules<\/h4>\n<p>As mentioned earlier, SELinux has many policies that are extremely helpful to the system administrator. To view the policy modules that are currently running in your operating system, you can type the command:<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\">sudo semodule -l<\/pre>\n<h3>Benefits of SELinux<\/h3>\n<p>There are many advantages of using SELinux, let us look into a few.<\/p>\n<p>1. SELinux Labels all the files and processes. The policy rules in SELinux define how processes interact with files and also other processes. It allows access if and only if there exists an SELinux policy module that specifically allows it.<\/p>\n<p>2. SELinux can also be used to enforce data integrity and confidentiality. It also protects processes from untrusted inputs<\/p>\n<p>3. SElinx policy modules are administratively defined and carried out system-wide<\/p>\n<p>4. SELinux provides fine-grain access control. SELinux\u2019s access decisions are based on all the available information like SELinux user, role, type, security level, and a lot more.<\/p>\n<h3>Configuring SELinux<\/h3>\n<p>You can configure Security-Enhanced Linux to protect your system in a number of ways. The most common methods to configure are multi-level security (MLS) or targeted policy.<\/p>\n<p>The targeted policy is the default option. It covers a wide range of tasks, services, and processes<\/p>\n<p>Multi-level security or MLS on the other hand can be very complicated. It is typically only used by government organizations.<\/p>\n<p>You can check what configuration your system is supposed to be running by looking at the \u201c\/etc\/sysconfig\/selinux\u201d file.<\/p>\n<h3>DAC and MAC<\/h3>\n<p>Just to take things a notch deeper, let us understand what Discretionary access control (DAC) and mandatory access control (MAC) are.<\/p>\n<h4>Discretionary access control (DAC)<\/h4>\n<p>In DAC files and processes have owners. You can either have users, groups or other global users own a particular file. Moreover, users have the right to change the permissions of the file using the chmod command.<\/p>\n<p>The root user has complete access and control with the DAC system because If you have root access, you can access the files of any other user in your system, or do whatever you want on the system.<\/p>\n<h4>Mandatory access control (MAC)<\/h4>\n<p>SELinux is an example of the MAC system. In MAC systems there is an administratively set policy around access. Even though the DAC system settings are changed on your home directory, the SELinux policy will prevent another process or user from accessing the directory.<\/p>\n<p>The policies let you cover a large number of processes. You can also make changes with SELinux to limit the access between directories, files, users, and more.<\/p>\n<h3>Handling errors in SELinux<\/h3>\n<p>To gain complete knowledge of SELinux, it is only fair to learn how to deal with the errors in it. Let us look at 4 of the most common problems:<\/p>\n<h4>1. Wrong labels<\/h4>\n<p>If the labels in your system are incorrect, you can use the tools to fix them.<\/p>\n<h4>2. Fixing a policy<\/h4>\n<p>You may need to inform SE Linux regarding the changes you have made or adjust to a specific policy.<\/p>\n<h4>3. Bug in a policy<\/h4>\n<p>This could just be a bug that exists in the policy that needs to be addressed<\/p>\n<h4>4. Hacking of your system<\/h4>\n<p>Even though SELinux can safeguard your systems in many scenarios, there is still a possibility for your system to be compromised. If you suspect that your system has been broken into, take action immediately.<\/p>\n<h3>Summary<\/h3>\n<p>SELinux can also set various other custom modules if needed. For example, if the default action of a policy module is to deny and an SELinux rule does not exist to allow, like a process for opening a file, the access is denied. However, this process is very complex, as it involves coding up your own custom policy module and also installing various other tools and utilities.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In this article, you will learn what SELinux is, its features, and its uses. We will also be looking into the modes of Se Linux and how it works. In the end, we will&#46;&#46;&#46;<\/p>\n","protected":false},"author":5,"featured_media":109314,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35],"tags":[26871,26869,26870,26872,26868,26867],"class_list":["post-109220","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","tag-benefits-of-selinux","tag-configuring-selinux","tag-errors-in-se-linux","tag-history-of-selinux","tag-security-enhanced-linux","tag-selinux"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>SELinux - Security Enhanced Linux - DataFlair<\/title>\n<meta name=\"description\" content=\"Learn what is SELinux, its features, working, modes &amp; uses. See the commands used with SElinux and how to handle errors in it.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/data-flair.training\/blogs\/selinux\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"SELinux - Security Enhanced Linux - DataFlair\" \/>\n<meta property=\"og:description\" content=\"Learn what is SELinux, its features, working, modes &amp; uses. See the commands used with SElinux and how to handle errors in it.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/data-flair.training\/blogs\/selinux\/\" \/>\n<meta property=\"og:site_name\" content=\"DataFlair\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DataFlairWS\/\" \/>\n<meta property=\"article:published_time\" content=\"2022-07-13T05:30:49+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2022-07-13T05:34:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/selinux.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"DataFlair Team\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:site\" content=\"@DataFlairWS\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"DataFlair Team\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutes\" \/>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"SELinux - Security Enhanced Linux - DataFlair","description":"Learn what is SELinux, its features, working, modes & uses. See the commands used with SElinux and how to handle errors in it.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/data-flair.training\/blogs\/selinux\/","og_locale":"en_US","og_type":"article","og_title":"SELinux - Security Enhanced Linux - DataFlair","og_description":"Learn what is SELinux, its features, working, modes & uses. See the commands used with SElinux and how to handle errors in it.","og_url":"https:\/\/data-flair.training\/blogs\/selinux\/","og_site_name":"DataFlair","article_publisher":"https:\/\/www.facebook.com\/DataFlairWS\/","article_published_time":"2022-07-13T05:30:49+00:00","article_modified_time":"2022-07-13T05:34:23+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/selinux.webp","type":"image\/webp"}],"author":"DataFlair Team","twitter_card":"summary_large_image","twitter_creator":"@DataFlairWS","twitter_site":"@DataFlairWS","twitter_misc":{"Written by":"DataFlair Team","Est. reading time":"11 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/data-flair.training\/blogs\/selinux\/#article","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/selinux\/"},"author":{"name":"DataFlair Team","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823"},"headline":"SELinux &#8211; Security Enhanced Linux","datePublished":"2022-07-13T05:30:49+00:00","dateModified":"2022-07-13T05:34:23+00:00","mainEntityOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/selinux\/"},"wordCount":2080,"commentCount":0,"publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/selinux\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/selinux.webp","keywords":["Benefits of SELinux","Configuring SELinux","errors in SE Linux","history of SELinux","Security Enhanced Linux","SELinux"],"articleSection":["Linux Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/data-flair.training\/blogs\/selinux\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/data-flair.training\/blogs\/selinux\/","url":"https:\/\/data-flair.training\/blogs\/selinux\/","name":"SELinux - Security Enhanced Linux - DataFlair","isPartOf":{"@id":"https:\/\/data-flair.training\/blogs\/#website"},"primaryImageOfPage":{"@id":"https:\/\/data-flair.training\/blogs\/selinux\/#primaryimage"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/selinux\/#primaryimage"},"thumbnailUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/selinux.webp","datePublished":"2022-07-13T05:30:49+00:00","dateModified":"2022-07-13T05:34:23+00:00","description":"Learn what is SELinux, its features, working, modes & uses. See the commands used with SElinux and how to handle errors in it.","breadcrumb":{"@id":"https:\/\/data-flair.training\/blogs\/selinux\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/data-flair.training\/blogs\/selinux\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/selinux\/#primaryimage","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/selinux.webp","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2022\/04\/selinux.webp","width":1200,"height":628,"caption":"selinux"},{"@type":"BreadcrumbList","@id":"https:\/\/data-flair.training\/blogs\/selinux\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Blog Home","item":"https:\/\/data-flair.training\/blogs\/"},{"@type":"ListItem","position":2,"name":"Linux Tutorials","item":"https:\/\/data-flair.training\/blogs\/category\/linux\/"},{"@type":"ListItem","position":3,"name":"SELinux &#8211; Security Enhanced Linux"}]},{"@type":"WebSite","@id":"https:\/\/data-flair.training\/blogs\/#website","url":"https:\/\/data-flair.training\/blogs\/","name":"DataFlair","description":"Learn Today. Lead Tomorrow.","publisher":{"@id":"https:\/\/data-flair.training\/blogs\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/data-flair.training\/blogs\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/data-flair.training\/blogs\/#organization","name":"DataFlair","url":"https:\/\/data-flair.training\/blogs\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/","url":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","contentUrl":"https:\/\/data-flair.training\/blogs\/wp-content\/uploads\/sites\/2\/2016\/07\/Data-Flair.png","width":106,"height":48,"caption":"DataFlair"},"image":{"@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DataFlairWS\/","https:\/\/x.com\/DataFlairWS","https:\/\/www.linkedin.com\/company\/dataflair-web-services-pvt-ltd\/","https:\/\/www.youtube.com\/user\/DataFlairWS"]},{"@type":"Person","@id":"https:\/\/data-flair.training\/blogs\/#\/schema\/person\/7f83c342f5d1632d6f7b4b0b0f447823","name":"DataFlair Team","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/4cf3a74600d131330b8c481d519afd1574093ed89f6d3396a95393ad223eb7cd?s=96&d=mm&r=g","caption":"DataFlair Team"},"description":"DataFlair Team creates expert-level guides on programming, Java, Python, C++, DSA, AI, ML, data Science, Android, Flutter, MERN, Web Development, and technology. Our goal is to empower learners with easy-to-understand content. Explore our resources for career growth and practical learning.","url":"https:\/\/data-flair.training\/blogs\/author\/dfteam1\/"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/109220","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/comments?post=109220"}],"version-history":[{"count":3,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/109220\/revisions"}],"predecessor-version":[{"id":109322,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/posts\/109220\/revisions\/109322"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media\/109314"}],"wp:attachment":[{"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/media?parent=109220"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/categories?post=109220"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/data-flair.training\/blogs\/wp-json\/wp\/v2\/tags?post=109220"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}