# IPA

The The `ipa` command in **FreeIPA** (Identity, Policy, Audit) is a robust tool for managing users, hosts, services, and policies in a centralized manner. It provides subcommands that are essential for managing **hosts**, **hostgroups**, **services**, and **keytab files**—important components in managing a secure, identity-based infrastructure.

Below are detailed descriptions of these subcommands, including commands for **hosts**, **hostgroups**, **services**, and **keytabs**:

***

## Key Subcommands: `host`, `hostgroup`, `service`, and `getkeytab`

### 1. **Host Subcommands**

These commands allow the management of hosts (servers or systems) within the FreeIPA domain. Hosts are enrolled to gain authentication and policy-based access control.

#### Common Commands:

* **Add a Host**:

  ```bash
  ipa host-add <hostname> [options]
  ```

  Adds a new host to the domain (e.g., `ipa host-add server1.example.com`).
* **Find Hosts**:

  ```bash
  ipa host-find
  ```

  Lists all enrolled hosts in the domain.
* **Show Host Details**:

  ```bash
  ipa host-show <hostname>
  ```

  Displays detailed information about a specific host.
* **Modify a Host**:

  ```bash
  ipa host-mod <hostname> [options]
  ```

  Modifies attributes of an existing host, such as its description or principal.
* **Delete a Host**:

  ```bash
  ipa host-del <hostname>
  ```

  Removes a host from the domain.
* **Disable/Enable a Host**:
  * Disable: Temporarily removes the host from active use.

    ```bash
    ipa host-disable <hostname>
    ```
  * Enable: Restores the host to active use.

    ```bash
    ipa host-enable <hostname>
    ```

***

### 2. **Hostgroup Subcommands**

Hostgroups provide an easy way to manage multiple hosts together by grouping them logically, often for policy or access control purposes.

#### Common Commands:

* **Add a Hostgroup**:

  ```bash
  ipa hostgroup-add <hostgroup_name> --desc="Description"
  ```

  Creates a new hostgroup with a given description.
* **Find Hostgroups**:

  ```bash
  ipa hostgroup-find
  ```

  Lists all existing hostgroups.
* **Show Hostgroup Details**:

  ```bash
  ipa hostgroup-show <hostgroup_name>
  ```

  Displays detailed information about a specific hostgroup.
* **Add Hosts to a Hostgroup**:

  ```bash
  ipa hostgroup-add-member <hostgroup_name> --hosts=<hostname>
  ```

  Adds one or more hosts to a hostgroup.
* **Remove Hosts from a Hostgroup**:

  ```bash
  ipa hostgroup-remove-member <hostgroup_name> --hosts=<hostname>
  ```

  Removes one or more hosts from a hostgroup.
* **Delete a Hostgroup**:

  ```bash
  ipa hostgroup-del <hostgroup_name>
  ```

  Deletes a hostgroup from the domain.

***

### 3. **Service Subcommands**

Services represent applications (such as web services, mail services, etc.) running on hosts that require secure authentication through IPA. These commands manage such services.

#### Common Commands:

* **Add a Service**:

  ```bash
  ipa service-add <service/hostname>
  ```

  Adds a new service to the domain, enabling it to interact with the IPA environment (e.g., `HTTP/webserver01.example.com`).
* **Find Services**:

  ```bash
  ipa service-find
  ```

  Lists all services available in the domain.
* **Show Service Details**:

  ```bash
  ipa service-show <service/hostname>
  ```

  Displays detailed information about a specific service.
* **Delete a Service**:

  ```bash
  ipa service-del <service/hostname>
  ```

  Removes a service from the domain.
* **Enable/Disable a Service**:
  * Enable:

    ```bash
    ipa service-enable <service/hostname>
    ```
  * Disable:

    ```bash
    ipa service-disable <service/hostname>
    ```

***

### 4. **Getkeytab Subcommands**

Keytabs are files that store service or host credentials used for secure authentication, specifically with Kerberos. The `ipa-getkeytab` command fetches and manages keytab files.

#### Common Commands:

