1.특정 서비스를 설치한 패키지(rpm)가 무엇인지 알아야 할 경우가 있습니다.
- 설치는 했는데 무슨 패키지로 설치 했는지 기억 나지 않음.
- 지우고 싶은 서비스 인데, 무슨 패키지인지 알 수 가 없음.
- 시스템 관리자가 알지 못하는 서비스가 동작 되고 있을때, 무슨 패키지로 설치 되었는지 알고 싶습니다.
2.시스템에 설치, 동작 중인 서비스의 확인 방법은 아래와 같습니다.
1. 시스템에 설치된 서비스 목록 확인
[root@localhost ~]# systemctl list-units --type=service
2. 현재 실행 중인 서비스 목록 확인
[root@localhost ~]# systemctl list-units --type=service --state=active
또는
[root@localhost ~]# systemctl -l | grep rpcbind
3. 시스템에 설치 되었으나 현재 동작 중이지 않은 비활성화 된 서비스 확인 (수동으로 시작 해주어야 함)
[root@localhost ~]# systemctl list-units --type=service --state=inactive
4. 서비스 구동에 실패한 서비스 확인 (실행에 실패한 서비스)
[root@localhost ~]# systemctl list-units --type=service --state=failed
3.어떤 서비스가 어떤 패키지를 통해 설치 되었는지는 아래와 같이 확인 합니다.
system를 통해 등록된 서비스 이름(UNIT) 을 rpm -qf 명령어로 확인 합니다.
[ 예시 - ssh 서비스 이름 확인 ]
[root@localhost ~]# systemctl list-units --type=service --state=active
UNIT LOAD ACTIVE SUB DESCRIPTION
auditd.service loaded active running Security Auditing Service
chronyd.service loaded active running NTP client/server
...
sshd.service loaded active running OpenSSH server daemon
rpm -qf 커맨드를 이용하여 sshd.service 를 설치한 패키지 확인
[root@localhost ~]# rpm -qf /usr/lib/systemd/system/sshd.service
openssh-server-8.0p1-17.el8_7.x86_64
다른 예시로 chronyd.service 도 알아 보겠습니다.
[root@localhost ~]# rpm -qf /usr/lib/systemd/system/chronyd.service
chrony-4.2-1.el8.rocky.1.0.x86_64
4.systemd 방식은 /usr/lib/systemd/system 디렉토리에 서비스 유닛이 등록됩니다.
/usr/lib/systemd/system/ 디렉토리는 systemd 서비스 유닛 파일이 저장되는 위치입니다. 이 디렉토리에 있는 파일들은 시스템에서 실행되는 서비스, 소켓, 타이머, 스코프 등을 정의합니다.
각 유닛 파일은 해당 서비스 또는 유닛의 설정과 관련된 정보를 포함하며, systemd가 서비스를 시작, 중지, 관리할 때 사용됩니다.
[root@localhost ~]# ls -al /usr/lib/systemd/system
total 948
drwxr-xr-x. 23 root root 12288 Sep 4 16:24 .
drwxr-xr-x. 16 root root 4096 Mar 7 08:25 ..
-rw-r--r--. 1 root root 275 Apr 7 2021 arp-ethers.service
-rw-r--r--. 1 root root 1661 Sep 30 2022 auditd.service
lrwxrwxrwx. 1 root root 14 Feb 22 2023 autovt@.service -> getty@.service
-rw-r--r--. 1 root root 956 Feb 22 2023 basic.target
drwxr-xr-x. 2 root root 6 Feb 22 2023 basic.target.wants
-r--r--r--. 1 root root 408 Oct 2 2022 blk-availability.service
-rw-r--r--. 1 root root 419 Jun 22 2018 bluetooth.target
-rw-r--r--. 1 root root 455 Feb 22 2023 boot-complete.target
-rw-r--r--. 1 root root 209 Nov 15 2022 chrony-dnssrv@.service
-rw-r--r--. 1 root root 138 Nov 15 2022 chrony-dnssrv@.timer
-rw-r--r--. 1 root root 551 Nov 15 2022 chronyd.service
-rw-r--r--. 1 root root 500 Nov 15 2022 chrony-wait.service
-rw-r--r--. 1 root root 1082 Feb 22 2023 console-getty.service
-rw-r--r--. 1 root root 1263 Feb 22 2023 container-getty@.service
-rw-r--r--. 1 root root 294 Apr 5 07:54 cpupower.service
-rw-r--r--. 1 root root 356 Oct 1 2022 crond.service
-rw-r--r--. 1 root root 465 Jun 22 2018 cryptsetup-pre.target
-rw-r--r--. 1 root root 412 Jun 22 2018 cryptsetup.target
...
5. 모든 설치된 패키지는 'rpm -qf /usr/lib/systemd/system/서비스 명'으로 모두 확인 할 수 있습니다.
단, 서비스가 systemd 방식으로 관리되는 경우 입니다.
CentOS 7 이상인 경우 대부분 systemd 방식으로 관리 되며 표준 관리 방법 입니다.
서비스가 systemd 로 동작 중이나 rpm 패키지로 설치 되지 않은 경우는 아래의 명령어로 확인 가능합니다.
[root@localhost ~]# systemctl status [SERVICE_NAME]
결과에서 "ExecStart" 라인에 서비스의 실행 파일 경로를 확인
침해 사고 대응 하시는 분도 알아 두시면 좋습니다. 쓸일이 생깁니다.
끝
'리눅스와 쉘' 카테고리의 다른 글
임의 사용자가 방화벽 (firewalld) 중지 못하도록 제어 방법 (0) | 2023.09.06 |
---|---|
파일, 디렉토리 권한(퍼미션)을 644 666 등 숫자로 보기 (0) | 2023.09.04 |
tar 압축시 특정 디렉토리 제외하고 압축하기 (0) | 2023.06.29 |
cron 에 작업 등록 하면서 임의 시간에 실행 하기 (0) | 2023.06.24 |
RockyLinux 8에 python 설치 & virtualenv 구성방법 (0) | 2023.06.13 |