89503
CentOS7 で firewalldコマンドを直接実行するとサービスに登録されずプロセスだけ起動するのはなぜ？  
firewalldを使用せず、別のファイアウォールでアクセス制限をしています。

```

    $firewalld
    
```

を実行しました。  
エラーなどはなくコマンドが実行された反応でした。

```

    $systemctl status firewalld
    
```

を実行すると

```

    Active: inactive (dead)
    
```

しかし、ファイアウォールは起動していて外から80番ポートを通してApacheにアクセスできない状態でした。

```

    $ps -aux | grep firewalld
    
```

を実行しました。

```

    root     30074  0.0  0.1 363100 31900 ?        Ssl  18:14   0:02 /usr/bin/python2 -Es /sbin/firewalld
    
```

このプロセス番号をkillすることで、firewallは切れて再び80番ポートでアクセスできました。

systemctl statusでサービスの確認ではfairewalldが止まっていたので、なぜアクセスできないのか調査に時間を要してしまいました。

なぜプロセスだけ起動できるようになっているのでしょうか？

firewalldを使わないでアクセス制限をしている場合  
このような状態にならないためには

```

    enable -n firewalld
    
```

が適切でしょうか？
CC BY-SA 4.0
2022-06-21T06:33:24.357
89500
2022-06-21T23:56:21.470
2022-06-21T23:56:21.470
53167
53167
question
linux centos
CentOS7 で firewalld を直接実行するとサービスに登録されずプロセスだけ起動するのはなぜ？
firewalld
に限らず、いわゆるデーモンとして動作するプログラムは本来、個別のコマンドで起動や停止を行うことができます。しかし、プログラムごとに操作方法は異なるため、Systemd
経由にすることで統一された操作を行う事が出来ます。

サービスへの登録はあくまで Systemd
が担っているので、直接起動されたプロセスについては勝手にサービスには登録されませんし、起動状態の関知も出来ません。

firewalld は Systemd 用の定義ファイル (=ユニットファイル) が予め用意されているので、基本的には `systemctl`
コマンド経由で有効・無効の切り替えや起動・停止の管理を行うことを推奨します。

[Enable and Disable
firewalld](https://firewalld.org/documentation/howto/enable-and-disable-
firewalld.html)

> firewalld provides an init script for systems using classic SysVinit and
> also a systemd service file.
```

>     systemctl unmask --now firewalld.service
>     systemctl enable --now firewalld.service
>  
```

**参考:**  
[systemdとは](https://www.designet.co.jp/faq/term/?id=c3lzdGVtZA)
CC BY-SA 4.0
2022-06-21T07:37:20.750
89503
2022-06-21T07:37:20.750
3060
89500
answer