* **Obtain a Keytab for a Host**:

  ```bash
  ipa-getkeytab -s <IPA_server> -p host/<hostname> -k /etc/krb5.keytab
  ```

  Fetches the keytab for a specified host and stores it in the default Kerberos keytab location.
* **Obtain a Keytab for a Service**:

  ```bash
  ipa-getkeytab -s <IPA_server> -p <service/hostname> -k /etc/krb5.keytab
  ```

  Retrieves the keytab for a service running on a host.
* **Force a New Keytab**:

  ```bash
  ipa-getkeytab -s <IPA_server> -p <service/hostname> -k /etc/krb5.keytab -f
  ```

  Forces the retrieval of a new keytab, overwriting any existing keytab.
* **Remove a Keytab**:

  ```bash
  ipa service-remove-keytab <service/hostname> --keytab=<keytab_location>
  ```

  Deletes a keytab for a specific service, revoking its credentials.

***

## Example Scenario: Adding and Securing a Host with a Service

1. **Add the Host**:

   ```bash
   ipa host-add server1.example.com --force
   ```
2. **Create a Hostgroup** (e.g., all web servers):

   ```bash
   ipa hostgroup-add WebServers --desc="All web servers"
   ipa hostgroup-add-member WebServers --hosts=server1.example.com
   ```
3. **Add and Configure a Service**: For example, you may want to add an HTTP service for `server1`:

   ```bash
   ipa service-add HTTP/server1.example.com
   ```
4. **Obtain the Keytab for the HTTP Service**:

   ```bash
   ipa-getkeytab -s ipa.example.com -p HTTP/server1.example.com -k /etc/krb5.keytab
   ```

This ensures that the host and the service are authenticated and secure within the FreeIPA domain, with keytab-based Kerberos authentication.

***

### Conclusion

Using the `ipa` command with subcommands for **hosts**, **hostgroups**, **services**, and **keytabs**, administrators can efficiently manage identity, authentication, and policies in a secure FreeIPA environment. These tools are critical in environments that require centralized management of users, machines, services, and access control in enterprise systems.\` command in **FreeIPA** (Identity, Policy, Audit) is a robust tool for managing users, hosts, services, and policies in a centralized manner. It provides subcommands that are essential for managing **hosts**, **hostgroups**, **services**, and **keytab files**—important components in managing a secure, identity-based infrastructure.

Below are detailed descriptions of these subcommands, including commands for **hosts**, **hostgroups**, **services**, and **keytabs**:

***

## Key Subcommands: `host`, `hostgroup`, `service`, and `getkeytab`

### 1. **Host Subcommands**

These commands allow the management of hosts (servers or systems) within the FreeIPA domain. Hosts are enrolled to gain authentication and policy-based access control.

#### Common Commands:

* **Add a Host**:

  ```bash
  ipa host-add <hostname> [options]
  ```

  Adds a new host to the domain (e.g., `ipa host-add server1.example.com`).
* **Find Hosts**:

  ```bash
  ipa host-find
  ```

  Lists all enrolled hosts in the domain.
* **Show Host Details**:

  ```bash
  ipa host-show <hostname>
  ```

  Displays detailed information about a specific host.
* **Modify a Host**:

  ```bash
  ipa host-mod <hostname> [options]
  ```

  Modifies attributes of an existing host, such as its description or principal.
* **Delete a Host**:

  ```bash
  ipa host-del <hostname>
  ```

  Removes a host from the domain.
* **Disable/Enable a Host**:
  * Disable: Temporarily removes the host from active use.

    ```bash
    ipa host-disable <hostname>
    ```
  * Enable: Restores the host to active use.

    ```bash
    ipa host-enable <hostname>
    ```

***

### 2. **Hostgroup Subcommands**

Hostgroups provide an easy way to manage multiple hosts together by grouping them logically, often for policy or access control purposes.

#### Common Commands:

* **Add a Hostgroup**:

  ```bash
  ipa hostgroup-add <hostgroup_name> --desc="Description"
  ```

  Creates a new hostgroup with a given description.
* **Find Hostgroups**:

  ```bash
  ipa hostgroup-find
  ```

  Lists all existing hostgroups.
* **Show Hostgroup Details**:

  ```bash
  ipa hostgroup-show <hostgroup_name>
  ```

  Displays detailed information about a specific hostgroup.
* **Add Hosts to a Hostgroup**:

  ```bash
  ipa hostgroup-add-member <hostgroup_name> --hosts=<hostname>
  ```

  Adds one or more hosts to a hostgroup.
* **Remove Hosts from a Hostgroup**:

  ```bash
  ipa hostgroup-remove-member <hostgroup_name> --hosts=<hostname>
  ```

  Removes one or more hosts from a hostgroup.
* **Delete a Hostgroup**:

  ```bash
  ipa hostgroup-del <hostgroup_name>
  ```

  Deletes a hostgroup from the domain.

***

### 3. **Service Subcommands**

Services represent applications (such as web services, mail services, etc.) running on hosts that require secure authentication through IPA. These commands manage such services.

#### Common Commands:

* **Add a Service**:

  ```bash
  ipa service-add <service/hostname>
  ```

  Adds a new service to the domain, enabling it to interact with the IPA environment (e.g., `HTTP/webserver01.example.com`).
* **Find Services**:

  ```bash
  ipa service-find
  ```

  Lists all services available in the domain.
* **Show Service Details**:

  ```bash
  ipa service-show <service/hostname>
  ```

  Displays detailed information about a specific service.
* **Delete a Service**:

  ```bash
  ipa service-del <service/hostname>
  ```

  Removes a service from the domain.
* **Enable/Disable a Service**:
  * Enable:

    ```bash
    ipa service-enable <service/hostname>
    ```
  * Disable:

    ```bash
    ipa service-disable <service/hostname>
    ```

***

### 4. **Getkeytab Subcommands**

Keytabs are files that store service or host credentials used for secure authentication, specifically with Kerberos. The `ipa-getkeytab` command fetches and manages keytab files.

#### Common Commands:

* **Obtain a Keytab for a Host**:

  ```bash
  ipa-getkeytab -s <IPA_server> -p host/<hostname> -k /etc/krb5.keytab
  ```

  Fetches the keytab for a specified host and stores it in the default Kerberos keytab location.
* **Obtain a Keytab for a Service**:

  ```bash
  ipa-getkeytab -s <IPA_server> -p <service/hostname> -k /etc/krb5.keytab
  ```

  Retrieves the keytab for a service running on a host.
* **Force a New Keytab**:

  ```bash
  ipa-getkeytab -s <IPA_server> -p <service/hostname> -k /etc/krb5.keytab -f
  ```

  Forces the retrieval of a new keytab, overwriting any existing keytab.
* **Remove a Keytab**:

  ```bash
  ipa service-remove-keytab <service/hostname> --keytab=<keytab_location>
  ```

  Deletes a keytab for a specific service, revoking its credentials.

***

## Example Scenario: Adding and Securing a Host with a Service

1. **Add the Host**:

   ```bash
   ipa host-add server1.example.com --force
   ```
2. **Create a Hostgroup** (e.g., all web servers):

   ```bash
   ipa hostgroup-add WebServers --desc="All web servers"
   ipa hostgroup-add-member WebServers --hosts=server1.example.com
   ```
3. **Add and Configure a Service**: For example, you may want to add an HTTP service for `server1`:

   ```bash
   ipa service-add HTTP/server1.example.com
   ```
4. **Obtain the Keytab for the HTTP Service**:

   ```bash
   ipa-getkeytab -s ipa.example.com -p HTTP/server1.example.com -k /etc/krb5.keytab
   ```

This ensures that the host and the service are authenticated and secure within the FreeIPA domain, with keytab-based Kerberos authentication.

***

### Conclusion

Using the `ipa` command with subcommands for **hosts**, **hostgroups**, **services**, and **keytabs**, administrators can efficiently manage identity, authentication, and policies in a secure FreeIPA environment. These tools are critical in environments that require centralized management of users, machines, services, and access control in enterprise systems.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://linux-tutorial-cli.gitbook.io/linux-cli-tutorial/txt-files/file-systems-cocepts/lpic3-300/ipa-including-relevant-user-stageuser-and-group-and-idview-subcommands.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
