시스템 관리자 가이드
RHEL 7 배포, 구성 및 관리
초록
I 부. 기본 시스템 구성
이 부분에서는 기본적인 설치 후 작업 및 키보드 구성, 날짜 및 시간 구성, 사용자 및 그룹 관리 및 권한 얻기와 같은 기본 시스템 관리 작업에 대해 다룹니다.
1장. 시작하기
이 장에서는 Red Hat Enterprise Linux 7을 설치한 직후 수행해야 하는 기본 작업에 대해 설명합니다.
이러한 항목에는 설치 프로세스 중에 일반적으로 이미 수행되는 작업이 포함될 수 있지만 시스템 등록과 같이 반드시 수행해야 할 필요는 없습니다. 이러한 작업을 다루는 하위 관리자는 설치 및 특수 섹션의 관련 문서에 대한 링크에 대한 간략한 요약을 제공합니다.
Red Hat Enterprise Linux 7 설치에 대한 자세한 내용은 Red Hat Enterprise Linux 7 설치 가이드 를 참조하십시오.
이 장에서는 수행할 몇 가지 명령을 설명합니다. root
사용자가 입력해야 하는 명령에는 프롬프트에 #
이 있고 일반 사용자가 수행할 수 있는 명령에는 $
가 있습니다.
일반적인 설치 후 작업에 대한 자세한 내용은 Red Hat Enterprise Linux 7 설치 가이드 를 참조하십시오.
명령줄을 통해 모든 설치 후 작업을 수행할 수 있지만 웹 콘솔 툴을 사용하여 일부 작업을 수행할 수도 있습니다.
What web console Is and Which Tasks it can be Used For
웹 콘솔 은 웹 브라우저를 통해 서버를 모니터링하고 관리하기 위한 사용자 인터페이스를 제공하는 시스템 관리 툴입니다.
웹 콘솔 을 사용하여 다음 작업을 수행할 수 있습니다.
- 하드웨어, 인터넷 연결 또는 성능 특성과 같은 기본 시스템 기능 모니터링
- 시스템 로그 파일의 내용 분석
- 인터페이스, 네트워크 로그, 패킷 크기와 같은 기본 네트워킹 기능 구성
- 사용자 계정 관리
- 시스템 서비스 모니터링 및 구성
- 진단 보고서 생성
- 커널 덤프 구성 설정
- SELinux 구성
- 시스템 서브스크립션 관리
- 터미널 액세스
웹 콘솔 설치 및 사용에 대한 자세한 내용은 RHEL 7 웹 콘솔 을 사용한 시스템 관리를 참조하십시오.
1.1. 환경의 기본 설정
환경의 기본 구성은 다음과 같습니다.
- 날짜 및 시간
- 시스템 지역
- 키보드 레이아웃
이러한 항목 설정은 일반적으로 설치 프로세스의 일부입니다.
자세한 내용은 설치 방법에 따라 적절한 소스를 참조하십시오.
Anaconda 설치 프로그램으로 설치할 때 다음을 참조하십시오.
Kickstart 파일로 설치하는 경우 다음을 참조하십시오.
Red Hat Enterprise Linux 7 설치 가이드의 Kickstart 명령 및 옵션 .
설치 후 환경의 기본 특성을 재구성해야 하는 경우 이 섹션의 지침을 따르십시오.
1.1.1. 날짜 및 시간 구성 소개
정확한 시간은 여러 가지 이유로 중요합니다. Red Hat Enterprise Linux 7에서 시간 유지는 NTP
프로토콜에 의해 확인되며, 이는 사용자 공간에서 실행되는 데몬에 의해 구현됩니다. 사용자 공간 데몬은 커널에서 실행되는 시스템 클럭을 업데이트합니다. 시스템 클럭은 다양한 클럭 소스를 사용하여 시간을 유지할 수 있습니다.
Red Hat Enterprise Linux 7은 다음 데몬을 사용하여 NTP
를 구현합니다.
chronyd
chronyd
데몬은 기본적으로 사용됩니다. chrony 패키지에서 사용할 수 있습니다.chronyd
에서NTP
를 구성하고 사용하는 방법에 대한 자세한 내용은 18장. chrony Suite를 사용하여 NTP 설정 을 참조하십시오.ntpd
ntpd
데몬은 ntp 패키지에서 사용할 수 있습니다.ntpd
에서NTP
설정 및 사용에 대한 자세한 내용은 19장. ntpd를 사용하여 NTP 설정 을 참조하십시오.
기본 chronyd
대신 ntpd
를 사용하려면 19장. ntpd를 사용하여 NTP 설정 에 표시된 대로 chronyd
, install, enable 및 configure ntpd
를 비활성화해야 합니다.
현재 날짜 및 시간 표시
현재 날짜와 시간을 표시하려면 다음 명령 중 하나를 사용합니다.
~]$ date
~]$ timedatectl
timedatectl
명령은 현재 사용된 표준 시간대, NTP(Network Time Protocol) 구성 상태 및 몇 가지 추가 정보를 포함하여 보다 자세한 출력을 제공합니다.
날짜 및 시간 구성에 대한 자세한 내용은 3장. 날짜 및 시간 구성 을 참조하십시오.
1.1.2. 시스템 로컬 구성 소개
시스템 전체 로케일 설정은 systemd
데몬에서 초기 부팅 시 읽는 /etc/locale.conf
파일에 저장됩니다. /etc/locale.conf
에 구성된 로케일 설정은 개별 프로그램 또는 개별 사용자가 재정의하지 않는 한 모든 서비스 또는 사용자에 의해 상속됩니다.
시스템 로케일을 처리하는 기본 작업:
사용 가능한 시스템 로케일 설정 나열:
~]$
localectl list-locales
시스템 로케일 설정의 현재 상태 표시:
~]$
localectl status
기본 시스템 로케일 설정 또는 변경:
~]# localectl set-locale LANG=locale
시스템 로케일 구성에 대한 자세한 내용은 2장. System Locale 및 keyboard Configuration 을 참조하십시오.
1.1.3. keyboard 레이아웃 구성 소개
키보드 레이아웃 설정은 텍스트 콘솔 및 그래픽 사용자 인터페이스에서 사용되는 레이아웃을 제어합니다.
키보드 레이아웃을 처리하는 기본 작업은 다음과 같습니다.
사용 가능한 키맵 나열:
~]$
localectl list-keymaps
키 맵 설정의 현재 상태 표시:
~]$
localectl status
기본 시스템 키맵 설정 또는 변경:
~]# localectl set-keymap
키보드 레이아웃 구성에 대한 자세한 내용은 2장. System Locale 및 keyboard Configuration 을 참조하십시오.
1.2. 네트워크 액세스 구성 및 검사
네트워크 액세스는 일반적으로 설치 프로세스 중에 구성됩니다. 그러나 설치 프로세스에서는 일부 일반적인 설치 경로에서 네트워크 인터페이스를 구성하라는 메시지를 표시하지 않습니다. 따라서 설치 후 네트워크 액세스가 구성되지 않을 수 있습니다. 이 경우 설치 후 네트워크 액세스를 구성할 수 있습니다.
설치 중에 네트워크 액세스를 구성하는 빠른 시작 방법은 1.2.1절. “설치 프로세스 중 네트워크 액세스 구성” 을 참조하십시오. 설치 후 네트워크 액세스를 구성하려면 Red Hat Enterprise Linux 7 네트워킹 가이드 또는 Red Hat Enterprise Linux 7 네트워킹 가이드에 설명된 nmtui 텍스트 사용자 인터페이스 유틸리티에 설명된 nmcli 명령줄 유틸리티를 사용할 수 있습니다.
nmcli 및 nmtui 유틸리티에서는 하나 이상의 새 네트워크 연결을 추가하고 기존 연결을 수정 및 검사할 수 있습니다. nmcli 를 사용하여 네트워크 연결을 만들고 관리하려면 1.2.2절. “nmcli를 사용하여 설치 프로세스 후 네트워크 연결 관리” 을 참조하십시오. nmtui 를 사용하여 네트워크 연결을 생성 및 관리하려면 1.2.3절. “nmtui를 사용하여 설치 프로세스 후 네트워크 연결 관리” 을 참조하십시오.
1.2.1. 설치 프로세스 중 네트워크 액세스 구성
설치 프로세스 중에 네트워크 액세스를 구성하는 방법은 다음과 같습니다.
- Anaconda 설치 프로그램의 그래픽 사용자 인터페이스에 있는 설치 요약 화면에 있는 메뉴
- Anaconda 설치 프로그램의 텍스트 모드에 있는 옵션
- Kickstart 파일
설치가 완료된 후 시스템이 부팅되면 설치 중에 구성한 네트워크 인터페이스가 자동으로 활성화됩니다.
설치 프로세스 중 네트워크 액세스 구성에 대한 자세한 내용은 Red Hat Enterprise Linux 7 설치 가이드 를 참조하십시오.
1.2.2. nmcli를 사용하여 설치 프로세스 후 네트워크 연결 관리
nmcli 유틸리티를 사용하여 네트워크 연결을 관리하려면 root
사용자로 다음 명령을 실행합니다.
새 연결을 생성하려면 다음을 수행합니다.
~]# nmcli con add type type of the connection "con-name" connection name ifname ifname interface-name the name of the interface ipv4 address ipv4 address gw4 address gateway address
기존 연결을 수정하려면 다음을 수행합니다.
~]# nmcli con mod "con-name"
모든 연결을 표시하려면 다음을 수행하십시오.
~]# nmcli con show
활성 연결을 표시하려면 다음을 수행합니다.
~]# nmcli con show --active
특정 연결의 모든 구성 설정을 표시하려면 다음을 수행합니다.
~]# nmcli con show "con-name"
nmcli 명령줄 유틸리티에 대한 자세한 내용은 Red Hat Enterprise Linux 7 네트워킹 가이드 를 참조하십시오.
1.2.3. nmtui를 사용하여 설치 프로세스 후 네트워크 연결 관리
NetworkManager 텍스트 사용자 인터페이스(TUI) 유틸리티인 nmtui 는 NetworkManager 를 제어하여 네트워킹을 구성하는 텍스트 인터페이스를 제공합니다.
nmtui 텍스트 인터페이스 툴 설치 및 사용에 대한 자세한 내용은 Red Hat Enterprise Linux 7 네트워킹 가이드 를 참조하십시오.
1.2.4. 웹 콘솔에서 네트워킹 관리
웹 콘솔에서 메뉴를 사용하면 됩니다.
- 현재 수신 및 전송된 패킷을 표시하려면 다음을 수행합니다.
- 사용 가능한 네트워크 인터페이스의 가장 중요한 특성 표시
- 네트워킹 로그의 콘텐츠를 표시하려면 다음을 수행합니다.
- 다양한 유형의 네트워크 인터페이스 추가 (bond, team, bridge, VLAN)
그림 1.1. 웹 콘솔에서 네트워킹 관리
1.3. 시스템 등록 및 서브스크립션 관리의 기본 사항
1.3.1. Red Hat 서브스크립션을 사용할 수 있는 작업은 무엇입니까?
운영 체제 자체를 포함하여 Red Hat Enterprise Linux 7에 설치된 제품은 서브스크립션을 통해 지원됩니다.
Red Hat Content Delivery Network에 대한 서브스크립션을 추적하는 데 사용됩니다.
- 등록된 시스템
- 해당 시스템에 설치된 제품
- 해당 제품에 연결된 서브스크립션
1.3.2. 설치 중 시스템 등록
이 섹션에서는 설치 프로세스 중 Red Hat Enterprise Linux 7 등록에 대한 간략한 요약을 제공합니다. 설치 후 운영 체제를 등록하지 않으면 이 섹션을 통해 설치 중에 누락된 내용을 확인할 수 있습니다. 자세한 내용은 Red Hat Enterprise Linux 7 설치 가이드 를 참조하십시오.
기본적으로 설치 중에 시스템을 등록하는 방법에는 두 가지가 있습니다.
- 일반적으로 등록은 초기 설정 구성 프로세스의 일부입니다. 자세한 내용은 Red Hat Enterprise Linux 7 설치 가이드 를 참조하십시오.
- 또 다른 옵션은 설치 후 스크립트 를 실행하는 것입니다. 이 스크립트는 설치가 완료되면 자동 등록을 수행하고 시스템을 처음 재부팅하기 전에 자동으로 등록합니다. 이를 위해 Kickstart 파일의 %post 섹션을 수정합니다. 설치 후 스크립트로 서브스크립션 관리자를 실행하는 방법에 대한 자세한 내용은 Red Hat Enterprise Linux 7 설치 가이드 를 참조하십시오.
1.3.3. 설치 후 시스템 등록
설치 과정에서 시스템을 등록하지 않은 경우 다음 절차를 적용하여 나중에 수행할 수 있습니다. 이 절차의 모든 명령은 root
사용자로 수행해야 합니다.
시스템 등록 및 등록
시스템을 등록합니다.
~]# subscription-manager register
이 명령은 Red Hat Customer Portal 사용자 이름과 암호를 입력하라는 메시지를 표시합니다.
필요한 서브스크립션의 풀 ID를 확인합니다.
~]# subscription-manager list --available
이 명령은 Red Hat 계정에 사용 가능한 모든 서브스크립션을 표시합니다. 모든 서브스크립션에 대해 풀 ID를 포함하여 다양한 특성이 표시됩니다.
pool_id 를 이전 단계에서 확인한 풀 ID로 교체하여 시스템에 적절한 서브스크립션을 연결합니다.
~]# subscription-manager attach --pool=pool_id
시스템 등록 및 Red Hat Content Delivery Network 서브스크립션 첨부에 대한 자세한 내용은 7장. 시스템 등록 및 서브스크립션 관리 을 참조하십시오.
1.3.4. EUS 콘텐츠에 시스템 등록
EUS (Extended Update Support) 콘텐츠에 액세스하려면 다음과 같이 시스템을 등록합니다.
EUS 인타이틀먼트를 사용할 수 있는지 확인합니다.
~]# subscription-manager list --available --matches="*Extended Update Support"
+-------------------------------------------+ Available Subscriptions +-------------------------------------------+ Subscription Name: Extended Update Support Provides: Red Hat Enterprise Linux High Availability for x86_64 - Extended Update Support Red Hat Enterprise Linux Resilient Storage for x86_64 - Extended Update Support Red Hat Enterprise Linux for x86_64 - Extended Update Support Red Hat EUCJP Support (for RHEL Server) - Extended Update Support RHEL for SAP - Extended Update Support Red Hat Enterprise Linux Load Balancer (for RHEL Server) - Extended Update Support Red Hat Enterprise Linux Scalable File System (for RHEL Server) - Extended Update Support Red Hat CodeReady Linux Builder for x86_64 - Extended Update Support RHEL for SAP HANA - Extended Update Support Red Hat Enterprise Linux High Performance Networking (for RHEL Server) - Extended Update Support Oracle Java (for RHEL Server) - Extended Update Support Red Hat S-JIS Support (for RHEL Server) - Extended Update Support SKU: RH00030 Contract: 12069074 Pool ID: 8a99f9ac7238188b01723d9c8a8a06a9 Provides Management: No Available: 8 Suggested: 0 Service Level: Layered Service Type: L1-L3 Subscription Type: Instance Based Starts: 05/22/2020 Ends: 05/21/2021 System Type: Physical
Pool ID를 사용하여 해당 서브스크립션을 연결합니다.
~]# subscription-manager attach --pool 8a99f9ac7238188b01723d9c8a8a06a9
시스템에 활성화된 기본 리포지토리를 EUS 변형으로 바꿉니다.
~]# subscription-manager repos --disable \*
사용 중인 RHEL 버전에 설정된 EUS 콘텐츠를 나타내는 리포지토리를 활성화합니다.
~]# subscription-manager repos --enable rhel-7-server-eus-rpms
최종 시스템에 필요한 릴리스 및 지원되는 릴리스를 선택합니다.
~]# subscription-manager release --set 7.6
현재 지원되는 EUS 릴리스는 연장 업데이트 지원 애드온 을 참조하십시오.
1.3.5. E4S 콘텐츠에 시스템 등록
다음 절차에서는 시스템을 등록하고 E4S 콘텐츠를 사용하는 방법을 설명합니다.
다음 명령을 사용하여 시스템을 등록합니다.
~]# subscription-manager register
E4S 인타이틀먼트를 사용할 수 있는지 확인합니다.
~]# subscription-manager list --available --matches="*Update Services for SAP Solutions*"
+-------------------------------------------+ Available Subscriptions +-------------------------------------------+ Subscription Name: Red Hat Enterprise Linux for SAP Solutions, Standard (Physical or Virtual Nodes) Provides: dotNET on RHEL Beta (for RHEL Server) Red Hat CodeReady Linux Builder for x86_64 Red Hat Enterprise Linux for SAP HANA for x86_64 Red Hat Ansible Engine RHEL for SAP HANA - Update Services for SAP Solutions Red Hat Enterprise Linux Scalable File System (for RHEL Server) - Extended Update Support RHEL for SAP HANA - Extended Update Support Red Hat Enterprise Linux Atomic Host Beta Red Hat Beta Red Hat EUCJP Support (for RHEL Server) - Extended Update Support Red Hat Enterprise Linux High Availability for x86_64 Red Hat Enterprise Linux Load Balancer (for RHEL Server) - Extended Update Support dotNET on RHEL (for RHEL Server) Red Hat CodeReady Linux Builder for x86_64 - Extended Update Support Red Hat Enterprise Linux High Availability - Update Services for SAP Solutions Red Hat Enterprise Linux Resilient Storage for x86_64 - Extended Update Support Red Hat Enterprise Linux High Availability for x86_64 - Extended Update Support Oracle Java (for RHEL Server) Red Hat Enterprise Linux Server - Update Services for SAP Solutions Red Hat Software Collections (for RHEL Server) Red Hat Enterprise Linux Scalable File System (for RHEL Server) Red Hat Enterprise Linux High Performance Networking (for RHEL Server) - Extended Update Support RHEL for SAP - Update Services for SAP Solutions Oracle Java (for RHEL Server) - Extended Update Support Red Hat Enterprise Linux Atomic Host Red Hat Developer Tools (for RHEL Server) Red Hat Software Collections Beta (for RHEL Server) Red Hat Enterprise Linux Server Red Hat Enterprise Linux for SAP Applications for x86_64 Red Hat Developer Tools Beta (for RHEL Server) Red Hat Enterprise Linux for x86_64 Red Hat Enterprise Linux for x86_64 - Extended Update Support RHEL for SAP - Extended Update Support Red Hat Developer Toolset (for RHEL Server) Red Hat S-JIS Support (for RHEL Server) - Extended Update Support SKU: RH00764 Contract: 11977725 Pool ID: 8a85f99c6c4825eb016c4a30d3493064 Provides Management: Yes Available: 18 Suggested: 0 Service Level: Standard Service Type: L1-L3 Subscription Type: Instance Based Starts: 03/29/2020 Ends: 12/31/2021 System Type: Physical
Pool ID를 사용하여 해당 서브스크립션을 연결합니다.
~]# subscription-manager attach --pool=#################
시스템에 활성화된 기본 리포지토리를 EUS 변형으로 바꿉니다.
~]# subscription-manager repos --disable="*"
사용 중인 RHEL 버전에 설정된 E4S 콘텐츠를 나타내는 리포지토리를 활성화합니다.
~]# subscription-manager --enable=rhel-7-server-e4s-rpms
리포지토리 캐시 및 릴리스 잠금을 SAP 애플리케이션을 지원하는 E4S의 유효한 릴리스로 지웁니다.
~]# yum clean all && subscription-manager release --set=7.7
1.4. 소프트웨어 설치
이 섹션에서는 Red Hat Enterprise Linux 7 시스템에서 소프트웨어 설치의 기본 사항을 안내하는 정보를 제공합니다. 1.4.1절. “소프트웨어 설치를 위한 사전 요구 사항” 에 소프트웨어를 설치하기 위해 수행해야 하는 전제 조건을 언급하고, 1.4.2절. “소프트웨어 패키징 및 소프트웨어 리포지토리 시스템 소개” 의 소프트웨어 패키지 및 소프트웨어 리포지토리에 대한 기본 정보를 제공하고, 1.4.3절. “서브스크립션 관리자 및 YUM을 사용하여 기본 소프트웨어 설치 작업 관리” 의 소프트웨어 설치와 관련된 기본 작업을 수행하는 방법을 참조합니다.
1.4.1. 소프트웨어 설치를 위한 사전 요구 사항
Red Hat Content Delivery Network 서브스크립션 서비스는 Red Hat 소프트웨어 인벤토리를 처리하고 추가 소프트웨어 또는 이미 설치된 패키지를 설치할 수 있는 메커니즘을 제공합니다. 시스템을 등록하고 서브스크립션을 연결한 후 1.3절. “시스템 등록 및 서브스크립션 관리의 기본 사항” 에 설명된 대로 소프트웨어 설치를 시작할 수 있습니다.
1.4.2. 소프트웨어 패키징 및 소프트웨어 리포지토리 시스템 소개
Red Hat Enterprise Linux 시스템의 모든 소프트웨어는 특정 리포지토리에 저장된 RPM 패키지로 나뉩니다. Red Hat Content Delivery Network를 시스템이 서브스크립션하면 /etc/yum.repos.d/
디렉토리에 리포지토리 파일이 생성됩니다.
yum
유틸리티를 사용하여 패키지 작업을 관리합니다.
- 패키지에 대한 정보 검색
- 패키지 설치
- 패키지 업데이트
- 패키지 제거
- 현재 사용 가능한 리포지토리 목록 확인
- 리포지토리 추가 또는 제거
- 리포지토리 활성화 또는 비활성화
소프트웨어 설치와 관련된 기본 작업에 대한 자세한 내용은 1.4.3절. “서브스크립션 관리자 및 YUM을 사용하여 기본 소프트웨어 설치 작업 관리” 을 참조하십시오. 소프트웨어 리포지토리 관리에 대한 자세한 내용은 7.2절. “소프트웨어 리포지토리 관리” 을 참조하십시오. yum
유틸리티 사용에 대한 자세한 내용은 9장. yum 을 참조하십시오.
1.4.3. 서브스크립션 관리자 및 YUM을 사용하여 기본 소프트웨어 설치 작업 관리
운영 체제를 설치한 후 필요할 수 있는 가장 기본적인 소프트웨어 설치 작업은 다음과 같습니다.
사용 가능한 모든 리포지토리 나열:
~]# subscription-manager repos --list
현재 활성화된 리포지토리를 모두 나열합니다.
~]$
yum repolist
리포지토리 활성화 또는 비활성화:
~]# subscription-manager repos --enable repository
~]# subscription-manager repos --disable repository
특정 문자열과 일치하는 패키지 검색:
~]$
yum search
string패키지 설치:
~]# yum install package_name
모든 패키지 및 해당 종속 항목을 업데이트합니다.
~]# yum update
패키지를 업데이트합니다.
~]# yum update package_name
패키지 및 패키지에 종속된 패키지 설치 제거:
~]# yum remove package_name
설치 및 사용 가능한 모든 패키지에 대한 정보 나열:
~]$
yum list all
설치된 모든 패키지에 대한 정보 나열:
~]$
yum list installed
1.5. 부팅 시 systemd 서비스 시작
systemd는 systemd 단위의 개념을 소개하는 Linux 운영 체제용 시스템 및 서비스 관리자입니다. systemd에 대한 자세한 내용은 10.1절. “systemd 소개” 을 참조하십시오.
이 섹션에서는 부팅 시 서비스가 활성화 또는 비활성화되었는지 확인하는 방법에 대한 정보를 제공합니다. 또한 웹 콘솔 을 통해 서비스를 관리하는 방법을 설명합니다.
1.5.1. 서비스 활성화 또는 비활성화
설치 프로세스 중에 이미 부팅 시 활성화되거나 비활성화된 서비스를 확인하거나 설치된 운영 체제에서 서비스를 활성화하거나 비활성화할 수 있습니다.
설치 프로세스 중에 부팅 시 활성화되거나 비활성화되는 서비스 목록을 생성하려면 Kickstart 파일에서 services
옵션을 사용합니다.
services [--disabled=list] [--enabled=list]
비활성화된 서비스 목록은 활성화된 서비스 목록보다 먼저 처리됩니다. 따라서 두 목록에 서비스가 모두 표시되면 활성화됩니다. 서비스 목록은 쉼표로 구분된 형식으로 제공해야 합니다. 서비스 목록에 공백을 포함하지 마십시오. 자세한 내용은 Red Hat Enterprise Linux 7 설치 가이드를 참조하십시오.
이미 설치된 운영 체제에서 서비스를 활성화하거나 비활성화하려면 다음을 수행합니다.
~]# systemctl enableservice_name
~]# systemctl disableservice_name
자세한 내용은 10.2절. “시스템 서비스 관리”의 내용을 참조하십시오.
1.5.2. 웹 콘솔에서 서비스 관리
웹 콘솔에서 를 선택하여 systemd 대상, 서비스, 소켓, 타이머 및 경로를 관리합니다. 여기에서 자신의 상태를 확인, 시작 또는 중지, 활성화 또는 비활성화할 수 있습니다.
그림 1.2. 웹 콘솔에서 서비스 관리
1.5.3. systemd 서비스의 추가 리소스
systemd에 대한 자세한 내용은 10장. systemd를 사용하여 서비스 관리 을 참조하십시오.
1.6. 방화벽, SELinux 및 SSH 로그인으로 시스템 보안 강화
컴퓨터 보안은 컴퓨터 시스템을 하드웨어, 소프트웨어 또는 정보에 대한 도용 또는 손상으로부터 보호하는 것뿐 아니라 서비스 중단 또는 잘못된 방향을 보호하는 것입니다. 따라서 컴퓨터 보안을 보장하는 것은 기업이 민감한 데이터를 처리하거나 일부 비즈니스 트랜잭션을 처리하는 데 필요한 작업뿐만 아니라 필수 작업입니다.
컴퓨터 보안은 다양한 기능 및 도구를 포함합니다. 이 섹션에서는 운영 체제를 설치한 후 구성해야 하는 기본 보안 기능만 다룹니다. Red Hat Enterprise Linux 7 보안에 대한 자세한 내용은 Red Hat Enterprise Linux 7 보안 가이드 를 참조하십시오.
1.6.1. 방화벽 활성화 및 실행 확인
1.6.1.1. 방화벽의 취약점 및 시스템 보안 강화 방법
방화벽은 사전 결정된 보안 규칙을 기반으로 들어오고 나가는 네트워크 트래픽을 모니터링하고 제어하는 네트워크 보안 시스템입니다. 방화벽은 일반적으로 신뢰할 수 있고 안전한 내부 네트워크와 외부 네트워크 간의 장벽을 설정합니다.
Red Hat Enterprise Linux 7에서 방화벽은 Red Hat Enterprise Linux를 설치하는 동안 자동으로 활성화되는 firewalld
서비스에서 제공합니다. 그러나 Kickstart 구성과 같이 서비스를 명시적으로 비활성화한 경우 1.6.1.2절. “firewalld 서비스 다시 활성화” 에 설명된 대로 다시 활성화할 수 있습니다. Kickstart 파일의 방화벽 설정 옵션에 대한 개요는 Red Hat Enterprise Linux 7 설치 가이드 를 참조하십시오.
1.6.1.2. firewalld 서비스 다시 활성화
설치 후 firewalld
서비스가 비활성화되어 있는 경우 Red Hat은 이를 다시 활성화하는 것을 권장합니다.
일반 사용자로도 firewalld
의 현재 상태를 표시할 수 있습니다.
~]$ systemctl status firewalld
firewalld
가 활성화되어 실행되지 않으면 root
사용자로 전환하고 해당 상태를 변경합니다.
~]# systemctl start firewalld
~]# systemctl enable firewalld
firewalld
와 관련된 설치 후 절차에 대한 자세한 내용은 Red Hat Enterprise Linux 7 보안 가이드 를 참조하십시오. 방화벽 설정 및 사용에 대한 자세한 내용은 Red Hat Enterprise Linux 7 보안 가이드를 참조하십시오.
1.6.2. SELinux 적용 상태 확인
1.6.2.1. SELinux의 정의 및 시스템 보안 강화 방법
SELinux(Security Enhanced Linux) 는 시스템 보안 계층을 통해 어떤 프로세스가 어떤 파일, 디렉터리 및 포트에 액세스할 수 있는지 결정합니다.
SELinux 상태
SELinux 에는 다음 두 가지 상태가 있습니다.
- enabled
- disabled
SELinux 가 비활성화된 경우 DC(Discretionary Access Control) 규칙만 사용됩니다.
SELinux 모드
SELinux 가 활성화되면 다음 모드 중 하나에서 실행할 수 있습니다.
- enforcing
- 허용
강제 모드는 SELinux 정책이 적용됨을 의미합니다. SELinux 는 SELinux 정책 규칙에 따라 액세스를 거부하고, 특히 허용되는 상호 작용만 활성화합니다. 강제 모드는 설치 후 기본 모드이며 가장 안전한 SELinux 모드이기도 합니다.
허용 모드는 SELinux 정책이 적용되지 않음을 의미합니다. SELinux 는 액세스를 거부하지 않지만 강제 모드에서 실행하는 경우 거부가 거부된 작업에 대해 기록됩니다. 허용 모드는 설치 중에 기본 모드입니다. 허용 모드에서는 문제를 해결할 때 AVC(Access Vector Cache) 거부에 액세스해야 하는 경우와 같이 특정 경우에 유용합니다.
Red Hat Enterprise Linux 7 의 SELinux 에 대한 자세한 내용은 Red Hat Enterprise Linux 7 SELinux 사용자 및 관리자 가이드 를 참조하십시오.
1.6.2.2. SELinux의 필수 상태 확인
기본적으로 SELinux 는 설치 중에 허용 모드로 작동하며 설치가 완료되면 강제 모드로 작동합니다.
그러나 일부 특정 상황에서는 SELinux 를 허용 모드로 명시적으로 설정하거나 설치된 운영 체제에서 비활성화할 수도 있습니다. 예를 들어 Kickstart 구성에서 이 값을 설정할 수 있습니다. Kickstart 파일의 SELinux 설정 옵션에 대한 개요는 Red Hat Enterprise Linux 7 설치 가이드 를 참조하십시오.
Red Hat은 시스템을 강제 모드로 유지할 것을 권장합니다.
현재 SELinux 모드를 표시하고 필요에 따라 모드를 설정하려면 다음을 수행합니다.
SELinux의 필수 상태 확인
현재 적용된 SELinux 모드를 표시합니다.
~]$
getenforce
필요한 경우 SELinux 모드를 전환합니다.
스위치는 일시적이거나 영구적일 수 있습니다. 영구 스위치는 재부팅 시 지속되지 않지만 임시 스위치는 재부팅 시 지속되지 않습니다.
강제 또는 허용 모드로 임시로 전환하려면 다음을 수행합니다.
~]# setenforce Enforcing
~]# setenforce Permissive
SELinux 모드를 영구적으로 설정하려면
/etc/selinux/config
구성 파일에서 SELINUX 변수를 수정합니다.예를 들어 SELinux 를 강제 모드로 전환하려면 다음을 수행합니다.
# This file controls the state of SELinux on the system. # SELINUX= can take one of these three values: # enforcing - SELinux security policy is enforced. # permissive - SELinux prints warnings instead of enforcing. # disabled - No SELinux policy is loaded. SELINUX=enforcing
1.6.2.3. 웹 콘솔에서 SELinux 관리
웹 콘솔에서 강제 정책을 설정하거나 해제하려면 SELinux 옵션을 사용합니다.
기본적으로 웹 콘솔 의 SELinux 강제 정책은 설정되어 있으며 SELinux 는 강제 모드로 작동합니다. 이 모드를 해제하면 SELinux 를 허용 모드로 전환할 수 있습니다. /etc/sysconfig/selinux 파일의 기본 구성에서 이러한 비교는 다음 부팅 시 자동으로 되돌아갑니다.
그림 1.3. 웹 콘솔에서 SELinux 관리
1.6.3. SSH 기반 인증 사용
1.6.3.1. SSH 기반 인증 및 시스템 보안을 조정하는 방법
다른 컴퓨터와의 통신을 보호하려면 SSH 기반 인증을 사용할 수 있습니다.
SSH(Secure Shell)는 클라이언트-서버 통신을 용이하게 하고 사용자가 SSH를 원격으로 실행하는 모든 호스트 시스템에 로그인할 수 있는 프로토콜입니다. SSH가 연결을 암호화합니다. 클라이언트는 암호화를 사용하여 인증 정보를 서버로 전송하며 세션 중에 전송되고 수신되는 모든 데이터는 암호화로 전송됩니다.
SSH를 사용하면 사용자가 암호 없이 인증할 수 있습니다. 이를 위해 SSH는 개인-공개 키 스키마를 사용합니다.
SSH 보호 장치에 대한 자세한 내용은 12.1.2절. “주요 기능” 을 참조하십시오.
1.6.3.2. SSH 연결 설정
SSH 연결을 사용할 수 있으려면 공개 키와 개인 키로 구성된 두 개의 키 쌍을 만듭니다.
키 파일 생성 및 서버에 Them 복사
공개 및 개인 키를 생성합니다.
~]$
ssh-keygen
두 키는 모두
~/.ssh/
디렉터리에 저장됩니다.-
~/.ssh/id_rsa.pub
- public key ~/.SSH/id_rsa
- 개인 키공개 키는 시크릿일 필요가 없습니다. 개인 키를 확인하는 데 사용됩니다. 개인 키는 시크릿입니다. 키 생성 프로세스 중에 지정한 암호로 개인 키를 보호하도록 선택할 수 있습니다. 암호를 사용하면 인증은 더 안전하지만 더 이상 암호가 제공되지 않습니다.
ssh-agent
명령을 사용하여 이를 방지할 수 있습니다. 이 경우 세션이 시작될 때 한 번만 암호를 입력합니다.ssh-agent
구성에 대한 자세한 내용은 12.2.4절. “키 기반 인증 사용” 을 참조하십시오.
-
가장 최근에 수정된 공개 키를 로그인하려는 원격 머신에 복사합니다.
~]# ssh-copy-id USER@hostname
따라서 이제 안전한 방법으로 시스템을 입력할 수 있지만 암호를 입력하지 않아도 됩니다.
1.6.3.3. SSH 루트 로그인 비활성화
시스템 보안을 강화하기 위해 기본적으로 활성화되어 있는 root
사용자의 SSH 액세스를 비활성화할 수 있습니다.
이 항목에 대한 자세한 내용은 Red Hat Enterprise Linux 7 보안 가이드 를 참조하십시오.
SSH 루트 로그인 비활성화
/etc/ssh/sshd_config
파일에 액세스합니다.~]# vi /etc/ssh/sshd_config
#PermitRootLogin yes
를 다음과 같이 읽는 행을 변경합니다.PermitRootLogin no
sshd
서비스를 다시 시작합니다.~]# systemctl restart sshd
1.7. 사용자 계정 관리의 기본 사항
Red Hat Enterprise Linux 7은 다중 사용자 운영 체제로, 다른 컴퓨터에서 여러 사용자가 한 컴퓨터에 설치된 단일 시스템에 액세스할 수 있습니다. 모든 사용자는 자체 계정으로 운영되며 사용자 계정을 관리하여 Red Hat Enterprise Linux 시스템 관리의 핵심 요소를 나타냅니다.
일반 및 시스템 계정
특정 시스템의 사용자를 위해 일반 계정이 생성됩니다. 이러한 계정은 일반 시스템 관리 중에 추가, 제거 및 수정할 수 있습니다.
시스템 계정은 시스템의 특정 애플리케이션 식별자를 나타냅니다. 이러한 계정은 일반적으로 소프트웨어 설치 시에만 추가되거나 조작되며 나중에 수정되지 않습니다.
시스템에서 로컬로 시스템 계정을 사용할 수 있다고 가정합니다. LDAP 구성 인스턴스에서와 같이 이러한 계정이 원격으로 구성되고 제공되는 경우 시스템 중단 및 서비스 시작 오류가 발생할 수 있습니다.
시스템 계정의 경우 1000 미만의 사용자 ID가 예약됩니다. 일반 계정의 경우 1000부터 시작하는 ID를 사용할 수 있습니다. 그러나 권장 사례는 5000에서 시작하는 ID를 할당하는 것입니다. 자세한 내용은 4.1절. “사용자 및 그룹 소개”를 참조하십시오. ID 할당 지침은 /etc/login.defs
파일에서 확인할 수 있습니다.
# Min/max values for automatic uid selection in useradd # UID_MIN 1000 UID_MAX 60000 # System accounts SYS_UID_MIN 201 SYS_UID_MAX 999
어떤 그룹들이 있고, 어떤 용도로 사용됩니까?
그룹은 특정 파일에 대한 액세스 권한 부여와 같은 공통 목적을 위해 여러 사용자 계정을 함께 연결하는 엔티티입니다.
1.7.1. 사용자 계정 및 그룹을 관리하는 가장 기본적인 명령줄 도구
사용자 계정 및 그룹을 관리하는 가장 기본적인 작업과 적절한 명령줄 툴은 다음과 같습니다.
사용자 및 그룹 ID 표시:
~]$
id
새 사용자 계정 생성:
~]# useradd [options] user_name
사용자 이름에 속하는 사용자 계정에 새 암호를 할당합니다.
~]# passwd user_name
그룹에 사용자 추가:
~]# usermod -a -G group_name user_name
사용자 및 그룹 관리에 대한 자세한 내용은 4장. 사용자 및 그룹 관리 을 참조하십시오.
그래픽 사용자 인터페이스를 사용하여 사용자 및 그룹을 관리하려면 4.2절. “그래픽 환경에서 사용자 관리” 을 참조하십시오.
1.7.2. 웹 콘솔에서 사용자 계정 관리
웹 콘솔 에서 계정을 관리하려면 메뉴를 선택합니다.
그림 1.4. 웹 콘솔에서 사용자 계정 관리
1.8. kdump 메커니즘을 사용하여 Crashed 커널 덤프
이 섹션에서는 kdump 라고도 하는 커널 크래시 덤프 메커니즘을 소개하고 1.8.1절. “사용할 수 있는 kdump Is 및 Which 작업” 에서 사용하는 kdump 를 간략하게 설명합니다.
kdump
서비스 활성화는 설치 프로세스의 일부이며, 설치 중에 kdump 가 기본적으로 활성화되었습니다. 이 섹션에서는 1.8.2절. “설치 프로세스 중 kdump 활성화 및 활성화” 에 설치하는 동안 kdump 를 활성화하는 방법과 1.8.3절. “설치 프로세스 후 kdump가 설치 및 활성화되었는지 확인” 의 설치 후 비활성화된 경우 kdump
서비스를 수동으로 활성화하는 방법에 대해 설명합니다.
웹 콘솔 을 사용하여 kdump 를 구성할 수도 있습니다. 자세한 내용은 1.8.4절. “웹 콘솔에서 kdump 구성”를 참조하십시오.
1.8.1. 사용할 수 있는 kdump Is 및 Which 작업
시스템 충돌의 경우 kdump 라는 커널 크래시 덤프 메커니즘을 사용하면 나중에 분석할 수 있도록 시스템 메모리의 내용을 저장할 수 있습니다. kdump 메커니즘은 kexec 시스템 호출을 사용합니다. 이 호출은 다른 커널의 컨텍스트에서 Linux 커널을 부팅하고, BIOS를 우회하고, 손실되는 첫 번째 커널 메모리의 내용을 보존하는 데 사용할 수 있습니다.
커널이 발생하면 kdump 는 kexec를 사용하여 두 번째 커널( capture kernel)으로 부팅합니다. 이 커널은 첫 번째 커널에 액세스할 수 없는 시스템 메모리의 예약된 부분에 있습니다. 두 번째 커널은 충돌한 커널의 메모리(감시 덤프)의 내용을 캡처하여 저장합니다.
1.8.2. 설치 프로세스 중 kdump 활성화 및 활성화
설치 중에 kdump 활성화 및 활성화는 Anaconda 설치 프로그램에서 수행하거나 Kickstart 파일에서 %addon com_redhat_kdump
명령을 사용하여 수행할 수 있습니다.
자세한 내용은 설치 방법에 따라 적절한 소스를 참조하십시오.
Anaconda 설치 프로그램으로 설치할 때 다음을 참조하십시오.
Red Hat Enterprise Linux 7 설치 가이드에서 Anaconda를 사용하여 설치.
Kickstart 파일로 설치하는 경우 다음을 참조하십시오.
Red Hat Enterprise Linux 7 설치 가이드의 Kickstart 명령 및 옵션.
1.8.3. 설치 프로세스 후 kdump가 설치 및 활성화되었는지 확인
kdump 가 설치되었는지 확인하고 구성하려면 다음을 수행합니다.
kdump 설치 및 kdump 구성 확인
kdump 가 시스템에 설치되어 있는지 확인하려면 다음을 수행하십시오.
~]$
rpm -q kexec-tools
설치되지 않은 경우 kdump 를 설치하려면
root
사용자로 입력합니다.~]# yum install kexec-tools
kdump 를 구성하려면 다음을 수행합니다.
명령줄 또는 그래픽 사용자 인터페이스를 사용합니다.
두 옵션 모두 Red Hat Enterprise Linux 7 Kernel Crash Dump Guide에 자세히 설명되어 있습니다.
그래픽 구성 도구를 설치해야 하는 경우:
~]# yum install system-config-kdump
1.8.4. 웹 콘솔에서 kdump 구성
웹 콘솔에서 를 선택하여 확인합니다.
- kdump 상태
- kdump용으로 예약된 메모리 양
- 크래시 덤프 파일의 위치
그림 1.5. 웹 콘솔에서 kdump 구성
1.8.5. kdump의 추가 리소스
kdump 에 대한 자세한 내용은 Red Hat Enterprise Linux 7 Kernel Crash Dump Guide를 참조하십시오.
1.9. ReaR을 사용하여 시스템 복구 수행 및 시스템 백업 생성
소프트웨어 또는 하드웨어 장애가 운영 체제를 중단하면 시스템을 복구하기 위한 메커니즘이 필요합니다. 또한 시스템 백업을 저장해야 하는 것도 유용합니다. Red Hat은 Relax-and-Recover(ReaR) 도구를 사용하여 이러한 두 가지 요구 사항을 모두 충족할 것을 권장합니다.
1.9.1. ReaR Is 및 Which 작업은 사용할 수 있습니다.
Rear는 재해 복구 및 시스템 마이그레이션 유틸리티로 전체 복구 시스템을 만들 수 있습니다. 기본적으로 이 복구 시스템은 스토리지 레이아웃과 부트 로더만 복원하지만 실제 사용자 및 시스템 파일은 복원되지 않습니다.
또한 특정 백업 소프트웨어를 사용하면 재해 복구를 위해 ReaR을 통합할 수 있습니다.
을 다시 사용하여 다음 작업을 수행할 수 있습니다.
- 새 하드웨어에서 복구 시스템 부팅
- 원래 스토리지 레이아웃 복제
- 사용자 및 시스템 파일 복원
1.9.2. ReaR 설치 및 구성 빠른 시작
ReaR을 설치하려면 root
사용자로 를 입력합니다.
~]# yum install rear
/etc/rear/local.conf
파일의 설정을 사용하여 ReaR을 구성합니다.
자세한 내용은 27.1절. “기본 ReaR 사용” 에서 참조하십시오.
1.9.3. ReaR을 사용하여 복구 시스템 생성에 대한 빠른 시작
- 복구 시스템을 생성하려면
root
사용자로 다음 명령을 실행하십시오.
~]# rear mkrescue
ReaR을 사용하여 구조 시스템 생성에 대한 자세한 내용은 27.1.3절. “복구 시스템 생성” 를 참조하십시오.
1.9.4. 백업 소프트웨어를 사용하여 ReaR 구성 빠른 시작
rear에는 NETFS라는 완전히 통합된 내장형 또는 내부 백업 방법이 포함되어 있습니다.
ReaR이 내부 백업 방법을 사용하도록 하려면 다음 행을 /etc/rear/local.conf
파일에 추가하십시오.
BACKUP=NETFS BACKUP_URL=backup location
/etc/rear/local.conf
에 다음 행을 추가하여 새 백업 아카이브를 만들 때 이전 백업 아카이브를 유지하도록 ReaR을 구성할 수도 있습니다.
NETFS_KEEP_OLD_BACKUP_COPY=y
백업을 증분적으로 만들려면 각 실행 시 변경된 파일만 백업됩니다. /etc/rear/local.conf
에 이 행을 추가합니다.
BACKUP_TYPE=incremental
ReaR NETFS 내부 백업 방법 사용에 대한 자세한 내용은 27.2.1절. “Built-in Backup 방법” 을 참조하십시오.
지원되는 외부 백업 방법 및 지원되지 않는 백업 방법에 대한 자세한 내용은 27.2.2절. “지원되는 백업 방법” 및 27.2.3절. “지원되지 않는 백업 방법” 을 참조하십시오.
1.10. 로그 파일을 사용하여 문제 해결
문제를 해결할 때 운영 체제에 대한 다른 정보와 메시지가 포함된 로그 파일을 감사할 수 있습니다. Red Hat Enterprise Linux 7의 로깅 시스템은 내장 syslog 프로토콜을 기반으로 합니다. 특정 프로그램은 이 시스템을 사용하여 이벤트를 기록하고 이를 로그 파일로 구성하며 운영 체제를 감사하고 다양한 문제를 해결할 때 유용합니다.
로그 파일에 대한 자세한 내용은 23장. 로그 파일 보기 및 관리 을 참조하십시오.
1.10.1. services Handling the syslog messages
syslog 메시지는 두 서비스에서 처리됩니다.
-
systemd-journald
데몬 - 커널에서 메시지 수집, 부팅 프로세스의 초기 단계, 데몬이 시작되어 실행될 때의 표준 출력 및 오류, syslog, 추가 처리를 위해 메시지를rsyslog
서비스로 전달합니다. -
rsyslog
서비스 - syslog 메시지를 유형 및 우선 순위에 따라 정렬하고/var/log
디렉터리의 파일에 기록하며 로그가 지속적으로 저장됩니다.
1.10.2. 하위 디렉터리 저장 syslog 메시지 저장
syslog 메시지는 포함된 메시지 및 로그에 따라 /var/log
디렉터리의 다양한 하위 디렉터리에 저장됩니다.
-
var/log/inspector
- 아래에 언급된 syslog 메시지를 제외한 모든 syslog 메시지 -
var/log/secure
- 보안 및 인증 관련 메시지 및 오류 -
var/log/maillog
- 메일 서버 관련 메시지 및 오류 -
var/log/cron
- 주기적으로 실행되는 작업과 관련된 로그 파일 -
var/log/boot.log
- 시스템 시작과 관련된 로그 파일
1.11. Red Hat 지원 액세스
Red Hat의 지원을 받으려면 서브스크립션과 함께 제공되는 모든 항목에 액세스할 수 있는 Red Hat 고객 포털 을 사용하십시오.
이 섹션에서는 다음을 설명합니다.
- Red Hat 지원 받기 참조 1.11.1절. “Red Hat 고객 포털을 통해 Red Hat 지원 요청”
- SOS 보고서를 사용하여 문제 해결을 참조하십시오. 1.11.2절. “문제 해결을 위해 SOS 보고서 사용”
1.11.1. Red Hat 고객 포털을 통해 Red Hat 지원 요청
Red Hat 고객 포털 을 사용하면 다음을 수행할 수 있습니다.
- 새 지원 케이스 만들기
- Red Hat 전문가와의 실시간 채팅 시작
- 전화하거나 이메일을 보내 Red Hat 전문가에게 문의하십시오.
Red Hat 고객 포털에 액세스하려면 https://access.redhat.com 로 이동하십시오.
Red Hat 지원과 관련된 Red Hat 고객 포털 서비스를 사용하려면 다음을 사용할 수 있습니다.
- 웹 브라우저
- Red Hat 지원 도구
1.11.1.1. Red Hat 지원 도구 Is 및 Which 작업이란 무엇입니까?
Red Hat 지원 도구는 서브스크립션 기반 Red Hat 액세스 서비스에 대한 텍스트 콘솔 인터페이스를 제공하는 명령줄 기반 도구입니다. 이 툴은 redhat-support-tool 패키지에 포함되어 있습니다.
Red Hat 지원 도구를 사용하면 다음과 같은 지원 관련 작업을 수행할 수 있습니다.
- 지원 케이스 공개 또는 업데이트
- Red Hat 지식 기반 솔루션 검색
- Python 및 Java 오류 분석
대화형 모드에서 툴을 시작하려면 다음을 수행합니다.
~]$ redhat-support-tool
Welcome to the Red Hat Support Tool.
Command (? for help):
대화형 모드에서 ?를
사용 가능한 명령을 표시합니다.Command (? for help): ?
Red Hat 지원 툴 설치 및 사용에 대한 자세한 내용은 8장. Red Hat 지원 도구를 사용하여 지원에 액세스 및 Red Hat 지식베이스 문서 Red Hat Access를 참조하십시오. Red Hat 지원 도구.
1.11.2. 문제 해결을 위해 SOS 보고서 사용
SOS 보고서는 Red Hat Enterprise Linux 시스템에서 구성 세부 정보, 시스템 정보 및 진단 정보를 수집합니다. 지원 케이스를 열 때 보고서를 첨부합니다.
SOS 보고서는 Red Hat Enterprise Linux 7의 기본 최소 설치로 설치되지 않는 sos 패키지에 제공됩니다.
sos 패키지를 설치하려면 다음을 수행합니다.
~]# yum install sos
SOS 보고서를 생성하려면 다음을 수행합니다.
~]# sosreport
지원 사례에 보고서를 첨부하려면 Red Hat 지식베이스 문서 How can I attach a file to a Red Hat 지원 케이스 에서 참조하십시오. sos 보고서를 연결할 때 지원 케이스 수를 입력하라는 메시지가 표시됩니다.
SOS 보고서에 대한 자세한 내용은 Red Hat 지식베이스 문서 What is a sosreport and how to create one in Red Hat Enterprise Linux 4.6 이상에서 참조하십시오.
2장. System Locale 및 keyboard Configuration
시스템 로케일 은 시스템 서비스 및 사용자 인터페이스의 언어 설정을 지정합니다. 키보드 레이아웃 설정은 텍스트 콘솔 및 그래픽 사용자 인터페이스에서 사용되는 레이아웃을 제어합니다.
이러한 설정은 /etc/locale.conf
구성 파일을 수정하거나 localectl 유틸리티를 사용하여 설정할 수 있습니다. 또한 그래픽 사용자 인터페이스를 사용하여 작업을 수행할 수 있습니다. 이 방법에 대한 설명은 Red Hat Enterprise Linux 7 설치 가이드 를 참조하십시오.
2.1. 시스템 위치 설정
시스템 전체 로케일 설정은 systemd
데몬에서 초기 부팅 시 읽는 /etc/locale.conf
파일에 저장됩니다. /etc/locale.conf
에 구성된 로케일 설정은 개별 프로그램 또는 개별 사용자가 재정의하지 않는 한 모든 서비스 또는 사용자에 의해 상속됩니다.
/etc/locale.conf
의 기본 파일 형식은 줄로 구분된 변수 할당 목록입니다. 예를 들어, /etc/locale.conf
에 영어 메시지가 있는 독일어 로케일은 다음과 같습니다.
LANG=de_DE.UTF-8 LC_MESSAGES=C
여기에서 LC_MESSAGES 옵션은 표준 오류 출력에 기록된 진단 메시지에 사용되는 로케일을 결정합니다. /etc/locale.conf
에서 로케일 설정을 추가로 지정하려면 다른 여러 옵션을 사용할 수 있으므로 가장 관련된 옵션은 표 2.1. “/etc/locale.conf에서 설정 가능한 옵션” 에 요약되어 있습니다. 이러한 옵션에 대한 자세한 내용은 locale(7)
매뉴얼 페이지를 참조하십시오. 가능한 모든 옵션을 나타내는 LC_ALL 옵션은 /etc/locale.conf
에서 구성해서는 안 됩니다.
옵션 | 설명 |
---|---|
ANG | 시스템 로케일의 기본값을 제공합니다. |
LC_COLLATE | 로컬 알파벳의 문자열을 비교하는 함수의 동작을 변경합니다.Changes the behavior of functions that compare strings in the local alphabet. |
LC_CTYPE | 문자 처리 및 분류 함수 및 멀티바이트 문자 함수의 동작을 변경합니다.Changes the behavior of the character handling and classification functions and the multibyte character functions. |
LC_NUMERIC | 소수점과 10진수 쉼표와 같은 세부 정보를 사용하여 숫자를 일반적으로 출력하는 방법을 설명합니다.Describes the way numbers are usually printed, with details such as decimal point and decimal comma. |
LC_TIME | 현재 시간 표시를 24시간과 12시간로 변경합니다. |
LC_MESSAGES | 표준 오류 출력에 기록된 진단 메시지에 사용되는 로케일을 결정합니다. |
2.1.1. 현재 상태 표시
localectl
명령을 사용하여 시스템 로케일 및 키보드 레이아웃 설정을 쿼리하고 변경할 수 있습니다. 현재 설정을 표시하려면 status
옵션을 사용합니다.
localectl
status
예 2.1. 현재 상태 표시
이전 명령의 출력에는 현재 설정된 로케일과 콘솔에 구성된 키보드 레이아웃과 X11 창 시스템이 나열됩니다.
~]$ localectl status System Locale: LANG=en_US.UTF-8 VC Keymap: us X11 Layout: n/a
2.1.2. 사용 가능한 로컬 나열
시스템에 사용 가능한 모든 로케일을 나열하려면 다음을 입력합니다.
localectl
list-locales
예 2.2. 로컬 나열
특정 영어 로케일을 선택한다고 가정하지만 시스템에서 사용할 수 있는지 확실하지 않습니다. 다음 명령으로 모든 영어 로케일을 나열하여 확인할 수 있습니다.
~]$ localectl list-locales | grep en_
en_AG
en_AG.utf8
en_AU
en_AU.iso88591
en_AU.utf8
en_BW
en_BW.iso88591
en_BW.utf8
output truncated
2.1.3. 로컬 설정
기본 시스템 로케일을 설정하려면 다음 명령을 root
로 사용하십시오.
localectl
set-locale
LANG
=locale
locale 을 localectl
list-locales
명령을 사용하여 찾은 로케일 이름으로 바꿉니다. 위의 구문을 사용하여 표 2.1. “/etc/locale.conf에서 설정 가능한 옵션” 에서 매개 변수를 구성할 수도 있습니다.
예 2.3. 기본 지역 변경
예를 들어, English English를 기본 로케일로 설정하려는 경우 먼저 list-locales
를 사용하여 이 로케일의 이름을 찾습니다. 그런 다음 루트
로서 다음 형식으로 명령을 입력합니다.
~]# localectl set-locale LANG=en_GB.utf8
2.1.4. Kickstart로 설치할 때 시스템 로컬 설정 허용
Red Hat Enterprise Linux를 Red Hat Kickstart 설치 방법을 사용하여 설치하는 경우 운영 체제를 업그레이드한 후에는 시스템 로케일 설정이 유지되지 않을 수 있습니다.
Kickstart 파일의 %packages
섹션에 --instLang
옵션이 포함된 경우 _install_langs
RPM 매크로는 이 설치의 특정 값으로 설정되고 설치된 로케일 세트가 적절하게 조정됩니다. 그러나 이러한 조정은 후속 업그레이드가 아닌 이 설치에만 영향을 미칩니다. 업그레이드가 glibc 패키지를 다시 설치하는 경우 설치 중에 요청한 로케일 대신 전체 로케일 집합이 업그레이드됩니다.
이를 방지하려면 영구적으로 로캘을 선택합니다. 이러한 옵션이 있습니다.
- Kickstart 설치를 시작하지 않은 경우 다음 절차를 적용하여 전역적으로 RPM 매크로를 설정하는 지침을 포함하도록 Kickstart 파일을 수정하십시오. Kickstart 설치 중 RPM 매크로 설정
- 이미 시스템을 설치한 경우 다음 절차를 적용하여 시스템에서 RPM 매크로를 전역적으로 설정합니다. 전역적으로 RPM 매크로 설정
Kickstart 설치 중 RPM 매크로 설정
Kickstart 파일의
%post
섹션을 수정합니다.LANG=en_US echo "%_install_langs $LANG" > /etc/rpm/macros.language-conf yum-config-manager --setopt=override_install_langs=$LANG --save
Kickstart 파일의
%packages
섹션을 수정합니다.%packages yum-utils* %end
전역적으로 RPM 매크로 설정
다음 콘텐츠를 사용하여
/etc/rpm/macros. language-conf
에 RPM 구성 파일을 만듭니다.%_install_langs LANG
LANG 는
instLang
옵션의 값입니다./etc/yum.conf
파일을 다음으로 업데이트합니다.override_install_langs=LANG
2.2. keyboard Layout 변경
키보드 레이아웃 설정을 사용하면 텍스트 콘솔 및 그래픽 사용자 인터페이스에서 사용되는 레이아웃을 제어할 수 있습니다.
2.2.1. 현재 설정 표시
이전에 언급했듯이 다음 명령을 사용하여 현재 키보드 레이아웃 구성을 확인할 수 있습니다.
localectl
status
예 2.4. keyboard 설정 표시
다음 출력에서는 가상 콘솔과 X11 창 시스템에 대해 구성된 키보드 레이아웃을 확인할 수 있습니다.
~]$ localectl status System Locale: LANG=en_US.utf8 VC Keymap: us X11 Layout: us
2.2.2. 사용 가능한 키 맵 나열
시스템에서 구성할 수 있는 사용 가능한 모든 키보드 레이아웃을 나열하려면 다음을 입력합니다.
localectl
list-keymaps
예 2.5. Particular Keymap 검색
grep
을 사용하여 이전 명령의 출력을 특정 키맵 이름으로 검색할 수 있습니다. 현재 설정된 로케일과 호환되는 여러 keymap이 종종 있습니다. 예를 들어 사용 가능한 체코 키보드 레이아웃을 찾으려면 다음을 입력합니다.
~]$localectl
list-keymaps
|grep
cz
cz cz-cp1250 cz-lat2 cz-lat2-prog cz-qwerty cz-us-qwertz sunt5-cz-us sunt5-us-cz
2.2.3. Keymap 설정
시스템의 기본 키보드 레이아웃을 설정하려면 root
로 다음 명령을 사용하십시오.
localectl
set-keymap
map
map 을 localectl
list-keymaps
명령의 출력에서 가져온 keymap의 이름으로 바꿉니다. no -convert
옵션이 전달되지 않으면 선택한 설정이 X11 창 시스템의 기본 키보드 매핑에도 적용되며 X11 키보드 매핑은 가장 가까운 X11 키보드 매핑으로 변환됩니다. 이는 역방향에도 적용됩니다. root
로 다음 명령을 사용하여 두 keymaps를 지정할 수 있습니다.
localectl
set-x11-keymap
map
X11 레이아웃이 콘솔 레이아웃과 다르도록 하려면 --no-convert
옵션을 사용합니다.
localectl
--no-convert
set-x11-keymap
map
이 옵션을 사용하면 이전 콘솔 레이아웃 설정을 변경하지 않고 X11 keymap을 지정합니다.
예 2.6. X11 Keymap 분리
그래픽 인터페이스에서 독일어 키보드 레이아웃을 사용하고 있다고 가정하지만 미국 키맵을 유지하려면 콘솔 작업을 사용합니다. 이 작업을 수행하려면 root
로 입력합니다.
~]# localectl --no-convert set-x11-keymap de
그런 다음 현재 상태를 확인하여 설정이 성공했는지 확인할 수 있습니다.
~]$ localectl status System Locale: LANG=de_DE.UTF-8 VC Keymap: us X11 Layout: de
키보드 레이아웃 (맵) 외에도 세 가지 다른 옵션을 지정할 수 있습니다.
localectl
set-x11-keymap
map model variant options
모델을 키보드 모델 이름, 변형 및 옵션으로 키보드 변형 및 옵션 구성 요소로 교체합니다. 이 구성 요소는 키보드 동작을 향상시키는 데 사용할 수 있습니다. 이러한 옵션은 기본적으로 설정되어 있지 않습니다. X11 모델, X11 Variant 및 X11 옵션에 대한 자세한 내용은 kbd(4)
도움말 페이지를 참조하십시오.
2.3. 추가 리소스
Red Hat Enterprise Linux에서 키보드 레이아웃을 구성하는 방법에 대한 자세한 내용은 아래 나열된 리소스를 참조하십시오.
설치된 문서
-
localectl
(1) -localectl
명령줄 유틸리티 문서의 도움말 페이지는 이 툴을 사용하여 시스템 로케일 및 키보드 레이아웃을 구성하는 방법을 설명합니다. -
loadkeys
(1) -loadkeys
명령의 도움말 페이지는 이 도구를 사용하여 가상 콘솔의 키보드 레이아웃을 변경하는 방법에 대한 자세한 정보를 제공합니다.
예를 들면 다음과 같습니다.
-
6장. 권한 확보
su
및sudo
명령을 사용하여 관리 권한을 얻는 방법에 대해 설명합니다. -
10장. systemd를 사용하여 서비스 관리
systemctl
명령을 사용하여 시스템 서비스를 관리하는 방법에 대한systemd
및 문서에 대한 자세한 정보를 제공합니다.
3장. 날짜 및 시간 구성
최신 운영 체제는 다음 두 가지 유형의 시계를 구분합니다.
- 실시간 클럭 (RTC)은 일반적으로 하드웨어 클럭 (일반적으로 시스템 보드의 통합 회로)으로 알려져 있으며 컴퓨터가 종료될 때 실행되는 운영 체제의 현재 상태와 완전히 독립적입니다.
- 커널에 의해 유지 관리되고 초기 값은 실시간 시계를 기반으로하는 시스템 클럭 (소프트웨어 클럭)입니다. 시스템이 부팅되고 시스템 시계가 초기화되면 시스템 클럭은 실시간 시계와 완전히 독립적입니다.
시스템 시간은 항상UTC( 협정 세계시 )로 유지되며 필요에 따라 애플리케이션에서 현지 시간으로 변환됩니다. 현지 시간은 일광 절약 시간 (DST)을 고려하여 현재 표준 시간대의 실제 시간입니다. 실시간 시계는 UTC 또는 현지 시간을 사용할 수 있습니다. UTC가 권장됩니다.
Red Hat Enterprise Linux 7은 시스템 날짜 및 시간에 대한 정보를 구성하고 표시하는 데 사용할 수 있는 세 가지 명령줄 툴을 제공합니다.
-
timedatectl
유틸리티는 Red Hat Enterprise Linux 7의 새로운 기능이며systemd
의 일부입니다. -
기존
date
명령입니다. -
하드웨어 시계에 액세스하기 위한
hwclock
유틸리티입니다.
3.1. timedatectl
명령 사용
timedatectl 유틸리티는 systemd
시스템 및 서비스 관리자의 일부로 배포되며 시스템 클럭의 구성을 검토하고 변경할 수 있습니다. 이 도구를 사용하여 현재 날짜와 시간을 변경하거나 시간대를 설정하거나 원격 서버와 시스템 클럭의 자동 동기화를 활성화할 수 있습니다.
현재 날짜 및 시간을 사용자 지정 형식으로 표시하는 방법에 대한 자세한 내용은 3.2절. “날짜 명령 사용” 도 참조하십시오.
3.1.1. 현재 날짜 및 시간 표시
시스템 및 하드웨어 시계 구성에 대한 자세한 정보와 함께 현재 날짜와 시간을 표시하려면 추가 명령줄 옵션 없이 timedatectl
명령을 실행합니다.
timedatectl
그러면 로컬 및 범용 시간, 현재 사용되는 표준 시간대,NTP
(Network Time Protocol) 구성의 상태, DST와 관련된 추가 정보가 표시됩니다.
예 3.1. 현재 날짜 및 시간 표시
다음은 NTP
를 사용하여 시스템 클럭을 원격 서버와 동기화하는 시스템에서 timedatectl
명령의 출력 예입니다.
~]$ timedatectl Local time: Mon 2016-09-16 19:30:24 CEST Universal time: Mon 2016-09-16 17:30:24 UTC Timezone: Europe/Prague (CEST, +0200) NTP enabled: no NTP synchronized: no RTC in local TZ: no DST active: yes Last DST change: DST began at Sun 2016-03-31 01:59:59 CET Sun 2016-03-31 03:00:00 CEST Next DST change: DST ends (the clock jumps one hour backwards) at Sun 2016-10-27 02:59:59 CEST Sun 2016-10-27 02:00:00 CET
chrony
또는 ntpd
의 상태에 대한 변경 사항은 timedatectl
로 즉시 알 수 없습니다. 이러한 툴의 구성 또는 상태가 변경되면 다음 명령을 입력합니다.
~]# systemctl restart systemd-timedated.service
3.1.2. 현재 시간 변경
현재 시간을 변경하려면 쉘 프롬프트에 root
로 다음을 입력합니다.
timedatectl
set-time
HH:MM:SS
HH 를 1시간, MM 을 1분으로 바꾸고, SS 를 1초로 바꾸면 모두 두 자리형으로 입력됩니다.
이 명령은 시스템 시간과 하드웨어 클럭을 모두 업데이트합니다. 그 결과 date --set
및 hwclock --systohc
명령을 모두 사용하는 것과 유사합니다.
NTP
서비스가 활성화되면 명령이 실패합니다. 서비스를 일시적으로 비활성화하려면 3.1.5절. “원격 서버와 시스템 Clock 동기화” 을 참조하십시오.
예 3.2. 현재 시간 변경
현재 시간을 11:26 p.m.로 변경하려면 root
로 다음 명령을 실행하십시오.
~]# timedatectl set-time 23:26:00
기본적으로 시스템은 UTC를 사용하도록 구성됩니다. 로컬 시간에 클럭을 유지하도록 시스템을 구성하려면 set-local-rtc
옵션을 root
로 timedatectl
명령을 실행합니다.
timedatectl
set-local-rtc
boolean
로컬 시간에 클럭을 유지하도록 시스템을 구성하려면 부울 을 yes
(또는, y
,true
,t
또는 1
)로 바꿉니다. UTC를 사용하도록 시스템을 구성하려면 부울 을 no
(또는, alternatively, n
,false
,f
또는 0
)로 바꿉니다. 기본 옵션은 없습니다
.
3.1.3. 현재 날짜 변경
현재 날짜를 변경하려면 쉘 프롬프트에 root
로 다음을 입력합니다.
timedatectl
set-time
YYYY-MM-DD
octets을 4자리 연도로 바꾸고, MM 을 두 자리 월 한 달로, DD 를 월의 두 자리 날짜로 바꿉니다.
현재 시간을 지정하지 않고 날짜를 변경하면 시간을 00:00:00으로 설정합니다.
예 3.3. 현재 날짜 변경
현재 날짜를 2017년 6월 2일로 변경하고 현재 시간(11:26 p.m.)을 유지하려면 root
로 다음 명령을 실행합니다.
~]# timedatectl set-time "2017-06-02 23:26:00"
3.1.4. 시간대 변경
사용 가능한 모든 시간대를 나열하려면 쉘 프롬프트에서 다음을 입력합니다.
timedatectl
list-timezones
현재 사용된 시간대를 변경하려면 root
로 입력합니다.
timedatectl set-timezone time_zone
time_zone 을 timedatectl list-timezones
명령으로 나열된 값으로 교체합니다.
예 3.4. 시간대 변경
현재 위치와 가장 가까운 시간대를 식별하려면 list-timezones
명령줄 옵션과 함께 timedatectl
명령을 사용합니다. 예를 들어 유럽의 사용 가능한 모든 시간대를 나열하려면 다음을 입력합니다.
~]# timedatectl list-timezones | grep Europe
Europe/Amsterdam
Europe/Andorra
Europe/Athens
Europe/Belgrade
Europe/Berlin
Europe/Bratislava
…
시간대를 유럽/
파그로 변경하려면 root
로 입력합니다.
~]# timedatectl set-timezone Europe/Prague
3.1.5. 원격 서버와 시스템 Clock 동기화
이전 섹션에서 설명하는 수동 조정과 달리, timedatectl
명령을 사용하면 NTP
프로토콜을 사용하여 원격 서버 그룹과 시스템 클럭의 자동 동기화를 활성화할 수도 있습니다. NTP를 활성화하면 설치된 서비스에 따라 chronyd
또는 ntpd
서비스를 활성화합니다.
NTP
서비스는 다음과 같이 명령을 사용하여 활성화 및 비활성화할 수 있습니다.
timedatectl
set-ntp
boolean
시스템에서 시스템 클럭을 원격 NTP
서버와 동기화하도록 활성화하려면 부울 을 yes
(기본값)로 교체합니다. 이 기능을 비활성화하려면 부울 을 no
로 바꿉니다.
예 3.5. 원격 서버와 시스템 Clock 동기화
원격 서버를 사용하여 시스템 클럭의 자동 동기화를 활성화하려면 다음을 입력합니다.
~]# timedatectl set-ntp yes
NTP
서비스가 설치되지 않은 경우 명령이 실패합니다. 자세한 내용은 18.3.1절. “chrony 설치”를 참조하십시오.
3.2. 날짜 명령 사용
날짜
유틸리티는 모든 Linux 시스템에서 사용할 수 있으며 현재 날짜와 시간을 표시하고 구성할 수 있습니다. 스크립트가 사용자 지정 형식으로 시스템 시계에 대한 자세한 정보를 표시하는 데 자주 사용됩니다.
시간대를 변경하거나 원격 서버와 시스템 클럭의 자동 동기화를 활성화하는 방법에 대한 자세한 내용은 3.1절. “timedatectl
명령 사용” 을 참조하십시오.
3.2.1. 현재 날짜 및 시간 표시
현재 날짜 및 시간을 표시하려면 추가 명령줄 옵션 없이 date
명령을 실행합니다.
date
그러면 요일, 현재 날짜, 현지 시간, 축약된 시간대 및 연도가 표시됩니다.
기본적으로 date
명령은 로컬 시간을 표시합니다. 시간을 UTC로 표시하려면 --utc
또는 -u
명령줄 옵션을 사용하여 명령을 실행합니다.
date
--utc
명령줄에서 +" 형식 " 옵션을 제공하여 표시되는 정보의형식
을 사용자 지정할 수도 있습니다.
date +"format"
형식은 예 3.6. “현재 날짜 및 시간 표시” 에 설명된 대로 하나 이상의 지원되는 제어 시퀀스로 바꿉니다. 이러한 옵션의 전체 목록은 표 3.1. “일반적으로 사용되는 제어 순서” 에서 가장 자주 사용되는 포맷 옵션 목록 또는 날짜
(1) 매뉴얼 페이지를 참조하십시오.
제어 순서 | 설명 |
---|---|
|
HH 형식의 시간(예: |
|
MM 형식의 분(예: |
|
두 번째는 SS 형식의 두 번째 형식(예: |
|
DD 형식의 월의 일(예: |
|
MM 형식의 월(예: |
|
octets 형식(예: |
|
표준 시간대 약어(예: |
|
전체 날짜 (예: |
|
HH:MM:SS 형식의 전체 시간(예: 17:30:24)입니다. 이 옵션은 |
예 3.6. 현재 날짜 및 시간 표시
현재 날짜 및 로컬 시간을 표시하려면 쉘 프롬프트에서 다음을 입력합니다.
~]$ date
Mon Sep 16 17:30:24 CEST 2016
현재 날짜 및 시간을 UTC로 표시하려면 쉘 프롬프트에서 다음을 입력합니다.
~]$ date --utc
Mon Sep 16 15:30:34 UTC 2016
date
명령의 출력을 사용자 지정하려면 다음을 입력합니다.
~]$ date +"%Y-%m-%d %H:%M" 2016-09-16 17:30
3.2.2. 현재 시간 변경
현재 시간을 변경하려면 --set
또는 -s
옵션과 함께 date
명령을 root
로 실행합니다.
date
--set
HH:MM:SS
HH 를 1시간, MM 을 1분으로 바꾸고, SS 를 1초로 바꾸면 모두 두 자리형으로 입력됩니다.
기본적으로 date
명령은 시스템 클럭을 로컬 시간으로 설정합니다. UTC로 시스템 시계를 설정하려면 --utc
또는 -u
명령줄 옵션을 사용하여 명령을 실행합니다.
date
--set
HH:MM:SS--utc
예 3.7. 현재 시간 변경
현재 시간을 11:26 p.m.로 변경하려면 root
로 다음 명령을 실행하십시오.
~]# date --set 23:26:00
3.2.3. 현재 날짜 변경
현재 날짜를 변경하려면 --set
또는 -s
옵션과 함께 date
명령을 root
로 실행합니다.
date
--set
YYYY-MM-DD
octets을 4자리 연도로 바꾸고, MM 을 두 자리 월 한 달로, DD 를 월의 두 자리 날짜로 바꿉니다.
현재 시간을 지정하지 않고 날짜를 변경하면 시간을 00:00:00으로 설정합니다.
예 3.8. 현재 날짜 변경
현재 날짜를 2017년 6월 2일로 변경하고 현재 시간(11:26 p.m.)을 유지하려면 root
로 다음 명령을 실행합니다.
~]# date --set "2017-06-02 23:26:00"
3.3. hwclock
명령 사용
H
hwclock은 하드웨어 시계에 액세스하기 위한 유틸리티이며 RTC(Real Time Clock)라고도 합니다. 하드웨어 클럭은 사용하는 운영 체제와 독립적이며 머신이 종료된 경우에도 작동합니다. 이 유틸리티는 하드웨어 클럭에서 시간을 표시하는 데 사용됩니다. hwclock
에는 하드웨어 시계의 체계적인 변동을 보완하기 위한 시설도 포함되어 있습니다.
하드웨어 클럭은 연도, 월, 일, 시간, 분 및 초 값을 저장합니다. 시간 표준, 현지 시간 또는 UTC(협정 세계시)를 저장할 수 없으며 Daylight Saving Time(DST)을 설정할 수 없습니다.
hwclock
유틸리티는 /etc/adjtime
파일에 설정을 저장합니다. 예를 들어 시간을 수동으로 설정하거나 하드웨어 클럭을 시스템 시간과 동기화할 때 첫 번째 변경 사항을 사용하여 생성됩니다.
Red Hat Enterprise Linux 버전 6 및 7 간의 hwclock
동작 변경 사항은 Red Hat Enterprise Linux 7 마이그레이션 플래닝 가이드 를 참조하십시오.
3.3.1. 현재 날짜 및 시간 표시
root
사용자로 명령줄 옵션이 없는 hwclock
을 실행하면 로컬 시간으로의 날짜와 시간을 표준 출력으로 반환합니다.
hwclock
hwclock
명령에 --utc
또는 --localtime
옵션을 사용하면 하드웨어 클럭 시간을 UTC 또는 현지 시간으로 표시하는 것은 아닙니다. 이러한 옵션은 하드웨어 시계를 설정하여 시간 중 하나를 유지하는 데 사용됩니다. 시간은 항상 현지 시간에 표시됩니다. 또한 hwclock --utc
또는 hwclock --local
명령을 사용하면 /etc/adjtime
파일의 레코드가 변경되지 않습니다. 이 명령은 /etc/adjtime
에 저장된 설정이 올바르지만 설정을 변경하지 않으려는 경우 유용할 수 있습니다. 반면 명령을 잘못된 방법으로 사용하면 잘못된 정보가 표시될 수 있습니다. 자세한 내용은 hwclock
(8) 매뉴얼 페이지를 참조하십시오.
예 3.9. 현재 날짜 및 시간 표시
하드웨어 시계에서 현재 날짜와 현재 로컬 시간을 표시하려면 root
로 실행합니다.
~]# hwclock Tue 15 Apr 2017 04:23:46 PM CEST -0.329272 seconds
CEST는 표준 시간대 약어이며 Central Europe Summer Time을 의미합니다.
시간대를 변경하는 방법에 대한 자세한 내용은 3.1.4절. “시간대 변경” 을 참조하십시오.
3.3.2. 날짜 및 시간 설정
날짜 및 시간을 표시하는 것 외에도 하드웨어 시계를 특정 시간으로 수동으로 설정할 수 있습니다.
하드웨어 클럭 날짜와 시간을 변경해야 하는 경우 사양과 함께 --set
및 --date
옵션을 추가하여 이를 수행할 수 있습니다.
hwclock --set --date "dd mmm yyyy HH:MM"
dd 를 하루(두 자리 숫자)로, mmm 를 한 달(3자 약어), yyyy y를 1년(4자리 숫자)으로 바꿉니다. HH 는 1시간(두 자리 숫자)으로 MM 을 1분(두 자리 숫자)으로 바꿉니다.
동시에 --utc
또는 --localtime
옵션을 추가하여 시간을 UTC 또는 현지 시간으로 유지하도록 하드웨어 시계를 설정할 수도 있습니다. 이 경우 UTC
또는 LOCAL
이 /etc/adjtime
파일에 기록됩니다.
예 3.10. 하드웨어 시계를 특정 날짜 및 시간으로 설정
날짜 및 시간을 특정 값 (예: "21:17, 2016년 10월 21일)로 설정하고 하드웨어 시계를 UTC로 유지하려면 다음 형식으로 명령을 실행합니다.
~]# hwclock --set --date "21 Oct 2016 21:17" --utc
3.3.3. 날짜 및 시간 동기화
하드웨어 클럭과 현재 시스템 시간을 두 방향으로 동기화할 수 있습니다.
다음 명령을 사용하여 하드웨어 시계를 현재 시스템 시간으로 설정할 수 있습니다.
hwclock --systohc
NTP를 사용하는 경우 하드웨어 클럭은 11분마다 시스템 클럭에 자동으로 동기화되며 이 명령은 적절한 초기 시스템 시간을 가져오는 데 부팅 시에만 유용합니다.
또는 다음 명령을 사용하여 하드웨어 클럭에서 시스템 시간을 설정할 수 있습니다.
hwclock --hctosys
하드웨어 클럭과 시스템 시간을 동기화할 때 --utc
또는 --localtime
옵션을 추가하여 하드웨어 시계를 로컬 시간 또는 UTC에 유지할지 여부를 지정할 수도 있습니다. --set
,UTC
또는 LOCAL
을 사용하는 것과 유사하게 /etc/adjtime
파일에 기록됩니다.
hwclock --systohc --utc
명령은 timedatectl set-local-rtc false
와 기능적으로 유사하며, hwclock --systohc --local
명령은 timedatectl set-local-rtc true
의 대안입니다.
예 3.11. 시스템 시간과 하드웨어 시계 동기화
하드웨어 시계를 현재 시스템 시간으로 설정하고 하드웨어 시계를 로컬 시간에 유지하려면 다음 명령을 root
로 실행하십시오.
~]# hwclock --systohc --localtime
표준 시간대 및 DST 전환의 문제를 방지하려면 하드웨어 시계를 UTC로 유지하는 것이 좋습니다. 표시된 예 3.11. “시스템 시간과 하드웨어 시계 동기화” 은 예를 들어 기본적으로 하드웨어 클럭이 로컬 시간에 실행되는 것으로 가정하고 다른 모든 시스템은 로컬 시간을 사용하여 수용해야하는 Windows 시스템으로의 경우 유용합니다. 가상 시스템에도 필요할 수 있습니다. 호스트에서 제공하는 가상 하드웨어 시계가 로컬 시간에 실행되는 경우 게스트 시스템도 로컬 시간을 사용하도록 구성해야 합니다.
3.4. 추가 리소스
Red Hat Enterprise Linux 7에서 날짜 및 시간을 구성하는 방법에 대한 자세한 내용은 아래 나열된 리소스를 참조하십시오.
설치된 문서
-
timedatectl
(1) - 이 도구를 사용하여 시스템 클럭 및 해당 설정을 쿼리하고 변경하는 방법에 대한timedatectl
명령줄 유틸리티 문서입니다. -
date
(1) -date
명령의 도움말 페이지는 지원되는 명령줄 옵션의 전체 목록을 제공합니다. -
hwclock
(8) -hwclock
명령의 도움말 페이지는 지원되는 명령줄 옵션의 전체 목록을 제공합니다.
예를 들면 다음과 같습니다.
- 2장. System Locale 및 keyboard Configuration 키보드 레이아웃을 구성하는 방법
-
6장. 권한 확보
su
및sudo
명령을 사용하여 관리 권한을 얻는 방법에 대해 설명합니다. -
10장. systemd를 사용하여 서비스 관리
systemctl
명령을 사용하여 시스템 서비스를 관리하는 방법에 대한 systemd 및 문서에 대한 자세한 정보를 제공합니다.
4장. 사용자 및 그룹 관리
사용자 및 그룹 제어는 Red Hat Enterprise Linux 시스템 관리의 핵심 요소입니다. 이 장에서는 그래픽 사용자 인터페이스 및 명령줄의 사용자와 그룹을 추가, 관리 및 삭제하는 방법을 설명하고, 그룹 디렉터리 만들기와 같은 고급 주제를 다룹니다.
4.1. 사용자 및 그룹 소개
사용자는 (물리적 사용자와 연결된 계정) 또는 특정 애플리케이션을 위해 존재하는 계정일 수 있지만, 그룹은 공통 목적을 위해 사용자를 다루는 논리적 표현입니다. 그룹 내의 사용자는 해당 그룹이 소유한 파일을 읽기, 쓰기 또는 실행할 수 있는 동일한 권한을 공유합니다.
각 사용자는 사용자 ID(UID)라는 고유한 숫자 ID 번호와 연결됩니다. 마찬가지로 각 그룹은 그룹 ID (GID)와 연결됩니다. 파일을 생성하는 사용자도 해당 파일의 소유자와 그룹 소유자입니다. 파일에는 소유자, 그룹 및 기타 모든 사용자에 대한 별도의 읽기, 쓰기, 실행 권한이 할당됩니다. 파일 소유자는 루트 에서만 변경할 수 있으며
사용자와 파일 소유자 모두 액세스 권한을 변경할 수 있습니다.
root
또한 Red Hat Enterprise Linux는 소유자 이외의 특정 사용자에 대한 권한을 허용하는 파일 및 디렉토리에 대해ACL( 액세스 제어 목록 )을 지원합니다. 이 기능에 대한 자세한 내용은 5장. 액세스 제어 목록 을 참조하십시오.
예약된 사용자 및 그룹 ID
Red Hat Enterprise Linux는 시스템 사용자 및 그룹에 대해 1000 미만의 사용자 및 그룹 ID를 예약합니다. 기본적으로 사용자 관리자 는 시스템 사용자를 표시하지 않습니다. 예약된 사용자 및 그룹 ID는 설정 패키지에 설명되어 있습니다. 문서를 보려면 다음 명령을 사용하십시오.
cat /usr/share/doc/setup*/uidgid
예약된 범위가 나중에 증가할 수 있으므로 아직 예약되지 않은 5,000에서 시작하는 ID를 할당하는 것이 좋습니다. 기본적으로 새 사용자에게 ID를 할당하도록 하려면 /etc/login.defs
파일에서 UID_MIN
및 GID_MIN
지시문을 변경합니다.
[file contents truncated] UID_MIN 5000 [file contents truncated] GID_MIN 5000 [file contents truncated]
UID_MIN
및 GID_MIN
지시문을 변경하기 전에 생성된 사용자의 경우 UID는 여전히 기본값 1000에서 시작합니다.
5,000으로 시작하는 새 사용자 및 그룹 ID를 사용하더라도 1000개 이상의 시스템에 의해 예약된 ID를 확보하지 않는 것이 1000개의 제한을 유지하는 시스템과 충돌하지 않도록 하는 것이 좋습니다.
4.1.1. 사용자 개인 그룹
Red Hat Enterprise Linux는UPG( 사용자 개인 그룹 ) 체계를 사용하므로 UNIX 그룹을 보다 쉽게 관리할 수 있습니다. 새 사용자가 시스템에 추가될 때마다 사용자 개인 그룹이 생성됩니다. 이 명령은 생성된 사용자와 동일한 이름을 가지며, 해당 사용자는 사용자 개인 그룹의 유일한 멤버입니다.
사용자 개인 그룹을 사용하면 새로 생성된 파일 또는 디렉토리에 대한 기본 권한을 설정하여 해당 사용자의 사용자 및 그룹을 모두 파일 또는 디렉토리를 수정할 수 있습니다.
새로 생성된 파일 또는 디렉터리에 적용되는 권한을 permissions라고 결정하는 설정은 /etc/bashrc
파일에 구성됩니다. 일반적으로 UNIX 기반 시스템에서는 파일 또는 디렉토리를 생성한 사용자만 수정할 수 있는 permissions가 022
로 설정됩니다. 이 체계 하에서, 크리에이터 그룹의 멤버를 포함한 다른 모든 사용자는 수정할 수 없습니다. 그러나 UPG 스키마에서는 모든 사용자에게 고유한 개인 그룹이 있으므로 이 "그룹 보호"가 필요하지 않습니다. 자세한 내용은 4.3.5절. “프롬프트를 사용하여 새 파일에 대한 기본 권한 설정
”를 참조하십시오.
모든 그룹 목록은 /etc/group
구성 파일에 저장됩니다.
4.1.2. 섀도우 암호
여러 사용자가 있는 환경에서는 shadow-utils 패키지에서 시스템 인증 파일의 보안을 강화할 수 있는 섀도우 암호를 사용하는 것이 매우 중요합니다. 이러한 이유로 설치 프로그램은 기본적으로 shadow 암호를 활성화합니다.
다음은 섀도우 암호가 UNIX 기반 시스템에 암호를 저장하는 기존 방법에 비해 다음과 같은 이점 목록입니다.
-
shadow 암호는 암호화된 암호 해시를 world-readable
/etc/passwd
파일에서/etc/shadow
로 이동하여 시스템 보안을 향상시킵니다.root
사용자만 읽을 수 있습니다. - shadow 암호는 암호 변경에 대한 정보를 저장합니다.
-
shadow 암호를 사용하면
/etc/login.defs
파일에 설정된 일부 보안 정책을 적용할 수 있습니다.
shadow-utils 패키지에서 제공하는 대부분의 유틸리티는 섀도우 암호 활성화 여부에 관계없이 제대로 작동합니다. 그러나 암호 변경 정보는 /etc/shadow
파일에만 저장되므로 먼저 섀도우 암호를 활성화하지 않고 일부 유틸리티 및 명령이 작동하지 않습니다.
-
chage
유틸리티는 암호 사용 기간 매개 변수를 설정합니다. 자세한 내용은 Red Hat Enterprise Linux 7 보안 가이드의 암호 보안 섹션을 참조하십시오. -
/etc/group
파일을 관리하는gpasswd
유틸리티입니다. -
-e, --expiredate
또는-f, --inactive
옵션을 사용하는usermod
명령. -
-e, --expiredate
또는-f, --inactive
옵션을 사용하는useradd
명령.
4.2. 그래픽 환경에서 사용자 관리
Users 유틸리티를 사용하면 그래픽 사용자 인터페이스에서 로컬 사용자를 확인, 수정, 추가 및 삭제할 수 있습니다.
4.2.1. 사용자 설정 도구 사용
Super 키를 눌러 활동 개요를 입력하고 사용자를
입력한 다음 Enter 를 누릅니다. 사용자 설정 도구가 나타납니다. Super 키는 키보드와 기타 하드웨어에 따라 다양한 길잡이에 표시되지만 일반적으로 공간 표시줄의 왼쪽에 Windows 또는 Command 키로 나타납니다. 또는 화면 오른쪽 상단에 있는 사용자 이름을 클릭한 후 Settings 메뉴에서 Users 유틸리티를 열 수 있습니다.
사용자 계정을 변경하려면 먼저 root
로 인증하라는 메시지를 표시합니다. 사용자를 추가하고 제거하려면 각각 및 버튼을 선택합니다. 관리 그룹 wheel
에 사용자를 추가하려면 계정 유형을 Standard
에서 Administrator
로 변경합니다. 사용자 언어 설정을 편집하려면 언어 및 드롭다운 메뉴가 표시됩니다.
그림 4.1. 사용자 설정 도구
새 사용자가 생성되면 암호가 설정될 때까지 계정이 비활성화됩니다. 그림 4.2. “비밀번호 메뉴” 에 표시된 암호 드롭다운 메뉴에는 관리자가 즉시 암호를 설정하거나, 처음 로그인할 때 사용자가 암호를 선택하거나, 로그인에 필요한 암호 없이 게스트 계정을 생성합니다. 이 메뉴에서 계정을 비활성화하거나 활성화할 수도 있습니다.
그림 4.2. 비밀번호 메뉴
4.3. 명령줄 툴 사용
4.2절. “그래픽 환경에서 사용자 관리” 에 설명된 사용자 설정 도구 외에도 표 4.1. “사용자 및 그룹을 관리하기 위한 명령줄 유틸리티” 에 설명된 사용자 및 그룹 관리를 위해 명령줄 툴을 사용할 수 있습니다.
유틸리티 | 설명 |
---|---|
| 사용자 및 그룹 ID를 표시합니다. |
| 사용자 계정을 추가, 수정 및 삭제하는 표준 유틸리티입니다. |
| 그룹을 추가, 수정 및 삭제하는 표준 유틸리티입니다. |
|
유틸리티는 주로 |
| 암호, 그룹 및 관련 shadow 파일을 확인하는 데 사용할 수 있는 유틸리티입니다. |
| 암호를 섀도우 암호로 변환하거나 섀도 암호에서 표준 암호로 전환하는 데 사용할 수 있는 유틸리티입니다. |
| 이전과 유사하게 이러한 유틸리티를 사용하여 그룹 계정에 대한 shadowed 정보를 변환할 수 있습니다. |
4.3.1. 새 사용자 추가
새 사용자를 시스템에 추가하려면 쉘 프롬프트에서 root
로 다음을 입력합니다.
useradd
options username
여기서 옵션 은 표 4.2. “일반 useradd 명령줄 옵션” 에 설명된 대로 명령줄 옵션입니다.
기본적으로 useradd
명령은 잠긴 사용자 계정을 생성합니다. 계정 잠금을 해제하려면 root
로 다음 명령을 실행하여 암호를 할당합니다.
passwd
username
필요한 경우 암호 사용 기간 정책을 설정할 수 있습니다. Red Hat Enterprise Linux 7 보안 가이드의 암호 보안 섹션을 참조하십시오.
옵션 | |
---|---|
| 주석은 임의의 문자열로 교체할 수 있습니다. 이 옵션은 일반적으로 사용자의 전체 이름을 지정하는 데 사용됩니다. |
|
기본 |
| octets-MM-DD 형식으로 계정을 비활성화하는 날짜입니다. |
|
암호가 만료된 후 계정이 비활성화될 때까지 일 수입니다. |
| 사용자 default( primary) 그룹의 그룹 이름 또는 그룹 번호입니다. 그룹은 여기에 지정되기 전에 존재해야 합니다. |
| 사용자가 멤버인 쉼표로 구분된 추가(기본값 이외의) 그룹 이름 또는 그룹 번호 목록입니다. 그룹은 여기에 지정되기 전에 존재해야 합니다. |
| 홈 디렉터리가 없는 경우 해당 디렉터리를 생성합니다. |
| 홈 디렉터리를 생성하지 마십시오. |
| 사용자에 대한 사용자 개인 그룹을 생성하지 마십시오. |
|
|
| 홈 디렉터리없이 1000 미만의 UID가 있는 시스템 계정을 생성합니다. |
|
기본값은 |
| 사용자의 사용자 ID는 unique이고 unique여야 합니다. |
시스템 및 일반 사용자의 기본 ID 범위는 Red Hat Enterprise Linux 7에서 이전 릴리스에서 변경되었습니다. 이전에는 일반 사용자에 대해 위의 시스템 사용자 및 값에 UID 1-499가 사용되었습니다. 시스템 사용자의 기본 범위는 이제 1-999입니다. 이러한 변경으로 인해 기존 사용자가 500~900 사이의 UID와 GID가 있는 Red Hat Enterprise Linux 7로 마이그레이션할 때 문제가 발생할 수 있습니다. UID 및 GID의 기본 범위는 /etc/login.defs
파일에서 변경할 수 있습니다.
프로세스 설명
다음 단계는 useradd juan
명령이 섀도가 활성화된 시스템에서 실행된 경우 어떤 일이 발생하는지를 보여줍니다.
/etc/passwd에
대한
새 행이/etc/passwd
에 생성됩니다.juan:x:1001:1001::/home/juan:/bin/bash
라인에는 다음과 같은 특징이 있습니다.
-
사용자 이름으로
시작합니다
. -
시스템에서 섀도우 암호를 사용하고 있음을 나타내는
x
(암호) 필드에는 x가 있습니다. - 6443보다 큰 UID가 생성됩니다. Red Hat Enterprise Linux 7에서 1000 미만의 UID는 시스템 사용을 위해 예약되어 있으며 사용자에게 할당해서는 안 됩니다.
- 6443보다 큰 GID가 생성됩니다. Red Hat Enterprise Linux 7에서 1000 미만의 GID는 시스템 사용을 위해 예약되어 있으며 사용자에게 할당해서는 안 됩니다.
- 선택적 GECOS 정보는 비어 있습니다. GECOS 필드는 사용자의 전체 이름 또는 전화 번호와 같은 추가 정보를 제공하는 데 사용할 수 있습니다.
-
juan
의 홈 디렉토리는/home/juan/
로 설정됩니다. -
기본 쉘은
/bin/bash
로 설정됩니다.
-
사용자 이름으로
/etc/shadow에
대한
새 행이/etc/shadow
에 생성됩니다.juan:!!:14798:0:99999:7:::
라인에는 다음과 같은 특징이 있습니다.
-
사용자 이름으로
시작합니다
. 두 개의 느낌표(
!!
)가 계정을 잠그는/etc/shadow
파일의 password 필드에 나타납니다.참고암호화된 암호가
-p
플래그를 사용하여 전달되면 사용자의 새 줄의/etc/shadow
파일에 배치됩니다.- 암호는 만료되지 않음으로 설정됩니다.
-
사용자 이름으로
jan이라는 그룹의 새 행이
/etc/group
에 생성됩니다.juan:x:1001:
사용자와 동일한 이름을 가진 그룹을 사용자 개인 그룹 이라고 합니다. 사용자 개인 그룹에 대한 자세한 내용은 4.1.1절. “사용자 개인 그룹” 을 참조하십시오.
/etc/group
에서 생성된 행은 다음과 같은 특징이 있습니다.-
그룹 이름으로
시작합니다
. -
시스템이 섀도우 그룹 암호를 사용하고 있음을 나타내는
x
가 password 필드에 나타납니다. -
GID는
/etc/passwd
에 있는juan
의 기본 그룹에 대해 나열된 항목과 일치합니다.
-
그룹 이름으로
jan이라는 그룹의 새 행이
/etc/gshadow
에 생성됩니다.juan:!::
라인에는 다음과 같은 특징이 있습니다.
-
그룹 이름으로
시작합니다
. -
느낌표(!
/etc/gshadow
파일의 password 필드에 나타납니다. - 다른 모든 필드는 비어 있습니다.
-
그룹 이름으로
/home
디렉토리에 사용자juan
의 디렉터리가 생성됩니다.~]# ls -ld /home/juan drwx------. 4 juan juan 4096 Mar 3 18:23 /home/juan
이 디렉토리는 사용자
juan
및 groupjuan
이 소유합니다. 이 명령은 사용자(Jenan)에 대해서만 읽기,쓰기, 실행 권한을보유합니다
. 기타 모든 권한은 거부됩니다./etc/skel/
디렉터리 내의 파일(기본 사용자 설정이 포함된)은 새/home/juan/
디렉토리에 복사됩니다.~]# ls -la /home/juan total 28 drwx------. 4 juan juan 4096 Mar 3 18:23 . drwxr-xr-x. 5 root root 4096 Mar 3 18:23 .. -rw-r--r--. 1 juan juan 18 Jun 22 2010 .bash_logout -rw-r--r--. 1 juan juan 176 Jun 22 2010 .bash_profile -rw-r--r--. 1 juan juan 124 Jun 22 2010 .bashrc drwxr-xr-x. 4 juan juan 4096 Nov 23 15:09 .mozilla
이 시점에서 'Udan'이라는 잠긴
계정이 시스템에 있습니다. 이를 활성화하려면 다음으로는 passwd
명령을 사용하여 계정에 암호를 할당하고 선택적으로 암호 사용 지침을 설정합니다(자세한 내용은 Red Hat Enterprise Linux 7 보안 가이드의 암호 보안 섹션 참조).
4.3.2. 새 그룹 추가
새 그룹을 시스템에 추가하려면 쉘 프롬프트에서 root
로 다음을 입력합니다.
groupadd options group_name
여기서 옵션 은 표 4.3. “공통 groupadd 명령줄 옵션” 에 설명된 대로 명령줄 옵션입니다.
옵션 | 설명 |
---|---|
|
|
| 그룹의 그룹 ID는 unique이고 unique여야 합니다. |
|
|
| 중복된 GID를 사용하여 그룹을 생성할 수 있습니다. |
| 이 암호화된 암호를 새 그룹에 사용합니다. |
| GID가 1000 미만인 시스템 그룹을 만듭니다. |
4.3.3. 기존 그룹에 기존 사용자 추가
usermod
유틸리티를 사용하여 기존 사용자를 기존 그룹에 추가합니다.
usermod
의 다양한 옵션은 사용자의 기본 그룹과 해당 보조 그룹에 다른 영향을 미칩니다.
사용자의 기본 그룹을 재정의하려면 root
로 다음 명령을 실행합니다.
~]# usermod -g group_name user_name
사용자의 보조 그룹을 재정의하려면 root
로 다음 명령을 실행합니다.
~]# usermod -G group_name1,group_name2,... user_name
이 경우 사용자의 이전의 모든 보조 그룹이 새 그룹 또는 여러 개의 새 그룹으로 교체됩니다.
사용자 보조 그룹에 하나 이상의 그룹을 추가하려면 root
로 다음 명령 중 하나를 실행합니다.
~]# usermod -aG group_name1,group_name2,... user_name
~]# usermod --append -G group_name1,group_name2,... user_name
이 경우 새 그룹이 사용자의 현재 보조 그룹에 추가됩니다.
4.3.4. 그룹 디렉터리 생성
시스템 관리자는 일반적으로 각 주요 프로젝트에 대한 그룹을 만들고 해당 프로젝트의 파일에 액세스해야 할 때 그룹에 사용자를 할당하는 것을 선호합니다. 이 기존 스키마를 사용하면 파일 관리가 어렵습니다. 사용자가 파일을 만들 때 해당 파일이 속한 기본 그룹과 연결됩니다. 한 사람이 여러 프로젝트에서 작업하면 올바른 파일을 올바른 그룹과 연결하는 것이 어려워집니다. 그러나 UPG 스키마를 사용하면 groups가 setgid 비트가 설정된 디렉터리 내에 생성된 파일에 자동으로 할당됩니다. setgid 비트는 디렉터리 내에 있는 사용자가 디렉터리를 소유한 그룹이 소유하므로 공통 디렉터리를 공유하는 그룹 프로젝트를 매우 간단하게 관리할 수 있습니다.
예를 들어, 사용자 그룹은 /opt/myproject/
디렉토리의 파일에서 작업해야 합니다. 일부 사용자는 이 디렉터리의 내용을 수정할 수 있지만 모든 사람이 수정할 수는 없습니다.
루트
로서 쉘 프롬프트에서 다음을 입력하여/opt/myproject/
디렉터리를 만듭니다.mkdir /opt/myproject
myproject
그룹을 시스템에 추가합니다.groupadd myproject
/opt/myproject/
디렉터리의 콘텐츠를myproject
그룹과 연결합니다.chown root:myproject /opt/myproject
그룹의 사용자가 디렉터리 내에 파일을 생성하고 setgid 비트를 설정할 수 있도록 허용합니다.
chmod 2775 /opt/myproject
이 시점에서
myproject
그룹의 모든 멤버는 사용자가 새 파일을 쓸 때마다 파일 권한을 변경하지 않고도/opt/myproject/
디렉토리에서 파일을 만들고 편집할 수 있습니다. 권한이 올바르게 설정되었는지 확인하려면 다음 명령을 실행합니다.~]# ls -ld /opt/myproject drwxrwsr-x. 3 root myproject 4096 Mar 3 18:31 /opt/myproject
myproject
그룹에 사용자를 추가합니다.usermod -aG myproject username
4.3.5. 프롬프트를 사용하여 새 파일에 대한 기본 권한 설정
프로세스에서 파일을 생성할 때 파일에는 특정 기본 권한(예: -rw-rw-r--
)이 있습니다. 이러한 초기 권한은 파일 권한 마스크 또는 umask 라고도 하는 파일 모드 생성 마스크 로 부분적으로 정의됩니다. 예를 들어, bash 에는 기본적으로 모든 프로세스에 자체 imagestreamtag 가
있습니다. 프로세스 imagestreamtag 는 변경될 수 있습니다.
다음로 구성된 imagestreamtag
jaeger 는 표준 파일 권한에 해당하는 비트로 구성됩니다. 예를 들어 dependencies 0 137
의 경우 숫자는 다음과 같습니다.
-
0
= no meaning, it is always0
(umask does not affect special bits) -
1
= 소유자 권한의 경우 실행 비트가 설정됩니다. -
3
= 그룹 권한의 경우 실행 및 쓰기 비트가 설정됩니다. -
7
= 기타 권한의 경우 실행, 쓰기 및 읽기 비트가 설정됩니다.
U마스크는 바이너리, 8진수 또는 심볼릭 표기법으로 표현할 수 있습니다. 예를 들어 8진수 표현 0137
은 심볼릭 표현 u=rw-,g=r-,o=-- 입니다
. 기호 표기법 사양은 8진수 표기법 사양과 반대됩니다. 금지된 권한이 아니라 허용되는 권한이 표시됩니다.
imagestreamtag 작동 방식
jaeger 는 파일에 대한 권한을 설정하지 못하도록 합니다.
- syslog에 비트가 설정되어 있으면 파일에 설정되지 않습니다.
- messages에 비트가 설정되지 않은 경우 다른 요인에 따라 파일에서 설정할 수 있습니다.
다음 그림은 alerts 0137
이 새 파일 생성에 미치는 영향을 보여줍니다.
그림 4.3. 파일을 생성할 때 alerts 적용
보안상의 이유로 일반 파일은 기본적으로 실행 권한을 가질 수 없습니다. 따라서 credentials 가 권한을 금지하지 않는 0000
이지만 새 일반 파일에는 여전히 실행 권한이 없습니다. 그러나 실행 권한을 사용하여 디렉터리를 생성할 수 있습니다.
[john@server tmp]$ umask 0000 [john@server tmp]$ touch file [john@server tmp]$ mkdir directory [john@server tmp]$ ls -lh . total 0 drwxrwxrwx. 2 john john 40 Nov 2 13:17 directory -rw-rw-rw-. 1 john john 0 Nov 2 13:17 file
4.3.5.1. 쉘에서 imagestreamtag 관리
bash
,ksh
,zsh
및 tcsh
와 같은 인기 있는 쉘의 경우 umask
쉘 내장
. 쉘에서 시작된 프로세스는 dependencies를 상속합니다.
현재 마스크를 표시
현재 umask 를 8진수 표기법으로 표시하려면 다음을 수행합니다.
~]$ umask
0022
현재 mTLS를 심볼릭 표기법으로 표시하려면 다음을 수행합니다.
~]$ umask -S
u=rwx,g=rx,o=rx
syslog를 사용하여 쉘에 마스크 설정
8진수 표기법을 사용하여 현재 쉘 세션에 대해 mTLS를 설정하려면 다음을 실행합니다.
~]$ umask octal_mask
8 진수_마스크 를 0
에서 7
까지 4자리 이하로 대체합니다. 세 자리 이하가 제공되면 명령에 선행 0이 포함된 것처럼 권한이 설정됩니다. 예를 들어, dependencies 7
은 0007
로 변환됩니다.
예 4.1. 10월al Notation을 사용하여 imagestreamtag 설정
새 파일에 소유자 및 그룹에 대한 쓰기 및 실행 권한이 없도록 하고 다른 사용자에 대한 권한이 없도록 하려면 다음을 수행합니다.
~]$ umask 0337
또는 간단히:
~]$ umask 337
심볼릭 표기법을 사용하여 현재 쉘 세션에 대해 mTLS를 설정하려면 다음을 수행합니다.
~]$ umask -S symbolic_mask
예 4.2. Symbolic Notation을 사용하여 receiver 설정
심볼릭 표기법을 사용하여 receiver 0337
을 설정하려면 다음을 수행합니다.
~]$ umask -S u=r,g=r,o=
기본 쉘 dependencies로 작업
쉘에는 일반적으로 기본 mTLS가 설정된 설정 파일이 있습니다. bash
의 경우 /etc/bashrc
입니다. 기본 bash
umask를 표시하려면 다음을 수행합니다.
~]$ grep -i -B 1 umask /etc/bashrc
출력 결과에서 dependencies 명령 또는 UMASK
변수를
사용하는 경우 output이 표시됩니다. 다음 예에서 umask
는 permissions 명령을 사용하여 022
로 설정됩니다.
~]$ grep -i -B 1 umask /etc/bashrc # By default, we want umask to get set. This sets it for non-login shell. -- if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then umask 002 else umask 022
bash
에 대한 기본 umask
를 변경하려면 /etc/bashrc
.org에서 permissions 명령 호출 또는 UMASK
변수 할당을 변경합니다. 이 예에서는 기본 umask 를 0227
로 변경합니다.
if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
umask 002
else
umask 227
특정 사용자의 기본 쉘 messages로 작업
기본적으로 새 사용자의 bash
umask 는 /etc/bashrc
에 정의된 기본값으로 설정됩니다.
특정 사용자에 대해 bash
umask
를 변경하려면 해당 사용자의 $HOME/.bashrc
파일에 있는 dependencies 명령에 대한 호출을 추가합니다. 예를 들어 사용자 john
의 bash
umask 를 0227
로 변경하려면 다음을 수행합니다.
john@server ~]$ echo 'umask 227' >> /home/john/.bashrc
새로 생성된 홈 디렉터리에 대한 기본 권한 설정
생성된 사용자 홈 디렉터리의 권한을 변경하려면 /etc/login.defs
파일에서 UMASK
변수를 변경합니다.
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
4.4. 추가 리소스
Red Hat Enterprise Linux에서 사용자 및 그룹을 관리하는 방법에 대한 자세한 내용은 아래 나열된 리소스를 참조하십시오.
설치된 문서
사용자 및 그룹 관리를 위한 다양한 유틸리티에 대한 자세한 내용은 다음 매뉴얼 페이지를 참조하십시오.
-
useradd
(8) -useradd
명령 문서의 수동 페이지에서 새 사용자를 만드는 방법을 설명합니다. -
userdel
(8) -userdel
명령의 수동 페이지는 사용자를 삭제하는 데 사용하는 방법에 대해 설명합니다. -
usermod
(8) -usermod
명령의 도움말 페이지에서 사용자를 수정하는 방법을 설명합니다. -
groupadd
(8) -groupadd
명령 문서의 도움말 페이지에서 새 그룹을 생성하는 방법을 설명합니다. -
groupdel
(8) -groupdel
명령의 도움말 페이지에서 그룹을 삭제하는 방법을 설명합니다. -
groupmod
(8) -groupmod
명령의 도움말 페이지에서 그룹 멤버십을 수정하는 방법을 설명합니다. -
gpasswd
(1) -gpasswd
명령 문서의 수동 페이지/etc/group
파일 관리 방법입니다. -
grpck
(8) -grpck
명령의 수동 페이지 사용 방법을 사용하여/etc/group
파일의 무결성을 확인합니다. -
pwck
(8) -pwck
명령의 수동 페이지는 이를 사용하여/etc/passwd
및/etc/shadow
파일의 무결성을 확인하는 방법을 설명합니다. -
pwconv
pwunconv
,grpconv
,grpunconv
명령의 수동 페이지, 암호 및 그룹의 섀도우 정보를 변환하는 방법을 설명합니다. -
ID (1) -
id
-
imagestreamtag
(2) - 파일 모드 생성 마스크를 사용하는 방법에 대한 permissions 명령의 수동 페이지입니다.
관련 구성 파일에 대한 자세한 내용은 다음을 참조하십시오.
-
그룹
(5) -/etc/group
파일 문서의 도움말 페이지는 이 파일을 사용하여 시스템 그룹을 정의하는 방법을 설명합니다. -
passwd
(5) - 이 파일을 사용하여 사용자 정보를 정의하는 방법을/etc/passwd
파일의 도움말 페이지. -
shadow
(5) - 이 파일을 사용하여 시스템에 대한 암호 및 계정 만료 정보를 설정하는 방법을 설명합니다.
온라인 문서
- Red Hat Enterprise Linux 7 보안 가이드 - Red Hat Enterprise Linux 7의 보안 가이드에서 는 암호 사용 기간 및 사용자 계정 잠금을 활성화하여 암호 보안과 워크스테이션을 보호하는 방법에 대한 추가 정보를 제공합니다.
예를 들면 다음과 같습니다.
-
6장. 권한 확보
su
및sudo
명령을 사용하여 관리 권한을 얻는 방법에 대해 설명합니다.
5장. 액세스 제어 목록
파일 및 디렉터리에는 파일 소유자, 파일과 연결된 그룹, 시스템의 기타 모든 사용자에 대한 권한 세트가 있습니다. 그러나 이러한 권한 세트에는 제한 사항이 있습니다. 예를 들어 다른 사용자에 대해 다른 권한을 구성할 수 없습니다. 따라서 ACL( 액세스 제어 목록 )이 구현되었습니다.
Red Hat Enterprise Linux 커널은 ext3 파일 시스템과 NFS 내보내기 파일 시스템에 대한 ACL 지원을 제공합니다. ACL은 Samba를 통해 액세스하는 ext3 파일 시스템에서도 인식됩니다.
커널의 지원과 함께 ACL을 구현하려면 acl
패키지가 필요합니다. 여기에는 ACL 정보를 추가, 수정, 제거 및 검색하는 데 사용되는 유틸리티가 포함되어 있습니다.
cp
및 mv
명령은 파일 및 디렉터리와 관련된 모든 ACL을 복사하거나 이동합니다.
5.1. 파일 시스템 마운트
파일 또는 디렉토리에 ACL을 사용하기 전에 파일 또는 디렉터리의 파티션을 ACL 지원으로 마운트해야 합니다. 로컬 ext3 파일 시스템인 경우 다음 명령을 사용하여 마운트할 수 있습니다.
mount -t ext3 -o acl device-name 파티션
예를 들면 다음과 같습니다.
mount -t ext3 -o acl /dev/VolGroup00/LogVol02 /work
또는 /etc/fstab
파일에 파티션이 나열된 경우 파티션에 대한 항목에 acl
옵션이 포함될 수 있습니다.
LABEL=/work /work ext3 acl 1 2
Samba를 통해 ext3 파일 시스템에 액세스하고 ACL이 활성화되어 있는 경우 Samba가 --with-acl-support
옵션으로 컴파일되었기 때문에 ACL이 인식됩니다. Samba 공유에 액세스하거나 마운트할 때는 특별한 플래그가 필요하지 않습니다.
5.1.1. NFS
기본적으로 NFS 서버에서 내보내는 파일 시스템이 ACL을 지원하고 NFS 클라이언트가 ACL을 읽을 수 있는 경우 클라이언트 시스템에서 ACL을 사용합니다.
서버를 구성할 때 NFS 공유에서 ACL을 비활성화하려면 /etc/exports
파일에 no_acl
옵션을 포함합니다. 클라이언트에 마운트할 때 NFS 공유에서 ACL을 비활성화하려면 명령줄 또는 /etc/fstab
파일을 통해 no_acl
옵션으로 마운트합니다.
5.2. 액세스 ACL 설정
ACL에는 액세스 ACL과 기본 ACL 의 두 가지 유형이 있습니다. 액세스 ACL은 특정 파일 또는 디렉터리의 액세스 제어 목록입니다. 기본 ACL은 디렉터리와만 연결할 수 있습니다. 디렉터리 내의 파일에 액세스 ACL이 없는 경우 디렉터리에 대한 기본 ACL의 규칙을 사용합니다. 기본 ACL은 선택 사항입니다.
ACL을 구성할 수 있습니다.
- 사용자당
- 그룹당
- 효과적인 권한 마스크를 통해
- 파일의 사용자 그룹에 없는 사용자의 경우
setfacl
유틸리티는 파일 및 디렉터리에 대한 ACL을 설정합니다. m 옵션을 사용하여 파일 또는 디렉터리의 ACL을 추가하거나 수정합니다.
# setfacl -m rules files
규칙(규칙)은 다음 형식으로 지정해야 합니다. 동일한 명령에서 쉼표로 구분된 경우 여러 규칙을 지정할 수 있습니다.
u:uid:perms
- 사용자의 액세스 ACL을 설정합니다. 사용자 이름 또는 UID를 지정할 수 있습니다. 사용자는 시스템에서 유효한 사용자일 수 있습니다.
g:gid:perms
- 그룹에 대한 액세스 ACL을 설정합니다. 그룹 이름 또는 GID를 지정할 수 있습니다. 그룹은 시스템에서 유효한 그룹일 수 있습니다.
m:perms
- 효과적인 권한 마스크를 설정합니다. 마스크는 소유 그룹의 모든 권한과 모든 사용자 및 그룹 항목을 통합합니다.
o:perms
- 파일에 대해 그룹에 있는 그룹 이외의 사용자에 대해 액세스 ACL을 설정합니다.
권한(ms)은 읽기, 쓰기, 실행의 경우 r
,w
, x
의 조합이어야 합니다.
파일 또는 디렉터리에 이미 ACL이 있고 setfacl
명령이 사용되는 경우 기존 ACL에 추가 규칙이 추가되거나 기존 규칙이 수정됩니다.
예 5.1. 읽기 및 쓰기 권한 제공
예를 들어 사용자 및rius에 읽기 및 쓰기 권한을 제공하려면 다음을 수행합니다.
# setfacl -m u:andrius:rw /project/somefile
사용자, 그룹 또는 기타 기타에 대한 모든 권한을 제거하려면 -x
옵션을 사용하고 권한을 지정하지 마십시오.
# setfacl -x rules files
예 5.2. 모든 권한 제거
예를 들어 UID가 500인 사용자의 모든 권한을 제거하려면 다음을 실행합니다.
# setfacl -x u:500 /project/somefile
5.3. 기본 ACL 설정
기본 ACL을 설정하려면 규칙 앞에 d:
를 추가하고 파일 이름 대신 디렉터리를 지정합니다.
예 5.3. 기본 ACL 설정
예를 들어 /share/
디렉터리의 기본 ACL을 사용자 그룹이 아닌 사용자에 대해 읽고 실행되도록 설정하려면 개별 파일의 액세스 ACL은 재정의할 수 있습니다.
# setfacl -m d:o:rx /share
5.4. ACL 검색
파일 또는 디렉토리에 대한 기존 ACL을 확인하려면 getfacl
명령을 사용합니다. 아래 예제에서 getfacl
은 파일의 기존 ACL을 결정하는 데 사용됩니다.
예 5.4. ACL 검색
# getfacl home/john/picture.png
위의 명령은 다음 출력을 반환합니다.
# file: home/john/picture.png # owner: john # group: john user::rw- group::r-- other::r--
기본 ACL이 있는 디렉터리가 지정된 경우 다음과 같이 기본 ACL도 표시됩니다. 예를 들어, getfacl home/ sales/
는 유사한 출력을 표시합니다.
# file: home/sales/ # owner: john # group: john user::rw- user:barryg:r-- group::r-- mask::r-- other::r-- default:user::rwx default:user:john:rwx default:group::r-x default:mask::rwx default:other::r-x
5.5. ACL을 사용하여 파일 시스템 아카이브
기본적으로 dump
명령은 백업 작업 중에 ACL을 보존합니다. tar
로 파일 또는 파일 시스템을 보관하는 경우 --acls
옵션을 사용하여 ACL을 보존합니다. 마찬가지로 cp
를 사용하여 ACL이 포함된 파일을 복사할 때 --preserve=mode
옵션을 포함하여 ACL도 복사됩니다. 또한 cp
의 -a
옵션( -dR --preserve=all
)은 타임스탬프, SELinux 컨텍스트 등과 같은 기타 정보와 함께 백업 중에 ACL도 유지합니다. 덤프
,tar
또는 cp
에 대한 자세한 내용은 해당 도움말
페이지를 참조하십시오.
star
유틸리티는 파일의 아카이브를 생성하는 데 사용할 수 있다는 점에서 tar
유틸리티와 유사하지만 일부 옵션은 다릅니다. 보다 일반적으로 사용되는 옵션 목록은 표 5.1. “별표
를 위한 명령줄 옵션” 을 참조하십시오. 사용 가능한 모든 옵션에 대해서는 man star
를 참조하십시오. 이 유틸리티를 사용하려면 star
패키지가 필요합니다.
옵션 | 설명 |
---|---|
| 아카이브 파일을 생성합니다. |
|
파일을 추출하지 마십시오. |
| 아카이브의 파일을 대체합니다. 파일은 아카이브 파일의 끝에 작성되어 모든 파일을 동일한 경로와 파일 이름으로 바꿉니다. |
| 아카이브 파일의 내용을 표시합니다. |
| 아카이브 파일을 업데이트합니다. 아카이브가 없는 경우 또는 파일이 아카이브에서 동일한 이름의 파일보다 최신인 경우 아카이브의 끝에 파일이 작성됩니다. 이 옵션은 아카이브가 파일이거나 백페이스일 수 있는 차단되지 않은 테이프인 경우에만 작동합니다. |
|
아카이브에서 파일을 추출합니다. 아카이브의 |
| 가장 중요한 옵션을 표시합니다. |
| 가장 중요한 옵션을 표시합니다. |
| 아카이브에서 파일을 추출할 때 파일 이름에서 슬래시를 스트라이핑하지 마십시오. 기본적으로 파일을 추출할 때 제거됩니다. |
| 생성 또는 추출 시 파일 및 디렉터리와 관련된 모든 ACL을 아카이브하거나 복원합니다. |
5.6. 이전 시스템과의 호환성
지정된 파일 시스템의 모든 파일에 ACL이 설정된 경우 해당 파일 시스템에는 ext_attr
속성이 있습니다. 이 속성은 다음 명령을 사용하여 확인할 수 있습니다.
# tune2fs -l filesystem-device
ext_attr
특성을 획득한 파일 시스템은 이전 커널과 함께 마운트할 수 있지만, 이러한 커널은 설정된 ACL을 적용하지 않습니다.
e2fsck
유틸리티 버전 1.22 이상 e2fsprogs
패키지 (Red Hat Enterprise Linux 2.1 및 4의 버전 포함)는 ext_attr
특성을 사용하여 파일 시스템을 확인할 수 있습니다. 이전 버전은 확인을 거부합니다.
5.7. ACL 참조
자세한 내용은 다음 도움말 페이지를 참조하십시오.
-
man acl
- ACL에 대한 설명 -
man getfacl
- 파일 액세스 제어 목록을 얻는 방법에 대해 설명합니다. -
man setfacl
- 파일 액세스 제어 목록을 설정하는 방법 설명 -
man star
-star
유틸리티 및 해당 많은 옵션에 대해 더 알아보기
6장. 권한 확보
시스템 관리자 및 경우에 따라 관리 권한으로 특정 작업을 수행해야 합니다. root
사용자로 시스템에 액세스하는 것은 잠재적으로 위험하며 시스템과 데이터를 광범위하게 손상시킬 수 있습니다. 이 장에서는 su
및 sudo
와 같은 setuid
프로그램을 사용하여 관리 권한을 얻는 방법에 대해 설명합니다. 이러한 프로그램을 통해 특정 사용자는 높은 수준의 제어 및 시스템 보안을 유지하면서 일반적으로 root
사용자만 사용할 수 있는 작업을 수행할 수 있습니다.
관리 제어, 잠재적인 위험 및 권한있는 액세스의 부적절한 사용으로 인한 데이터 손실을 방지하는 방법에 대한 자세한 내용은 Red Hat Enterprise Linux 7 보안 가이드 를 참조하십시오.
6.1. su utility를 사용하여 관리 액세스 구성
사용자가 su
명령을 실행하면 루트
암호를 입력하라는 메시지가 표시되고 인증 후에 루트
쉘 프롬프트가 표시됩니다.
su
명령을 사용하여 로그인하면 사용자는 root
사용자 이며 시스템에 대한 절대 관리 액세스 권한이 있습니다. 이 액세스에는 SELinux가 활성화된 경우 적용되는 제한 사항이 계속 적용됩니다. 또한 사용자가 root
가 되면 su
명령을 사용하여 암호를 입력하라는 메시지가 표시되지 않고 시스템의 다른 사용자로 변경할 수 있습니다.
이 프로그램은 매우 강력하기 때문에 조직 내 관리자는 명령에 대한 액세스 권한이 있는 사람을 제한해야 할 수 있습니다.
이 작업을 수행하는 가장 간단한 방법 중 하나는 wheel 이라는 특수 관리 그룹에 사용자를 추가하는 것입니다. 이렇게 하려면 root
로 다음 명령을 입력합니다.
~]# usermod -a -G wheel username
이전 명령에서 사용자 이름을 wheel
그룹에 추가하려는 사용자 이름으로 교체합니다.
사용자 설정 툴을 사용하여 다음과 같이 그룹 멤버십을 수정할 수도 있습니다. 이 절차를 수행하려면 관리자 권한이 필요합니다.
-
Super 키를 눌러 활동 개요를 입력하고
사용자를
입력한 다음 Enter 를 누릅니다. 사용자 설정 도구가 나타납니다. Super 키는 키보드와 기타 하드웨어에 따라 다양한 길잡이에 표시되지만 일반적으로 스페이스바 왼쪽에 있는 Windows 또는 Command 키로 나타납니다. - 변경을 활성화하려면 버튼을 클릭하고 유효한 관리자 암호를 입력합니다.
- 왼쪽 열에서 사용자 아이콘을 클릭하여 오른쪽 창에 사용자의 속성을 표시합니다.
-
계정 유형을
Standard
에서Administrator
로 변경합니다. 이렇게 하면 사용자를wheel
그룹에 추가합니다.
사용자 도구에 대한 자세한 내용은 4.2절. “그래픽 환경에서 사용자 관리” 을 참조하십시오.
원하는 사용자를 wheel
그룹에 추가한 후 이러한 특정 사용자만 su
명령을 사용하도록 허용하는 것이 좋습니다. 이렇게 하려면 su
,/etc/pam.d/su
에 대한 Pluggable Authentication Module (PAM) 구성 파일을 편집합니다. 텍스트 편집기에서 이 파일을 열고 #
문자를 제거하여 다음 행의 주석을 제거합니다.
#auth required pam_wheel.so use_uid
이 변경으로 인해 관리 그룹 where의 멤버만 su
명령을 사용하여 다른 사용자로 전환할 수 있습니다.
6.2. sudo utility를 사용하여 관리 액세스 구성
sudo
명령은 사용자에게 관리 액세스 권한을 부여하는 다른 방법을 제공합니다. 신뢰할 수 있는 사용자가 관리자 명령 앞에 sudo
를 입력하면 자신의 암호를 입력하라는 메시지가 표시됩니다. 그런 다음 인증되고 명령이 허용된다고 가정하면 root
사용자인 것처럼 관리 명령이 실행됩니다.
sudo
명령의 기본 형식은 다음과 같습니다.
sudo
command
위의 예에서 명령은 일반적으로 root
사용자(예: mount
)에 예약된 명령으로 교체됩니다.
sudo
명령을 사용하면 높은 수준의 유연성을 제공합니다. 예를 들어 /etc/sudoers
구성 파일에 나열된 사용자만 sudo
명령을 사용할 수 있으며 루트
쉘이 아닌 사용자 쉘에서 명령이 실행됩니다. 즉, Red Hat Enterprise Linux 7 보안 가이드에 표시된 대로 루트
쉘을 완전히 비활성화할 수 있습니다.
sudo
명령을 사용하여 인증에 성공하면 /var/log/
message 파일에 기록되고 발행자의 사용자 이름과 함께 실행된 명령은 /var/log/secure
파일에 기록됩니다. 추가 로깅이 필요한 경우, /etc/pam.d/system-auth
파일에 다음 행을 추가하여 지정된 사용자에 대해 TTY 감사를 활성화하려면 pam_tty_audit
모듈을 사용합니다.
session required pam_tty_audit.so disable=pattern enable=pattern
여기서 패턴은 glob를 선택적 용도로 사용하는 사용자의 쉼표로 구분된 목록을 나타냅니다. 예를 들어 다음 구성은 root
사용자에 대해 TTY 감사를 활성화하고 다른 모든 사용자에 대해 비활성화합니다.
session required pam_tty_audit.so disable=* enable=root
TTY 감사 레코드에 대한 pam_tty_audit
PAM 모듈을 TTY 입력만 구성합니다. 즉, 감사된 사용자가 로그인할 때 interval _tty_audit
는 사용자가 /var/log/audit/audit.log
파일에 만드는 정확한 키 입력을 기록합니다. 자세한 내용은 pam_tty_audit(8) 매뉴얼 페이지를 참조하십시오.
sudo
명령의 또 다른 장점은 관리자가 필요에 따라 특정 명령에 다른 사용자가 액세스할 수 있다는 점입니다.
sudo
구성 파일 /etc/sudoers
를 편집하려는 관리자는 visudo
명령을 사용해야 합니다.
사용자에게 전체 관리 권한을 제공하려면 visudo
를 입력하고 사용자 권한 사양 섹션에서 다음과 유사한 행을 추가합니다.
juan ALL=(ALL) ALL
이 예에서는 사용자(Subjan ) 가
모든 호스트에서 sudo
를 사용하고 모든 명령을 실행할 수 있다고 명시되어 있습니다.
아래 예제에서는 sudo
를 설정할 때 가능한 세분성을 보여줍니다.
%users localhost=/usr/sbin/shutdown -h now
이 예에서는 사용자
시스템 그룹의 모든 멤버가 콘솔에서 발행되는 한 이제 /sbin/shutdown -h
명령을 실행할 수 있다고 명시되어 있습니다.
sudoers
의 man 페이지에는 이 파일에 대한 자세한 옵션 목록이 있습니다.
/etc/sudoers
파일에서 NO
tekton 옵션을 사용하여 암호를 제공하지 않아도 되는 sudo 사용자를 구성할 수도 있습니다.
user_name ALL=(ALL) NOPASSWD: ALL
그러나 이러한 사용자에게도 sudo
는 PAM 모듈에 의해 설정된 제한을 인증 단계 외부에서 확인할 수 있는PAM(Plugable Authentication Module) 계정 관리 모듈을 실행합니다. 이렇게 하면 PAM 모듈이 올바르게 작동합니다. 예를 들어, pam_time
모듈의 경우 시간 기반 계정 제한이 실패하지 않습니다.
항상 모든 PAM 기반 액세스 제어 규칙의 허용된 서비스 목록에 sudo
를 포함합니다. 그렇지 않으면 sudo
에 액세스하려고 할 때 "permission denied" 오류 메시지가 표시되지만 현재 액세스 제어 규칙에 따라 액세스가 금지됩니다.
자세한 내용은 Red Hat Knowledgebase 문서 Red Hat Enterprise Linux 7.6에 패치된 후 sudo에서 권한 거부 오류를 제공합니다.
sudo
명령을 사용할 때 고려해야 할 몇 가지 위험이 있습니다. 위에서 설명한 대로 visudo
를 사용하여 /etc/sudoers
구성 파일을 편집하여 방지할 수 있습니다. /etc/sudoers
파일을 기본 상태로 유지하면 wheel
그룹의 모든 사용자에게 무제한 루트
액세스 권한이 부여됩니다.
기본적으로
sudo
는 5분 제한 기간 동안 암호를 저장합니다. 이 기간 동안 명령을 나중에 사용하면 사용자에게 암호를 입력하라는 메시지가 표시되지 않습니다. 이 취약점은 사용자가 워크스테이션이 아직 로그인되어 있는 동안 워크스테이션을 자동으로 잠금 해제하고 잠금 해제하는 경우 공격자가 악용될 수 있습니다. 이 동작은/etc/sudoers
파일에 다음 행을 추가하여 변경할 수 있습니다.Defaults timestamp_timeout=value
여기서 value 는 원하는 시간 제한 길이(분)입니다. 값을 0으로 설정하면
sudo
에서 암호를 매번 필요로 합니다.계정이 손상된 경우 공격자는
sudo
를 사용하여 관리자 권한으로 새 쉘을 열 수 있습니다.sudo /bin/bash
이 또는 유사한 방식으로
root
로 새 쉘을 열면 공격자가 이론적으로 무제한으로 제한된 시간 동안 관리 액세스 권한을 부여하고/etc/sudoers
파일에 지정된 제한 시간을 무시하고 공격자가 새로 열린 세션이 종료될 때까지sudo
에 대한 암호를 다시 입력하지 않아도 됩니다.
6.3. 추가 리소스
사용자가 관리 권한을 얻을 수 있는 프로그램은 잠재적인 보안 위험이지만 보안 자체는 이 특정 책의 범위를 벗어납니다. 따라서 보안 및 권한 있는 액세스에 대한 자세한 내용은 아래 나열된 리소스를 참조해야 합니다.
설치된 문서
-
Su (1) -
su
의 도움말 페이지는 이 명령으로 사용 가능한 옵션에 대한 정보를 제공합니다. -
sudo
(8) -sudo
의 도움말 페이지에는 이 명령에 대한 자세한 설명과 해당 동작을 사용자 정의할 수 있는 옵션이 나열됩니다. -
PAM
(8) - Linux용 Pluggable Authentication Modules (PAM) 사용을 설명하는 수동 페이지.
온라인 문서
-
Red Hat Enterprise Linux 7 보안 가이드 - Red Hat Enterprise Linux 7의 보안 가이드에서는
setuid
프로그램과 관련된 잠재적인 보안 문제와 이러한 위험을 완화하는 데 사용되는 기술을 자세히 설명합니다.
예를 들면 다음과 같습니다.
- 4장. 사용자 및 그룹 관리 그래픽 사용자 인터페이스 및 명령줄에서 시스템 사용자 및 그룹을 관리하는 방법을 설명합니다.
II 부. 서브스크립션 및 지원
Red Hat Enterprise Linux 시스템에서 소프트웨어 업데이트를 받으려면 Red HatCDN( Content Delivery Network ) 및 적절한 리포지토리를 활성화해야 합니다. 이 부분에서는 시스템을 Red Hat Content Delivery Network에 등록하는 방법을 설명합니다.
Red Hat은 고객 포털 을 통해 지원을 제공하며 Red Hat 지원 도구를 사용하여 명령줄에서 직접 이 지원에 액세스할 수 있습니다. 이 부분에서는 이 명령줄 툴의 사용에 대해 설명합니다.
7장. 시스템 등록 및 서브스크립션 관리
서브스크립션 서비스는 Red Hat 소프트웨어 인벤토리를 처리하는 메커니즘을 제공하며 yum 패키지 관리자를 사용하여 이미 설치된 프로그램을 최신 버전에 추가로 설치할 수 있습니다. Red Hat Enterprise Linux 7에서 시스템을 등록하고 서브스크립션을 첨부하는 것이 Red Hat 서브스크립션 관리를 사용하는 것이 좋습니다.
7.1. 시스템 및 연결 서브스크립션 등록
시스템을 등록하고 Red Hat 서브스크립션 관리를 사용하여 서브스크립션을 하나 이상 연결하려면 다음 단계를 완료합니다. 모든 subscription-manager
명령은 root
로 실행되어야 합니다.
다음 명령을 실행하여 시스템을 등록합니다. 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다. 사용자 이름과 암호는 Red Hat Customer Portal의 로그인 자격 증명과 동일합니다.
subscription-manager register
필요한 서브스크립션의 풀 ID를 확인합니다. 이렇게 하려면 쉘 프롬프트에서 다음을 입력하여 시스템에 사용 가능한 모든 서브스크립션 목록을 표시합니다.
subscription-manager list --available
사용 가능한 서브스크립션마다 이 명령은 서브스크립션과 관련된 이름, 고유 식별자, 만료일 및 기타 세부 정보를 표시합니다. 모든 아키텍처의 서브스크립션을 나열하려면
--all
옵션을 추가합니다. 풀 ID는풀 ID
로 시작하는 줄에 나열됩니다.다음과 같이 명령을 입력하여 시스템에 적절한 서브스크립션을 연결합니다.
subscription-manager attach --pool=pool_id
pool_id 를 이전 단계에서 결정한 풀 ID로 교체합니다.
언제든지 시스템이 현재 연결된 서브스크립션 목록을 확인하려면 다음을 실행합니다.
subscription-manager list --consumed
Red Hat Subscription Management를 사용하여 시스템을 등록하고 서브스크립션과 연결하는 방법에 대한 자세한 내용은 지정된 솔루션 문서를 참조하십시오. 서브스크립션에 대한 자세한 내용은 Red Hat Subscription Management 가이드 컬렉션을 참조하십시오.
7.2. 소프트웨어 리포지토리 관리
Red Hat Content Delivery Network를 시스템이 서브스크립션하면 /etc/yum.repos.d/
디렉토리에 리포지토리 파일이 생성됩니다. 이를 확인하려면 yum 을 사용하여 활성화된 모든 리포지토리를 나열합니다.
yum repolist
Red Hat 서브스크립션 관리를 사용하면 Red Hat에서 제공하는 소프트웨어 리포지토리를 수동으로 활성화 또는 비활성화할 수 있습니다. 사용 가능한 리포지토리를 모두 나열하려면 다음 명령을 사용하십시오.
subscription-manager repos --list
리포지토리 이름은 사용 중인 특정 Red Hat Enterprise Linux 버전에 따라 다르며 형식은 다음과 같습니다.
rhel-version-variant-rpms rhel-version-variant-debug-rpms rhel-version-variant-source-rpms
여기서 버전은 Red Hat Enterprise Linux 시스템 버전(6
또는 7
)이며, 변형 은 Red Hat Enterprise Linux 시스템 변형(서버
또는 워크스테이션
)입니다. 예를 들면 다음과 같습니다.
rhel-7-server-rpms rhel-7-server-debug-rpms rhel-7-server-source-rpms
리포지토리를 활성화하려면 다음과 같이 명령을 입력합니다.
subscription-manager repos --enable repository
리포지토리를 활성화할 리포지토리 이름으로 교체합니다.
마찬가지로 리포지토리를 비활성화하려면 다음 명령을 사용합니다.
subscription-manager repos --disable repository
9.5절. “YUM 및 YUM 리포지토리 구성” yum 을 사용하여 소프트웨어 리포지토리 관리에 대한 자세한 정보를 제공합니다.
리포지토리를 자동으로 업데이트하려면 yum-cron
서비스를 사용할 수 있습니다. 자세한 내용은 9.7절. “YUM-cron을 사용하여 패키지 데이터베이스 자동 새로 고침 및 업데이트 다운로드”의 내용을 참조하십시오.
7.3. 서브스크립션 제거
특정 서브스크립션을 제거하려면 다음 단계를 완료하십시오.
이미 연결된 서브스크립션에 대한 정보를 나열하여 제거할 서브스크립션의 일련 번호를 결정합니다.
subscription-manager list --consumed
일련 번호는
serial
으로 나열된 번호입니다. 예를 들어 아래 예제에서744993814251016831
은 다음과 같습니다.SKU: ES0113909 Contract: 01234567 Account: 1234567 Serial: 744993814251016831 Pool ID: 8a85f9894bba16dc014bccdd905a5e23 Active: False Quantity Used: 1 Service Level: SELF-SUPPORT Service Type: L1-L3 Status Details: Subscription Type: Standard Starts: 02/27/2015 Ends: 02/27/2016 System Type: Virtual
다음과 같이 명령을 입력하여 선택한 서브스크립션을 제거합니다.
subscription-manager remove --serial=serial_number
serial_number 를 이전 단계에서 결정한 일련 번호로 바꿉니다.
시스템에 연결된 모든 서브스크립션을 제거하려면 다음 명령을 실행합니다.
subscription-manager remove --all
7.4. 추가 리소스
Red Hat Subscription Management를 사용하여 시스템을 등록하고 서브스크립션과 연결하는 방법에 대한 자세한 내용은 아래 나열된 리소스를 참조하십시오.
설치된 문서
-
subscription-manager
(8) - Red Hat 서브스크립션 관리에 대한 도움말 페이지는 지원되는 옵션 및 명령의 전체 목록을 제공합니다.
관련 도서
- Red Hat Subscription Management 가이드 수집 - 이 안내서에는 Red Hat 서브스크립션 관리 사용 방법에 대한 자세한 정보가 포함되어 있습니다.
- 설치 가이드 - 초기 설정 프로세스 중에 등록하는 방법에 대한 자세한 내용은 초기 설정 장을 참조하십시오.
예를 들면 다음과 같습니다.
8장. Red Hat 지원 도구를 사용하여 지원에 액세스
redhat-support-tool 패키지의 Red Hat 지원 툴 은 대화형 쉘과 단일 실행 프로그램으로 기능할 수 있습니다. SSH
를 통해 실행하거나 모든 터미널에서 실행할 수 있습니다. 예를 들어 명령줄에서 Red Hat 지식 베이스를 검색하고 명령줄에 직접 솔루션을 복사하고, 지원 케이스를 열고 업데이트하고, 분석을 위해 Red Hat으로 파일을 전송할 수 있습니다.
8.1. Red Hat 지원 도구 설치
Red Hat 지원 도구는 기본적으로 Red Hat Enterprise Linux에 설치됩니다. 필요한 경우 root
로 다음 명령을 입력합니다.
~]# yum install redhat-support-tool
8.2. 명령줄을 사용하여 Red Hat 지원 도구 등록
명령줄을 사용하여 Red Hat 지원 도구를 고객 포털에 등록하려면 다음 명령을 실행합니다.
~]# redhat-support-tool config user username
여기서 username 은 Red Hat 고객 포털 계정의 사용자 이름입니다.
~]# redhat-support-tool config password
Please enter the password for username:
8.3. Interactive Shell 모드에서 Red Hat 지원 도구 사용
대화형 모드에서 도구를 시작하려면 다음 명령을 입력합니다.
~]$ redhat-support-tool
Welcome to the Red Hat Support Tool.
Command (? for help):
툴은 권한이 없는 사용자로 실행되어 결과적으로 명령 세트를 줄이거나 root
로 실행할 수 있습니다.
?
문자를 입력하여 명령을 나열할 수 있습니다. q
또는 e
문자를 입력하여 프로그램 또는 메뉴 선택을 종료할 수 있습니다. 지식 베이스 또는 지원 케이스를 처음 검색할 때 Red Hat Customer Portal 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다. 또는 대화형 모드를 사용하여 Red Hat Customer Portal 계정의 사용자 이름과 암호를 설정하고 선택적으로 구성 파일에 저장합니다.
8.4. Red Hat 지원 도구 구성
대화형 모드에서는 config --help
명령을 입력하여 구성 옵션을 나열할 수 있습니다.
~]# redhat-support-tool Welcome to the Red Hat Support Tool. Command (? for help): config --help Usage: config [options] config.option <new option value> Use the 'config' command to set or get configuration file values. Options: -h, --help show this help message and exit -g, --global Save configuration option in /etc/redhat-support-tool.conf. -u, --unset Unset configuration option. The configuration file options which can be set are: user : The Red Hat Customer Portal user. password : The Red Hat Customer Portal password. debug : CRITICAL, ERROR, WARNING, INFO, or DEBUG url : The support services URL. Default=https://api.access.redhat.com proxy_url : A proxy server URL. proxy_user: A proxy server user. proxy_password: A password for the proxy server user. ssl_ca : Path to certificate authorities to trust during communication. kern_debug_dir: Path to the directory where kernel debug symbols should be downloaded and cached. Default=/var/lib/redhat-support-tool/debugkernels Examples: - config user - config user my-rhn-username - config --unset user
Interactive 모드를 사용하여 Red Hat 지원 도구 등록
대화형 모드를 사용하여 Red Hat 지원 도구를 고객 포털에 등록하려면 다음과 같이 진행하십시오.
다음 명령을 입력하여 툴을 시작합니다.
~]# redhat-support-tool
Red Hat Customer Portal 사용자 이름을 입력합니다.
Command (? for help):
config user username
사용자 이름을 글로벌 구성 파일에 저장하려면
-g
옵션을 추가합니다.Red Hat 고객 포털 암호를 입력합니다.
Command (? for help):
config password
Please enter the password for username:
8.4.1. 설정 파일에 설정 저장
달리 지시하지 않는 한 Red Hat 지원 도구는 ~/.redhat-support-tool/redhat-support-tool.conf
구성 파일을 사용하여 현재 사용자의 홈 디렉터리에 값 및 옵션을 로컬에 저장합니다. 필요한 경우 특정 사용자만 읽을 수 있으므로 이 파일에 암호를 저장하는 것이 좋습니다. 도구가 시작되면 글로벌 구성 파일 /etc/redhat-support-tool.conf
및 로컬 구성 파일에서 값을 읽습니다. 로컬에 저장된 값 및 옵션은 전역에 저장된 설정보다 우선합니다.
암호가 base64
로 인코딩되고 쉽게 디코딩될 수 있기 때문에 글로벌 /etc/redhat-support-tool.conf
구성 파일에 암호를 저장하지 않는 것이 좋습니다. 또한 이 파일은 쉽게 읽을 수 있습니다.
전역 구성 파일에 값 또는 옵션을 저장하려면 다음과 같이 -g, --global
옵션을 추가합니다.
Command (? for help): config setting -g value
-g, --global
옵션을 사용하여 설정을 전역적으로 저장하려면 일반 사용자가 /etc/redhat-support-tool.conf
에 쓰는 데 필요한 권한이 없으므로 Red Hat 지원 도구를 루트로
실행해야 합니다.
로컬 구성 파일에서 값 또는 옵션을 제거하려면 다음과 같이 -u, --unset
옵션을 추가합니다.
Command (? for help): config setting -u value
이렇게 하면 사용 가능한 경우 도구에서 매개 변수를 지우고 설정 해제하고 글로벌 구성 파일에서 동등한 설정으로 돌아갑니다.
권한이 없는 사용자로 실행하는 경우 -u, --unset 옵션에 저장된 값은 -u, --unset
옵션을 사용하여 제거할 수 없지만 -g, --global
옵션과 동시에 -u, --unset
옵션을 사용하여 툴의 현재 실행 중인 인스턴스에서 선택을 해제할 수 있습니다. 루트
로 실행하는 경우 -g, --global
를 -u, --unset
옵션과 동시에 사용하여 전역 구성 파일에서 값 및 옵션을 제거할 수 있습니다.
8.5. Interactive 모드를 사용하여 지원 케이스 열기 및 업데이트
Interactive 모드를 사용하여 새 지원 케이스 열기
대화형 모드를 사용하여 새 지원 케이스를 시작하려면 다음과 같이 진행하십시오.
다음 명령을 입력하여 툴을 시작합니다.
~]# redhat-support-tool
opencase
명령을 입력합니다.Command (? for help):
opencase
- 화면에 표시되는 메시지에 따라 제품을 선택한 다음 버전을 선택합니다.
- 케이스 요약을 입력합니다.
- 케이스에 대한 설명을 입력하고 완료되면 빈 행에서 Ctrl+D 를 누릅니다.
- 케이스의 심각도를 선택합니다.
- 필요한 경우 지원 케이스를 열기 전에 이 문제에 대한 해결 방법이 있는지 확인하기로 결정했습니다.
지원 케이스를 계속 열고 있는지 확인합니다.
Support case 0123456789 has successfully been opened
- 선택적으로 SOS 보고서를 첨부하도록 선택합니다.
- 선택적으로 파일을 첨부하도록 선택합니다.
Interactive 모드를 사용하여 기존 지원 케이스 보기 및 업데이트
대화형 모드를 사용하여 기존 지원 케이스를 보고 업데이트하려면 다음과 같이 진행하십시오.
다음 명령을 입력하여 툴을 시작합니다.
~]# redhat-support-tool
getcase
명령을 입력합니다.Command (? for help):
getcase case-number
여기서 case-number 는 보고 업데이트하려는 케이스의 수입니다.
- 화면의 지침에 따라 케이스를 보거나, 주석을 수정하거나 추가하고, 첨부 파일을 가져오거나 추가합니다.
Interactive 모드를 사용하여 기존 지원 케이스 수정
대화형 모드를 사용하여 기존 지원 케이스의 속성을 수정하려면 다음과 같이 진행하십시오.
다음 명령을 입력하여 툴을 시작합니다.
~]# redhat-support-tool
수정 케이스
명령을 입력합니다.Command (? for help):
modifycase case-number
여기서 case-number 는 보고 업데이트하려는 케이스의 수입니다.
수정 선택 목록이 나타납니다.
Type the number of the attribute to modify or 'e' to return to the previous menu. 1 Modify Type 2 Modify Severity 3 Modify Status 4 Modify Alternative-ID 5 Modify Product 6 Modify Version End of options.
화면의 메시지에 따라 하나 이상의 옵션을 수정합니다.
예를 들어 상태를 수정하려면
3
을 입력합니다.Selection: 3 1 Waiting on Customer 2 Waiting on Red Hat 3 Closed Please select a status (or 'q' to exit):
8.6. 명령줄에서 기술 지원 케이스 보기
명령줄에서 케이스 내용을 보면 명령줄에서 솔루션을 빠르고 쉽게 적용할 수 있습니다.
명령줄에서 기존 지원 케이스를 보려면 다음과 같이 명령을 입력합니다.
~]# redhat-support-tool getcase case-number
여기서 case-number 는 다운로드하려는 케이스의 수입니다.
8.7. 추가 리소스
Red Hat 지식베이스 문서 Red Hat 지원 도구에는 추가 정보, 예제 및 비디오 튜토리얼이 있습니다.
III 부. 소프트웨어 설치 및 관리
Red Hat Enterprise Linux 시스템의 모든 소프트웨어는 RPM 패키지로 구분되어 설치, 업그레이드 또는 제거할 수 있습니다. 이 부분에서는 YUM 을 사용하여 Red Hat Enterprise Linux에서 패키지를 관리하는 방법을 설명합니다.
9장. yum
yum 은 사용 가능한 패키지에 대한 정보를 쿼리하고, 리포지토리에서 패키지를 가져와 설치 및 제거한 다음 전체 시스템을 사용 가능한 최신 버전으로 업데이트할 수 있는 Red Hat 패키지 관리자입니다. yum은 패키지를 업데이트, 설치 또는 제거할 때 자동 종속성 확인을 수행하므로 사용 가능한 모든 종속 패키지를 자동으로 확인, 가져오기 및 설치할 수 있습니다.
yum은 새로운 추가 리포지토리 또는 패키지 소스를 사용하여 구성할 수 있으며 기능을 강화하고 확장하는 많은 플러그인도 제공합니다. yum은 RPM 과 동일한 많은 작업을 수행할 수 있습니다. 또한 많은 명령줄 옵션이 비슷합니다. yum은 단일 시스템 또는 그 그룹의 그룹에서 쉽고 간단한 패키지 관리를 활성화합니다.
다음 섹션에서는 Red Hat Enterprise Linux 7 설치 가이드에 설명된 대로 설치 중에 시스템이 Red Hat 서브스크립션 관리에 등록되어 있다고 가정합니다. 시스템이 서브스크립션되지 않은 경우 7장. 시스템 등록 및 서브스크립션 관리 를 참조하십시오.
yum은 모든 패키지 리포지토리(패키지 소스) 또는 개별 리포지토리에 대해 GPG(Gnu 개인 정보 보호 가드) 서명 확인 (GnuPG) 서명 확인 기능을 활성화하여 보안 패키지 관리를 제공합니다. 서명 확인이 활성화되면 yum은 해당 리포지토리의 올바른 키로 GPG가 서명되지 않은 패키지 설치를 거부합니다. 즉, 시스템에서 다운로드하고 설치하는 RPM 패키지가 Red Hat과 같은 신뢰할 수 있는 소스에서 가져온다는 것을 신뢰할 수 있으며 전송 중에 수정되지 않았음을 신뢰할 수 있습니다. yum을 사용하여 서명 확인 활성화에 대한 자세한 내용은 9.5절. “YUM 및 YUM 리포지토리 구성” 를 참조하십시오.
또한 yum을 사용하면 다른 시스템에서 다운로드 및 설치를 위해 자체 RPM 패키지 리포지토리를 쉽게 설정할 수 있습니다. 가능한 경우 yum은 여러 패키지 및 메타데이터의 병렬 다운로드를 사용하여 다운로드 속도를 높입니다.
yum을 학습하는 것은 종종 시스템 관리 작업을 수행하는 가장 빠른 방법이며 PackageKit 그래픽 패키지 관리 도구에서 제공하는 기능 외에도 기능을 제공합니다.
yum을 사용하여 시스템에서 패키지를 설치, 업데이트 또는 제거하려면 수퍼유저 권한이 있어야 합니다. 이 장의 모든 예제에서는 su
또는 sudo
명령을 사용하여 이미 수퍼유저 권한을 얻은 것으로 가정합니다.
9.1. 패키지 확인 및 업데이트
yum을 사용하면 시스템에 적용 대기 중인 업데이트가 있는지 확인할 수 있습니다. 업데이트해야 하는 패키지를 나열하고 전체적으로 업데이트하거나 선택한 개별 패키지를 업데이트할 수 있습니다.
9.1.1. 업데이트 확인
사용 가능한 업데이트가 있는 설치된 패키지를 보려면 다음 명령을 사용하십시오.
yum
check-update
예 9.1. yum check-update 명령의 출력 예
yum
check-update
의 출력은 다음과 같습니다.
~]# yum check-update Loaded plugins: product-id, search-disabled-repos, subscription-manager dracut.x86_64 033-360.el7_2 rhel-7-server-rpms dracut-config-rescue.x86_64 033-360.el7_2 rhel-7-server-rpms kernel.x86_64 3.10.0-327.el7 rhel-7-server-rpms rpm.x86_64 4.11.3-17.el7 rhel-7-server-rpms rpm-libs.x86_64 4.11.3-17.el7 rhel-7-server-rpms rpm-python.x86_64 4.11.3-17.el7 rhel-7-server-rpms yum.noarch 3.4.3-132.el7 rhel-7-server-rpms
위의 출력의 패키지는 업데이트를 사용할 수 있는 상태로 나열됩니다. 목록의 첫 번째 패키지는 dracut 입니다. 예제 출력의 각 행은 dracut 의 경우 여러 행으로 구성됩니다.
-
dracut
- 패키지 이름 -
x86_64
- 패키지가용으로 빌드된 CPU 아키텍처 -
033
- 설치할 업데이트된 패키지의 버전입니다. -
360.el7
- 업데이트된 패키지 릴리스 -
_2
- z-stream 업데이트의 일부로 추가된 빌드 버전입니다. -
rhel-7-server-rpms
- 업데이트된 패키지가 있는 리포지토리입니다.
출력은 또한 커널(커널 패키지), yum 및 RPM 자체( yum
및 rpm 패키지) 및 종속 항목(예: rpm-libs, rpm-python 패키지)을 업데이트할 수 있음을 보여줍니다.
9.1.2. 패키지 업데이트
한 번에 하나의 패키지, 여러 패키지 또는 모든 패키지를 업데이트하도록 선택할 수 있습니다. 업데이트하는 패키지 또는 패키지의 종속 항목에 자체적으로 사용 가능한 업데이트가 있는 경우 해당 패키지도 업데이트됩니다.
단일 패키지 업데이트
단일 패키지를 업데이트하려면 root
로 다음 명령을 실행합니다.
yum update package_name
예 9.2. rpm 패키지 업데이트
rpm 패키지를 업데이트하려면 다음을 입력합니다.
~]# yum update rpm Loaded plugins: langpacks, product-id, subscription-manager Updating Red Hat repositories. INFO:rhsm-app.repolib:repos updated: 0 Setting up Update Process Resolving Dependencies --> Running transaction check ---> Package rpm.x86_64 0:4.11.1-3.el7 will be updated --> Processing Dependency: rpm = 4.11.1-3.el7 for package: rpm-libs-4.11.1-3.el7.x86_64 --> Processing Dependency: rpm = 4.11.1-3.el7 for package: rpm-python-4.11.1-3.el7.x86_64 --> Processing Dependency: rpm = 4.11.1-3.el7 for package: rpm-build-4.11.1-3.el7.x86_64 ---> Package rpm.x86_64 0:4.11.2-2.el7 will be an update --> Running transaction check ... --> Finished Dependency Resolution Dependencies Resolved ============================================================================= Package Arch Version Repository Size ============================================================================= Updating: rpm x86_64 4.11.2-2.el7 rhel 1.1 M Updating for dependencies: rpm-build x86_64 4.11.2-2.el7 rhel 139 k rpm-build-libs x86_64 4.11.2-2.el7 rhel 98 k rpm-libs x86_64 4.11.2-2.el7 rhel 261 k rpm-python x86_64 4.11.2-2.el7 rhel 74 k Transaction Summary ============================================================================= Upgrade 1 Package (+4 Dependent packages) Total size: 1.7 M Is this ok [y/d/N]:
이 출력에는 관심 있는 몇 가지 항목이 포함되어 있습니다.
-
로드된 플러그인: langpack, product-id, subscription-manager
- YUM은 항상 설치 및 활성화되는 yum 플러그인을 알려줍니다. 특정 플러그인에 대한 설명은 9.6절. “yum 플러그인” 에서 yum 플러그인에 대한 일반 정보는 9.6.3절. “YUM 플러그인 작업” 을 참조하십시오. -
rpm.x86_64
- 새 rpm 패키지와 해당 종속 항목을 다운로드하여 설치할 수 있습니다. 트랜잭션 검사는 이러한 각 패키지에 대해 수행됩니다. yum은 업데이트 정보를 표시하고 업데이트 확인을 요청하는 메시지를 표시합니다. yum은 기본적으로 대화식으로 실행됩니다.
yum
명령이 수행하려는 트랜잭션을 이미 알고 있는 경우-y
옵션을 사용하여 yum에서 요청하는 질문에yes
로 자동으로 응답할 수 있습니다(대화형이 아닌 경우 실행됨). 그러나 발생할 수 있는 문제를 쉽게 해결할 수 있도록 yum 계획을 시스템에 적용할 변경 사항을 항상 확인해야 합니다. 패키지를 설치하지 않고 다운로드하도록 선택할 수도 있습니다. 이렇게 하려면 다운로드 프롬프트에서d
옵션을 선택합니다. 그러면 선택한 패키지의 백그라운드 다운로드가 시작됩니다.트랜잭션이 실패하면 9.4절. “트랜잭션 내역 작업” 에 설명된 대로
yum history
명령을 사용하여 yum 트랜잭션 기록을 볼 수 있습니다.
yum은 yum update
또는 yum install
명령을 사용 중인지에 관계없이 항상 새 커널을 설치합니다.
RPM 을 사용하는 경우 현재 커널을 대체하는 rpm - u 커널 대신 새 커널을 설치하는
명령을 사용하는 것이 중요합니다.
rpm -i kernel
마찬가지로 패키지 그룹을 업데이트할 수 있습니다. root
로 다음을 입력합니다.
yum group update group_name
여기서 group_name 을 업데이트하려는 패키지 그룹의 이름으로 바꿉니다. 패키지 그룹에 대한 자세한 내용은 9.3절. “패키지 그룹 작업” 을 참조하십시오.
또한 yum은 더 이상 사용되지 않는
구성 옵션을 사용하여 update
와 동일한 업그레이드
명령을 제공합니다( 9.5.1절. “[main] 옵션 설정”참조). 기본적으로 사용되지 않는
것은 /etc/yum.conf
에서 설정되어 이 두 명령을 동일하게 만듭니다.
모든 패키지 업데이트 및 해당 종속 항목 업데이트
모든 패키지 및 종속 항목을 업데이트하려면 인수 없이 yum update
명령을 사용하십시오.
yum update
보안 관련 패키지 업데이트
패키지에 보안 업데이트를 사용할 수 있는 경우 이러한 패키지만 최신 버전으로 업데이트할 수 있습니다. root
로 다음을 입력합니다.
yum update --security
최신 보안 업데이트가 포함된 버전으로만 패키지를 업데이트할 수도 있습니다. root
로 다음을 입력합니다.
yum update-minimal --security
예를 들면 다음과 같습니다.
- kernel-3.10.0-1 패키지가 시스템에 설치되어 있습니다.
- kernel-3.10.0-2 패키지는 보안 업데이트로 릴리스되었습니다.
- kernel-3.10.0-3 패키지는 버그 수정 업데이트로 릴리스되었습니다.
그런 다음 yum update-minimal --security
가 패키지를 kernel-3.10.0-2 로 업데이트하고 yum update --security
는 패키지를 kernel-3.10.0-3 으로 업데이트합니다.
패키지 업데이트 자동화
패키지 데이터베이스를 자동으로 새로 고치고 자동으로 업데이트하려면 yum-cron
서비스를 사용할 수 있습니다. 자세한 내용은 9.7절. “YUM-cron을 사용하여 패키지 데이터베이스 자동 새로 고침 및 업데이트 다운로드”의 내용을 참조하십시오.
9.1.3. ISO 및 YUM을 사용하여 시스템 오프 라인 업그레이드
인터넷 또는 Red Hat Network에서 연결이 끊긴 시스템의 경우 Red Hat Enterprise Linux 설치 ISO 이미지와 함께 yum update
명령을 사용하면 시스템을 최신 마이너 버전으로 빠르게 업그레이드할 수 있습니다. 다음 단계는 업그레이드 프로세스를 보여줍니다.
ISO 이미지를 마운트할 대상 디렉터리를 생성합니다. 이 디렉터리는 마운트 시 자동으로 생성되지 않으므로 다음 단계를 진행하기 전에 생성합니다.
루트
로서 다음을 입력합니다.mkdir mount_dir
mount_dir 을 마운트 디렉터리의 경로로 바꿉니다. 일반적으로 사용자는
/media
디렉터리에 하위 디렉터리를 생성합니다.Red Hat Enterprise Linux 7 설치 ISO 이미지를 이전에 생성한 대상 디렉터리에 마운트합니다.
루트
로서 다음을 입력합니다.mount -o loop iso_name mount_dir
iso_name 을 ISO 이미지의 경로로 바꾸고 mount_dir 을 대상 디렉터리의 경로로 바꿉니다. 여기서는 파일을 블록 장치로 마운트하려면
-o
loop
옵션이 필요합니다.마운트 디렉토리에서
media.repo
파일을/etc/yum.repos.d/
디렉토리에 복사합니다. 이 디렉터리의 설정 파일에는 제대로 작동하려면 .repo 확장자가 있어야 합니다.cp
mount_dir/media.repo
/etc/yum.repos.d/new.repo
이렇게 하면 yum 리포지토리의 구성 파일이 생성됩니다. new.repo 를 파일 이름으로 교체합니다(예: rhel7.repo ).
Red Hat Enterprise Linux 설치 ISO를 가리키도록 새 구성 파일을 편집합니다.
/etc/yum.repos.d/new.repo파일에 다음 행을 추가합니다.
baseurl=file:///mount_dir
mount_dir 을 마운트 지점의 경로로 바꿉니다.
이전 단계에서 만든
/etc/yum.repos.d/new.repo
를 포함한 모든 yum 리포지토리를 업데이트합니다.루트
로서 다음을 입력합니다.yum
update
이렇게 하면 마운트된 ISO 이미지에서 제공하는 버전으로 시스템이 업그레이드됩니다.
성공적으로 업그레이드되면 ISO 이미지를 마운트 해제할 수 있습니다.
루트
로서 다음을 입력합니다.umount mount_dir
여기서 mount_dir 은 마운트 디렉터리의 경로입니다. 또한 첫 번째 단계에서 생성된 마운트 디렉토리를 제거할 수 있습니다.
루트
로서 다음을 입력합니다.rmdir mount_dir
이전에 생성된 구성 파일을 다른 설치 또는 업데이트에 사용하지 않는 경우 제거할 수 있습니다.
루트
로서 다음을 입력합니다.rm
/etc/yum.repos.d/new.repo
예 9.3. Red Hat Enterprise Linux 7.0에서 7.1으로 업그레이드
시스템의 최신 버전(예: rhel-server-7.1-x86_64-dvd.iso
)을 사용하여 ISO 이미지를 사용하여 시스템을 업그레이드해야 하는 경우 /media/rhel7/
와 같은 마운트 대상 디렉터리를 만듭니다. 루트
로서 ISO 이미지를 사용하여 디렉터리로 변경하고 다음을 입력합니다.
~]# mount -o looprhel-server-7.1-x86_64-dvd.iso
/media/rhel7/
그런 다음 마운트 디렉토리에서 media.repo
파일을 복사하여 이미지의 yum 리포지토리를 설정합니다.
~]# cp/media/rhel7/media.repo
/etc/yum.repos.d/rhel7.repo
yum이 마운트 지점을 리포지토리로 인식하도록 하려면 이전 단계에서 복사한 /etc/yum.repos.d/rhel7.repo
에 다음 행을 추가합니다.
baseurl=file:///media/rhel7/
이제 yum 리포지토리를 업데이트하면 rhel-server-7.1-x86_64-dvd.iso
에서 제공하는 버전으로 시스템이 업그레이드됩니다. root
로서 다음을 실행합니다.
~]# yum update
시스템이 성공적으로 업그레이드되면 이미지를 마운트 해제하고 대상 디렉터리 및 구성 파일을 제거할 수 있습니다.
~]# umount /media/rhel7/
~]# rmdir /media/rhel7/
~]# rm
/etc/yum.repos.d/rhel7.repo
9.2. 패키지 작업
yum을 사용하면 패키지 검색, 정보 보기, 설치 및 제거를 비롯하여 소프트웨어 패키지로 전체 작업 세트를 수행할 수 있습니다.
9.2.1. 패키지 검색
다음 명령을 사용하여 모든 RPM 패키지 이름, 설명 및 요약을 검색할 수 있습니다.
yum
search
term…
검색할 패키지 이름으로 용어를 바꿉니다.
예 9.4. 특정 문자열과 일치하는 패키지 검색
"vim", "gvim" 또는 "emacs"와 일치하는 모든 패키지를 나열하려면 다음을 입력합니다.
~]$ yum search vim gvim emacs Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager ============================= N/S matched: vim ============================== vim-X11.x86_64 : The VIM version of the vi editor for the X Window System vim-common.x86_64 : The common files needed by any version of the VIM editor [output truncated] ============================ N/S matched: emacs ============================= emacs.x86_64 : GNU Emacs text editor emacs-auctex.noarch : Enhanced TeX modes for Emacs [output truncated] Name and summary matches mostly, use "search all" for everything. Warning: No matches found for: gvim
yum search
명령은 이름을 모르는 패키지를 검색하는 데 유용하지만 관련 용어를 알고 있는 경우 유용합니다. 기본적으로 yum search
는 패키지 이름과 요약의 일치를 반환하므로 검색이 더 빨라집니다. yum search all
명령을 사용하여 더 완전하지만 느린 검색을 사용합니다.
결과 필터링
yum의 모든 list 명령을 사용하면 하나 이상의 glob 표현식 을 인수로 추가하여 결과를 필터링할 수 있습니다. glob 표현식은 와일드카드 문자 *
(모든 문자 하위 집합과 일치하도록 확장됨)과 (단일 문자와 일치하도록 확장됨) 중 하나 이상의 문자를 포함하는 일반적인 문자 문자열입니다.
glob 표현식을 yum
명령에 인수로 전달할 때 이스케이프해야 합니다. 그러지 않으면 Bash 쉘은 이러한 표현식을 경로 이름 확장 으로 해석하고 현재 디렉터리의 모든 파일을 yum
에 전달할 가능성이 있습니다. glob 표현식이 의도한 대로 yum
에 전달되도록 하려면 다음 방법 중 하나를 사용합니다.
- 뒤에 백슬래시 문자를 사용하여 와일드카드 문자 이스케이프
- 전체 글러그 표현식을 두 번 따옴표로 묶거나 한 번 따옴표로 묶습니다.
다음 섹션의 예제에서는 이 두 방법을 모두 사용하는 방법을 보여줍니다.
9.2.2. 패키지 나열
설치 및 사용 가능한 모든 패키지에 대한 정보를 나열하려면 쉘 프롬프트에서 다음을 입력합니다.
yum
list
all
삽입된 glob 표현식 과 일치하는 설치 및 사용 가능한 패키지를 나열하려면 다음 명령을 사용합니다.
yum list glob_expression…
예 9.5. ABRT 관련 패키지 나열
다양한 ABRT 애드온과 플러그인이 있는 패키지는 "abrt-addon-" 또는 "abrt-plugin-"로 시작합니다. 이러한 패키지를 나열하려면 쉘 프롬프트에서 다음 명령을 입력합니다. 와일드카드 문자를 백슬래시 문자로 이스케이프하는 방법에 유의하십시오.
~]$ yum list abrt-addon\* abrt-plugin\* Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Installed Packages abrt-addon-ccpp.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-kerneloops.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-pstoreoops.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-python.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-vmcore.x86_64 2.1.11-35.el7 @rhel-7-server-rpms abrt-addon-xorg.x86_64 2.1.11-35.el7 @rhel-7-server-rpms
시스템에 설치된 모든 패키지를 나열하려면 installed
키워드를 사용합니다. 출력의 오른쪽 열에는 패키지가 검색된 리포지토리가 나열됩니다.
yum list installed glob_expression…
예 9.6. 설치된 모든 versions of theoctets 패키지 나열
다음 예제에서는 "krb"로 시작하고 정확히 하나의 문자와 하이픈으로 시작하는 설치된 모든 패키지를 나열하는 방법을 보여줍니다. 이는 특정 구성 요소의 모든 버전을 숫자로 구분하므로 나열하려는 경우에 유용합니다. 적절한 처리를 위해 전체 글러그 표현식이 인용됩니다.
~]$ yum list installed "krb?-*" Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Installed Packages krb5-libs.x86_64 1.13.2-10.el7 @rhel-7-server-rpms
설치할 수 있는 활성화된 모든 리포지토리의 패키지를 모두 나열하려면 다음 형식으로 명령을 사용합니다.
yum list available glob_expression…
예 9.7. 사용 가능한 gstreamer 플러그인 나열
예를 들어 "gstreamer"가 포함된 이름이 있는 사용 가능한 패키지를 모두 나열한 다음 "plugin"을 실행하려면 다음 명령을 실행합니다.
~]$ yum list available gstreamer*plugin\* Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Available Packages gstreamer-plugins-bad-free.i686 0.10.23-20.el7 rhel-7-server-rpms gstreamer-plugins-base.i686 0.10.36-10.el7 rhel-7-server-rpms gstreamer-plugins-good.i686 0.10.31-11.el7 rhel-7-server-rpms gstreamer1-plugins-bad-free.i686 1.4.5-3.el7 rhel-7-server-rpms gstreamer1-plugins-base.i686 1.4.5-2.el7 rhel-7-server-rpms gstreamer1-plugins-base-devel.i686 1.4.5-2.el7 rhel-7-server-rpms gstreamer1-plugins-base-devel.x86_64 1.4.5-2.el7 rhel-7-server-rpms gstreamer1-plugins-good.i686 1.4.5-2.el7 rhel-7-server-rpms
리포지토리 나열
시스템에서 활성화된 각 리포지토리의 리포지토리 ID, 이름 및 수를 나열하려면 다음 명령을 사용하십시오.
yum
repolist
이러한 리포지토리에 대한 자세한 정보를 나열하려면 -v
옵션을 추가합니다. 이 옵션을 활성화하면 파일 이름, 전체 크기, 마지막 업데이트의 날짜, 나열된 각 리포지토리에 대한 기본 URL을 포함한 정보가 표시됩니다. 또는 동일한 출력을 생성하는 repoinfo
명령을 사용할 수 있습니다.
yum
repolist
-v
yum
repoinfo
활성화된 리포지토리와 비활성화된 리포지토리를 모두 나열하려면 다음 명령을 사용합니다. 사용 가능한 리포지토리를 표시하도록 출력 목록에 상태 열이 추가됩니다.
yum
repolist
all
비활성화
를 첫 번째 인수로 전달하면 명령 출력을 비활성화 리포지토리로 줄일 수 있습니다. 추가 사양의 경우 ID 또는 리포지토리 이름 또는 관련 glob_expressions를 인수로 전달할 수 있습니다. 리포지토리 ID 또는 이름과 삽입된 인수 사이에 정확히 일치하는 경우 이 리포지토리는 활성화 또는 비활성화 필터를 전달하지 않는 경우에도 나열됩니다.
9.2.3. 패키지 정보 표시
하나 이상의 패키지에 대한 정보를 표시하려면 다음 명령을 사용합니다(glob 표현식은 여기에서도 유효합니다).
yum info package_name…
package_name 을 패키지 이름으로 바꿉니다.
예 9.8. abrt 패키지에 대한 정보 표시
abrt 패키지에 대한 정보를 표시하려면 다음을 입력합니다.
~]$ yum info abrt Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Installed Packages Name : abrt Arch : x86_64 Version : 2.1.11 Release : 35.el7 Size : 2.3 M Repo : installed From repo : rhel-7-server-rpms Summary : Automatic bug detection and reporting tool URL : https://fedorahosted.org/abrt/ License : GPLv2+ Description : abrt is a tool to help users to detect defects in applications and : to create a bug report with all information needed by maintainer to fix : it. It uses plugin system to extend its functionality.
yum info package_name
명령은 rpm -q --info package_name
명령과 유사하지만 RPM 패키지가 설치된 yum 리포지토리의 이름(출력에서 리포지토리 :
줄 검색)을 추가로 제공합니다.
yumdb 사용
다음 명령을 사용하여 패키지에 대한 대체 및 유용한 정보를 위해 yum 데이터베이스를 쿼리할 수도 있습니다.
yumdb info package_name
이 명령은 패키지의 검사 합계(및 SHA-256 등 이를 생성하는 데 사용되는 알고리즘), 패키지를 설치하기 위해 호출된 명령줄에 제공된 명령(있는 경우) 및 시스템에 패키지가 설치된 이유를 나타내는 이유(사용자가 사용자가
설치되었음을 나타내고 depp는 종속성으로 제공됨)를 포함하여 패키지에 대한 추가 정보를 제공합니다.
예 9.9. yum package에 대한 정보를 위해 yumdb 쿼리
yum 패키지에 대한 추가 정보를 표시하려면 다음을 입력합니다.
~]$ yumdb info yum Loaded plugins: langpacks, product-id yum-3.4.3-132.el7.noarch changed_by = 1000 checksum_data = a9d0510e2ff0d04d04476c693c0313a11379053928efd29561f9a837b3d9eb02 checksum_type = sha256 command_line = upgrade from_repo = rhel-7-server-rpms from_repo_revision = 1449144806 from_repo_timestamp = 1449144805 installed_by = 4294967295 origin_url = https://cdn.redhat.com/content/dist/rhel/server/7/7Server/x86_64/os/Packages/yum-3.4.3-132.el7.noarch.rpm reason = user releasever = 7Server var_uuid = 147a7d49-b60a-429f-8d8f-3edb6ce6f4a1
yumdb
명령에 대한 자세한 내용은 yumdb(8) 매뉴얼 페이지를 참조하십시오.
9.2.4. 패키지 설치
단일 패키지 및 모든 패키지가 설치되지 않은 종속 항목을 설치하려면 root
로 다음 형식으로 명령을 입력합니다.
yum install package_name
해당 이름을 인수로 추가하여 여러 패키지를 동시에 설치할 수도 있습니다. 이 작업을 수행하려면 root
로 입력합니다.
yum install package_name package_name…
AMD64 또는 Intel 64 시스템과 같은 멀티lib 시스템에 패키지를 설치하는 경우 패키지 이름에 .arch 를 추가하여 패키지의 아키텍처를 지정할 수 있습니다.
yum install package_name.arch
예 9.10. multilib 시스템에 패키지 설치
i686
아키텍처에 대한 sqlite 패키지를 설치하려면 다음을 입력합니다.
~]# yum install sqlite.i686
glob 표현식을 사용하여 유사한 여러 개의 이름이 지정된 패키지를 빠르게 설치할 수 있습니다. root
로 실행:
yum install glob_expression…
예 9.11. 모든 무의식 플러그인 설치
전역 표현식은 비슷한 이름으로 여러 패키지를 설치하려는 경우에 유용합니다. 모든 무의식 플러그인을 설치하려면 다음 형식으로 명령을 사용합니다.
~]# yum install audacious-plugins-\*
패키지 이름 및 와일드카드 식 외에도 yum install
에 파일 이름을 제공할 수도 있습니다. 설치하려는 바이너리의 이름을 알고 있지만 패키지 이름은 아닌 경우 yum install
경로 이름을 지정할 수 있습니다. 루트
로서 다음을 입력합니다.
yum install /usr/sbin/named
그런 다음 yum은 패키지 목록을 검색하고 /usr/sbin/named
(있는 경우)를 제공하고 설치 여부를 묻는 메시지를 표시합니다.
위의 예에서 볼 수 있듯이 yum install
명령에는 엄격하게 정의된 인수가 필요하지 않습니다. 이를 통해 다양한 패키지 이름 및 글러그 표현식을 처리할 수 있으므로 사용자가 더 쉽게 설치할 수 있습니다. 반면 yum은 특히 많은 수의 패키지를 지정하는 경우 yum 이 입력을 올바르게 구문 분석할 때까지 약간의 시간이 걸립니다. 패키지 검색을 최적화하려면 다음 명령을 사용하여 인수를 구문 분석하는 방법을 명시적으로 정의할 수 있습니다.
yum install-n
name
yum install-na
name.architecture
yum install-nevra
name-epoch:version-release.architecture
install-n
를 사용하여yum 은 이름을 패키지의 정확한 이름으로 해석합니다. install-na
명령은 yum 에 패키지 이름과 아키텍처가 점 문자로 구분되어 있음을 알려줍니다. install-nevra
를 사용하면yum 은 name-epoch:version-release.architecture 형식의 인수를 예상합니다. 마찬가지로 제거할 패키지를 검색할 때 yum remove-n
,yum remove-na
, yum remove-nevra
를 사용할 수 있습니다.
이름이 지정된
바이너리가 포함된 패키지를 설치하려고 하지만 파일이 설치된 bin/
또는 sbin/
디렉터리에 대해서는 yum provides
명령을 glob 표현식과 함께 사용하십시오.
~]# yum provides "*bin/named" Loaded plugins: langpacks, product-id, search-disabled-repos, subscription- : manager 32:bind-9.9.4-14.el7.x86_64 : The Berkeley Internet Name Domain (BIND) DNS : (Domain Name System) server Repo : rhel-7-server-rpms Matched from: Filename : /usr/sbin/named
yum은 "*/file_name"
은 file_name 이 포함된 패키지를 찾는 데 유용한 방법입니다.
예 9.12. 설치 프로세스
다음 예제는 yum 을 사용하여 설치 개요를 보여줍니다. 최신 버전의 httpd 패키지를 다운로드하여 설치하려면 root
로 실행합니다.
~]# yum install httpd Loaded plugins: langpacks, product-id, subscription-manager Resolving Dependencies --> Running transaction check ---> Package httpd.x86_64 0:2.4.6-12.el7 will be updated ---> Package httpd.x86_64 0:2.4.6-13.el7 will be an update --> Processing Dependency: 2.4.6-13.el7 for package: httpd-2.4.6-13.el7.x86_64 --> Running transaction check ---> Package httpd-tools.x86_64 0:2.4.6-12.el7 will be updated ---> Package httpd-tools.x86_64 0:2.4.6-13.el7 will be an update --> Finished Dependency Resolution Dependencies Resolved
위의 명령을 실행한 후 yum 은 필요한 플러그인을 로드하고 트랜잭션 검사를 실행합니다. 이 경우 httpd 가 이미 설치되어 있습니다. 설치된 패키지가 현재 사용 가능한 최신 버전보다 오래되었으므로 업데이트됩니다. httpd가 사용하는 httpd-tools 패키지에도 동일하게 적용됩니다. 그러면 트랜잭션 요약이 표시됩니다.
================================================================================ Package Arch Version Repository Size ================================================================================ Updating: httpd x86_64 2.4.6-13.el7 rhel-x86_64-server-7 1.2 M Updating for dependencies: httpd-tools x86_64 2.4.6-13.el7 rhel-x86_64-server-7 77 k Transaction Summary ================================================================================ Upgrade 1 Package (+1 Dependent package) Total size: 1.2 M Is this ok [y/d/N]:
이 단계에서 yum 은 설치를 확인하라는 메시지를 표시합니다. y
(yes) 및 N
(no) 옵션 외에도 d
(download only)를 선택하여 패키지를 다운로드하지만 직접 설치할 수는 없습니다. y
를 선택하면 설치가 성공적으로 완료될 때까지 다음 메시지로 진행됩니다.
Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction Updating : httpd-tools-2.4.6-13.el7.x86_64 1/4 Updating : httpd-2.4.6-13.el7.x86_64 2/4 Cleanup : httpd-2.4.6-12.el7.x86_64 3/4 Cleanup : httpd-tools-2.4.6-12.el7.x86_64 4/4 Verifying : httpd-2.4.6-13.el7.x86_64 1/4 Verifying : httpd-tools-2.4.6-13.el7.x86_64 2/4 Verifying : httpd-tools-2.4.6-12.el7.x86_64 3/4 Verifying : httpd-2.4.6-12.el7.x86_64 4/4 Updated: httpd.x86_64 0:2.4.6-13.el7 Dependency Updated: httpd-tools.x86_64 0:2.4.6-13.el7 Complete!
시스템에서 로컬 디렉터리에서 이전에 다운로드한 패키지를 설치하려면 다음 명령을 사용합니다.
yum localinstall
path
경로를 설치하려는 패키지의 경로로 바꿉니다.
9.2.5. 패키지 다운로드
예 9.12. “설치 프로세스” 에 표시된 대로 설치 프로세스의 특정 시점에서 다음 메시지와 함께 설치를 확인하라는 메시지가 표시됩니다.
... Total size: 1.2 M Is this ok [y/d/N]: ...
d
옵션을 사용하면 yum이 패키지를 즉시 설치하지 않고 다운로드합니다. yum localinstall
명령을 사용하여 나중에 오프라인에서 이러한 패키지를 설치하거나 다른 장치와 공유할 수 있습니다. 다운로드한 패키지는 기본적으로 /var/cache/yum/$basearch/$releasever/packages/
.에 의해 캐시 디렉터리의 하위 디렉터리 중 하나에 저장됩니다. 다운로드는 다른 작업에 병렬로 yum 을 사용할 수 있도록 백그라운드 모드로 진행됩니다.
9.2.6. 패키지 제거
패키지 설치와 마찬가지로 yum을 사용하면 해당 패키지를 제거할 수 있습니다. 특정 패키지와 종속된 패키지를 제거하려면 root
로 다음 명령을 실행합니다.
yum remove package_name…
여러 패키지를 설치할 때 명령에 패키지 이름을 추가하여 한 번에 여러 패키지를 제거할 수 있습니다.
예 9.13. 여러 패키지 제거
totem 을 제거하려면 쉘 프롬프트에서 다음을 입력합니다.
~]# yum remove totem
install
과 유사하게remove
는 다음 인수를 사용할 수 있습니다.
- 패키지 이름
- glob 표현식
- 파일 목록
- 패키지는 제공
yum은 패키지가 종속된 패키지도 제거하지 않고 패키지를 제거할 수 없습니다. RPM 에서만 수행할 수 있는 이러한 유형의 작업은 권장되지 않으며 시스템이 작동하지 않거나 애플리케이션이 제대로 작동하지 않거나 중단될 수 있습니다.
9.3. 패키지 그룹 작업
패키지 그룹은 시스템 도구 또는 sound 및 video과 같은 공통 목적을 제공하는 패키지 컬렉션입니다. 패키지 그룹을 설치하면 시간이 크게 절약되는 종속 패키지 세트를 가져옵니다. yum groups
명령은 yum의 패키지 그룹에서 작동하는 모든 작업을 다루는 최상위 명령입니다.
9.3.1. 패키지 그룹 나열
요약
옵션은 설치된 그룹, 사용 가능한 그룹, 사용 가능한 환경 그룹 및 설치 및 사용 가능한 언어 그룹의 수를 확인하는 데 사용됩니다.
yum groups
summary
예 9.14. yum groups summary의 출력 예
~]$yum
groups
summary
Loaded plugins: langpacks, product-id, subscription-manager Available Environment Groups: 12 Installed Groups: 10 Available Groups: 12
yum 리포지토리의 모든 패키지 그룹을 나열하려면 list
옵션을 추가합니다. 그룹 이름으로 명령 출력을 필터링할 수 있습니다.
yum group list glob_expression…
표시되지 않는 사용자 표시로 표시되지 않는 그룹도 나열하도록 숨겨진
, 그룹 ID를 나열하는 ID를 포함하여 이 명령에 몇 가지 선택적 인수를 전달할 수 있습니다.
언어
,환경
,설치
또는 사용 가능한
옵션을 추가하여 명령 출력을 특정 그룹 유형으로 줄일 수 있습니다.
특정 그룹에 포함된 필수 및 선택적 패키지를 나열하려면 다음 명령을 사용합니다.
yum group info glob_expression…
예 9.15. LibreOffice 패키지 그룹에 대한 정보 보기
~]$ yum group info LibreOffice
Loaded plugins: langpacks, product-id, subscription-manager
Group: LibreOffice
Group-Id: libreoffice
Description: LibreOffice Productivity Suite
Mandatory Packages:
=libreoffice-calc
libreoffice-draw
-libreoffice-emailmerge
libreoffice-graphicfilter
=libreoffice-impress
=libreoffice-math
=libreoffice-writer
+libreoffice-xsltfilter
Optional Packages:
libreoffice-base
libreoffice-pyuno
위의 예에서 볼 수 있듯이 패키지 그룹에 포함된 패키지는 다음 기호로 표시된 것과 다른 상태를 가질 수 있습니다.
-
"
-
" - 패키지가 설치되지 않으며 패키지 그룹의 일부로 설치되지 않습니다. -
"
+ " - 패키지가 설치되지 않지만 다음yum upgrade
또는yum group 업그레이드에
설치됩니다. -
"
=
" - 패키지가 설치되고 패키지 그룹의 일부로 설치되었습니다. -
기호 없음 - 패키지가 설치되어 있지만 패키지 그룹 외부에 설치되었습니다. 즉,
yum group remove
는 이러한 패키지를 제거하지 않습니다.
이러한 차이점은 group_command
구성 매개변수가 기본 설정인 오브젝트
로 설정된 경우에만 수행됩니다. yum에서 패키지가 그룹의 일부로 설치된 경우 추적하지 않도록 하려면 이 매개변수를 다른 값으로 설정합니다. 그러면 "="패키지와 동등한기호 없음" 패키지가 없습니다.
yum group mark
명령을 사용하여 위의 패키지 상태를 변경할 수 있습니다. 예를 들어 yum group mark 패키지
는 지정된 패키지를 지정된 그룹의 멤버로 표시합니다. 그룹 업데이트에 새 패키지가 설치되지 않도록 하려면 yum group mark blacklist
를 사용합니다.
의 기능에 대한 자세한 내용은 yum(8) man 페이지를 참조하십시오.
yum
group mark
@^ 접두사를 사용하는 환경 그룹을 식별할 수 있으며 패키지 그룹은 @ 으로 표시할 수 있습니다. yum
group
list
,info
,install
, install , pass @group_name 을 전달하여 둘 다 포함할 환경 그룹을 지정하는 @^group_name 또는 group_name 을 지정합니다.
9.3.2. 패키지 그룹 설치
각 패키지 그룹에는 이름과 그룹 ID(groupid)가 있습니다. 모든 패키지 그룹의 이름과 괄호에 표시되는 그룹 ID를 나열하려면 다음을 입력합니다.
yum group list ids
예 9.16. 패키지 그룹의 이름 및 groupid 찾기
패키지 그룹의 이름 또는 ID를 찾으려면 다음을 입력합니다.
~]$ yum group list ids kde\* Available environment groups: KDE Plasma Workspaces (kde-desktop-environment) Done
일부 그룹은 구성된 리포지토리의 설정으로 숨겨져 있습니다. 예를 들어 서버에서 숨겨진 명령 옵션을 사용하여 숨겨진
그룹을 나열하십시오.
~]$ yum group list hidden ids kde\* Loaded plugins: product-id, subscription-manager Available Groups: KDE (kde-desktop) Done
groupid 부분이 없는 전체 그룹 이름을 그룹 install 명령에 전달하여 패키지 그룹을 설치할
수 있습니다. 루트
로서 다음을 입력합니다.
yum
group install
"group name"
groupid도 설치할 수 있습니다. root
로서 다음 명령을 실행합니다.
yum
group install
groupid
@ 기호로 앞에 @ 기호를 추가하면 groupid 또는 quoted 그룹 이름을 install
명령에 전달할 수 있습니다.이 명령을 사용하면 yum
에 그룹 install
임을 알 수 있습니다. 루트
로서 다음을 입력합니다.
yum
install
@group
group 을 groupid 또는 quoted 그룹 이름으로 바꿉니다. 환경 그룹에도 동일한 논리가 적용됩니다.
yum install @^group
예 9.17. managers 데스크탑 그룹 설치의 4가지와 동일한 방법
앞에서 언급했듯이 네 가지 대안을 사용할 수 있지만 패키지 그룹을 설치하는 것과 동등한 방법을 사용할 수 있습니다. rhcos Desktop의 경우 명령은 다음과 같습니다.
~]# yum group install "KDE Desktop" ~]# yum group install kde-desktop ~]# yum install @"KDE Desktop" ~]# yum install @kde-desktop
9.3.3. 패키지 그룹 제거
패키지 그룹 이름 또는 해당 id를 사용하여 install
구문과 유사한 구문을 사용하여 패키지 그룹을 제거할 수 있습니다. 루트
로서 다음을 입력합니다.
yum group remove group_name
yum
group remove
groupid
또한 @-symbol로 앞에 붙은 경우 groupid 또는 quoted name을 remove
명령에 전달할 수 있습니다. 이 명령은 yum에 그룹 remove
임을 알립니다. 루트
로서 다음을 입력합니다.
yum
remove
@group
group 을 groupid 또는 quoted 그룹 이름으로 바꿉니다. 또한 환경 그룹을 교체할 수 있습니다.
yum remove @^group
예 9.18. EgressIP Desktop
그룹을 제거하는 4 가지 동일한 방법
install과 마찬가지로 4 개의 대안을 사용할 수 있지만 패키지 그룹을 제거하는 것과 동등한 방법을 사용할 수 있습니다. rhcos Desktop의 경우 명령은 다음과 같습니다.
~]# yum group remove "KDE Desktop" ~]# yum group remove kde-desktop ~]# yum remove @"KDE Desktop" ~]# yum remove @kde-desktop
9.4. 트랜잭션 내역 작업
yum history
명령을 사용하면 사용자가 yum 트랜잭션의 타임라인, 날짜 및 시간, 이러한 트랜잭션이 성공 또는 중단되었는지 여부, 트랜잭션 간에 RPM 데이터베이스가 변경되었는지 여부를 확인할 수 있습니다. 또한 이 명령을 사용하여 특정 트랜잭션을 취소하거나 다시 실행할 수 있습니다. 모든 기록 데이터는 /var/lib/yum/history/
디렉터리 의 기록 DB에 저장됩니다.
9.4.1. 트랜잭션 나열
20개의 최근 트랜잭션 목록을 root
로 표시하려면 추가 인수 없이 yum history
를 실행하거나 쉘 프롬프트에서 다음을 입력합니다.
yum
history
list
모든 트랜잭션을 표시하려면 all
키워드를 추가합니다.
yum
history
list
all
지정된 범위의 트랜잭션만 표시하려면 다음 양식에서 명령을 사용합니다.
yum history list start_id..end_id
특정 패키지 또는 패키지와 관련된 트랜잭션만 나열할 수도 있습니다. 이렇게 하려면 패키지 이름 또는 glob 표현식과 함께 명령을 사용합니다.
yum history list glob_expression…
예 9.19. 가장 오래된 5개의 트랜잭션 나열
yum history list
의 출력에서 가장 최근 트랜잭션은 목록 상단에 표시됩니다. 기록 데이터 베이스에 저장된 5개의 가장 오래된 트랜잭션에 대한 정보를 표시하려면 다음을 입력합니다.
~]# yum history list 1..5 Loaded plugins: langpacks, product-id, subscription-manager ID | Login user | Date and time | Action(s) | Altered ------------------------------------------------------------------------------- 5 | User <user> | 2013-07-29 15:33 | Install | 1 4 | User <user> | 2013-07-21 15:10 | Install | 1 3 | User <user> | 2013-07-16 15:27 | I, U | 73 2 | System <unset> | 2013-07-16 15:19 | Update | 1 1 | System <unset> | 2013-07-16 14:38 | Install | 1106 history list
모든 형태의 yum history list
명령은 다음 열로 구성된 각 행이 있는 테이블 형식 출력을 생성합니다.
-
특정
트랜잭션을 식별하는 정수 값입니다.An integer value that identifies a particular transaction. -
login
사용자
- 트랜잭션을 시작하는 데 로그인 세션이 사용된 사용자의 이름입니다. 이 정보는 일반적으로전체 이름 <username>
형식으로 제공됩니다. 사용자가 발행하지 않은 트랜잭션(예: 자동 시스템 업데이트)의 경우시스템 <unset>
이 대신 사용됩니다. -
날짜 및 시간
- 트랜잭션이 실행된 날짜 및 시간입니다. -
작업 - 표 9.1. “Action(s) 필드의 가능한 값” 에
설명된 대로 트랜잭션 중에 수행된 작업 목록입니다. -
변경된
사항 - 트랜잭션의 영향을 받는 패키지 수, 표 9.2. “대체 필드의 가능한 값” 에 설명된 대로 추가 정보가 올 수 있습니다.
동작 | 약어 | 설명 |
---|---|---|
|
| 하나 이상의 패키지가 이전 버전으로 다운그레이드되었습니다. |
|
| 하나 이상의 패키지가 제거되었습니다. |
|
| 새 패키지가 하나 이상 설치되어 있어야 합니다. |
|
| 하나 이상의 패키지가 더 이상 사용되지 않음으로 표시되었습니다. |
|
| 하나 이상의 패키지가 다시 설치되어 있어야 합니다. |
|
| 하나 이상의 패키지가 최신 버전으로 업데이트되었습니다. |
symbol | 설명 |
---|---|
|
트랜잭션이 완료되기 전에 |
|
트랜잭션이 완료되면 |
| 트랜잭션이 완료되지 못했습니다. |
| 트랜잭션이 성공적으로 완료되었지만 yum은 0이 아닌 종료 코드를 반환했습니다. |
| 트랜잭션이 성공적으로 완료되었지만 오류 또는 경고가 표시되었습니다. |
|
트랜잭션이 성공적으로 완료되었지만 |
|
트랜잭션이 성공적으로 완료되었지만 |
현재 사용된 rpmdb
또는 yumdb
데이터베이스와 설치된 패키지의 rpmdb
또는 yumdb
데이터베이스 내용을 동기화하려면 다음을 입력합니다.
yum
history
sync
현재 사용된 기록 데이터베이스에 대한 몇 가지 전체 통계를 표시하려면 다음 명령을 사용합니다.
yum
history
stats
예 9.20. yum 기록 통계의 출력 예
~]# yum history stats Loaded plugins: langpacks, product-id, subscription-manager File : //var/lib/yum/history/history-2012-08-15.sqlite Size : 2,766,848 Transactions: 41 Begin time : Wed Aug 15 16:18:25 2012 End time : Wed Feb 27 14:52:30 2013 Counts : NEVRAC : 2,204 NEVRA : 2,204 NA : 1,759 NEVR : 2,204 rpm DB : 2,204 yum DB : 2,204 history stats
또한 yum을 사용하면 모든 과거의 트랜잭션에 대한 요약을 표시할 수 있습니다. 이렇게 하려면 root
로 다음 형태로 명령을 실행합니다.
yum
history
summary
지정된 범위의 트랜잭션만 표시하려면 다음을 입력합니다.
yum history summary start_id..end_id
yum history list
명령과 마찬가지로 패키지 이름 또는 glob 표현식을 제공하여 특정 패키지 또는 패키지와 관련된 트랜잭션 요약을 표시할 수도 있습니다.
yum history summary glob_expression…
예 9.21. 최신 5개의 트랜잭션 요약
~]# yum history summary 1..5 Loaded plugins: langpacks, product-id, subscription-manager Login user | Time | Action(s) | Altered ------------------------------------------------------------------------------- Jaromir ... <jhradilek> | Last day | Install | 1 Jaromir ... <jhradilek> | Last week | Install | 1 Jaromir ... <jhradilek> | Last 2 weeks | I, U | 73 System <unset> | Last 2 weeks | I, U | 1107 history summary
모든 형태의 yum history summary
명령은 yum history list
의 출력과 유사한 단순화된 테이블 출력을 생성합니다.
위에 표시된 대로 yum history list
및 yum history summary
은 모두 트랜잭션을 지향하지만 지정된 패키지 또는 패키지와 관련된 트랜잭션만 표시할 수 있지만 패키지 버전과 같은 중요한 세부 사항은 표시되지 않습니다. 패키지 관점에서 트랜잭션을 나열하려면 root
로 다음 명령을 실행합니다.
yum history package-list glob_expression…
예 9.22. 패키지 기록 추적
예를 들어 subscription-manager 및 관련 패키지의 기록을 추적하려면 쉘 프롬프트에서 다음을 입력합니다.
~]# yum history package-list subscription-manager\* Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager ID | Action(s) | Package ------------------------------------------------------------------------------- 2 | Updated | subscription-manager-1.13.22-1.el7.x86_64 EE 2 | Update | 1.15.9-15.el7.x86_64 EE 2 | Obsoleted | subscription-manager-firstboot-1.13.22-1.el7.x86_64 EE 2 | Updated | subscription-manager-gui-1.13.22-1.el7.x86_64 EE 2 | Update | 1.15.9-15.el7.x86_64 EE 2 | Obsoleting | subscription-manager-initial-setup-addon-1.15.9-15.el7.x86_64 EE 1 | Install | subscription-manager-1.13.22-1.el7.x86_64 1 | Install | subscription-manager-firstboot-1.13.22-1.el7.x86_64 1 | Install | subscription-manager-gui-1.13.22-1.el7.x86_64 history package-list
이 예에서는 초기 시스템 설치 중에 3개의 패키지( subscription-manager , subscription-manager -firstboot , subscription-manager-firstboot, subscription-manager-gui )가 설치되었습니다. 세 번째 트랜잭션에서는 이러한 패키지가 1.10.11 버전에서 1.10.17 버전으로 업데이트되었습니다.
9.4.2. 트랜잭션 검사
단일 트랜잭션 요약을 root
로 표시하려면 다음 형식으로 yum history summary
명령을 사용합니다.
yum
history
summary
id
여기서 id 는 트랜잭션의 ID입니다.
특정 트랜잭션 또는 트랜잭션을 보다 자세히 검사하려면 root
로 다음 명령을 실행하십시오.
yum
history
info
id…
id 인수는 선택 사항이며 생략하면 yum은 마지막 트랜잭션을 자동으로 사용합니다. 둘 이상의 트랜잭션을 지정할 때 범위를 사용할 수도 있습니다.
yum history info start_id..end_id
예 9.23. yum history info의 출력 예
다음은 두 개의 트랜잭션에 대한 샘플 출력이며 각각 하나의 새 패키지를 설치합니다.
~]# yum history info 4..5 Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager Transaction ID : 4..5 Begin time : Mon Dec 7 16:51:07 2015 Begin rpmdb : 1252:d2b62b7b5768e855723954852fd7e55f641fbad9 End time : 17:18:49 2015 (27 minutes) End rpmdb : 1253:cf8449dc4c53fc0cbc0a4c48e496a6c50f3d43c5 User : Maxim Svistunov <msvistun> Return-Code : Success Command Line : install tigervnc-server.x86_64 Command Line : reinstall tigervnc-server Transaction performed with: Installed rpm-4.11.3-17.el7.x86_64 @rhel-7-server-rpms Installed subscription-manager-1.15.9-15.el7.x86_64 @rhel-7-server-rpms Installed yum-3.4.3-132.el7.noarch @rhel-7-server-rpms Packages Altered: Reinstall tigervnc-server-1.3.1-3.el7.x86_64 @rhel-7-server-rpms history info
트랜잭션 시 사용된 구성 옵션 또는 리포지토리 및 특정 패키지가 설치된 이유와 같은 추가 정보를 볼 수도 있습니다. 특정 트랜잭션에 사용할 수 있는 추가 정보를 확인하려면 루트로
쉘 프롬프트에 다음을 입력합니다.
yum
history
addon-info
id
yum history info
와 유사하게 id 가 제공되지 않으면 yum은 latest 트랜잭션을 자동으로 사용합니다. 최신 트랜잭션을 참조하는 또 다른 방법은 마지막
키워드를 사용하는 것입니다.
yum
history
addon-info
last
예 9.24. yum
history
addon-info
의 출력 예
기록의 네 번째 트랜잭션의 경우 yum history addon-info
명령은 다음 출력을 제공합니다.
~]# yum history addon-info 4 Loaded plugins: langpacks, product-id, subscription-manager Transaction ID: 4 Available additional history information: config-main config-repos saved_tx history addon-info
yum
history
addon-info
명령의 출력에서 다음 세 가지 유형의 정보를 사용할 수 있습니다.
-
config-main
- 트랜잭션 중에 사용 중인 글로벌 yum 옵션. 글로벌 옵션을 변경하는 방법에 대한 자세한 내용은 9.5.1절. “[main] 옵션 설정” 을 참조하십시오. -
config-repos
- 개별 yum 리포지토리에 대한 옵션 개별 리포지토리의 옵션을 변경하는 방법에 대한 자세한 내용은 9.5.2절. “[repository] 옵션 설정” 을 참조하십시오. -
saved_tx
- 다른 시스템에서 트랜잭션을 반복하기 위해yum load-
hiera 명령에서 사용할 수 있는 데이터입니다(아래 참조).
선택한 유형의 추가 정보를 표시하려면 root
로 다음 명령을 실행합니다.
yum
history
addon-info
id information
9.4.3. 트랜잭션 복원 및 종료
트랜잭션 내역을 검토하는 것 외에도 yum history
명령은 선택한 트랜잭션을 되돌리거나 반복할 수 있는 수단을 제공합니다. 트랜잭션을 되돌리려면 쉘 프롬프트에서 root
로 다음을 입력합니다.
yum
history
undo
id
특정 트랜잭션을 root
로 반복하려면 다음 명령을 실행합니다.
yum
history
redo
id
두 명령 모두 마지막
키워드를 수락하여 최신 트랜잭션을 취소하거나 반복합니다.
yum history undo
및 yum history 명령을
둘 다 트랜잭션 중에 수행된 단계를 되돌리거나 반복합니다. 트랜잭션이 새 패키지를 설치한 경우 yum history undo
명령에서 해당 패키지를 제거하고 트랜잭션이 패키지를 제거한 경우 명령이 다시 설치합니다. 또한 이 명령은 이러한 이전 패키지를 계속 사용할 수 있는 경우 업데이트된 모든 패키지를 이전 버전으로 다운그레이드하려고 합니다.
동일한 시스템을 여러 개 관리할 때 yum을 사용하면 해당 시스템에서 트랜잭션을 수행하여 트랜잭션 세부 사항을 파일에 저장하고 테스트 기간 후에 나머지 시스템에서 동일한 트랜잭션을 반복할 수 있습니다. 트랜잭션 세부 정보를 파일에 저장하려면 쉘 프롬프트에서 root
로 다음을 입력합니다.
yum -q history addon-info id saved_tx > file_name
이 파일을 대상 시스템에 복사하면 root
로 다음 명령을 사용하여 트랜잭션을 반복할 수 있습니다.
yum load-transaction file_name
누락된 패키지 또는 rpmdb 버전 을 무시하도록 로드 비트랜젝션
을 구성할 수 있습니다. 이러한 구성 옵션에 대한 자세한 내용은 yum.conf
(5) 매뉴얼 페이지를 참조하십시오.
9.4.4. 새 트랜잭션 내역 시작
yum은 트랜잭션 기록을 단일 SQLite 데이터베이스 파일에 저장합니다. 새 트랜잭션 기록을 시작하려면 root
로 다음 명령을 실행합니다.
yum
history
new
그러면 /var/lib/yum/history/
디렉토리에 비어 있는 새 데이터베이스 파일이 생성됩니다. 이전 트랜잭션 기록은 유지되지만 최신 데이터베이스 파일이 디렉터리에 있는 동안에는 액세스할 수 없습니다.
9.5. YUM 및 YUM 리포지토리 구성
전문 지식을 확장하려면 Red Hat System Administration III(RH254) 및 RHCSASECRET Track(RH199) 교육 과정에도 관심이 있을 수 있습니다.
yum 및 관련 유틸리티의 구성 정보는 /etc/yum.conf
에 있습니다. 이 파일에는 전역 효과가 있는 yum 옵션을 설정할 수 있는 필수 [main]
섹션이 하나 이상 포함되어 있으며 리포지토리별 옵션을 설정할 수 있는 하나 이상의 [repository]
섹션도 포함할 수 있습니다. 그러나 /etc/yum
파일에 정의하는 것이 좋습니다. .repo
s.d/ 디렉토리에 개별 리포지토리를 new 또는 기존 .repo/etc/yum.conf
파일의 개별 [repository]
섹션에 정의된 값은 [main]
섹션에 설정된 값을 재정의합니다.
이 섹션에서는 다음을 수행하는 방법을 보여줍니다.
-
/etc/yum.conf
설정 파일의[main]
섹션을 편집하여 글로벌 yum 옵션을 설정합니다. -
/etc/yum.conf
의[repository]
섹션 및 /etc/yum.repo
s.d/ 디렉토리에 있는 .repo 파일을 편집하여 개별 리포지토리에 대한 옵션을 설정합니다.
-
동적 버전 및 아키텍처 값이 올바르게 처리되도록
/etc/yum.conf
의 yum 변수와/etc/yum.repos.d/
디렉토리에 있는 파일을 사용합니다. - 명령줄에서 yum 리포지토리를 추가, 활성화 및 비활성화합니다.
- 사용자 지정 yum 리포지토리를 설정합니다.
9.5.1. [main] 옵션 설정
/etc/yum.conf
설정 파일에는 정확히 하나의 [main]
섹션이 포함되어 있으며 이 섹션의 일부 키-값 쌍은 yum의 작동 방식에 영향을 미치므로 yum이 리포지토리를 처리하는 방식에 영향을 미칩니다.
/etc/yum.conf
의 [main]
섹션 제목 아래에 많은 추가 옵션을 추가할 수 있습니다.
샘플 /etc/yum.conf
설정 파일은 다음과 같습니다.
[main] cachedir=/var/cache/yum/$basearch/$releasever keepcache=0 debuglevel=2 logfile=/var/log/yum.log exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 installonly_limit=3 [comments abridged] # PUT YOUR REPOS HERE OR IN separate files named file.repo # in /etc/yum.repos.d
다음은 [main]
섹션에서 가장 일반적으로 사용되는 옵션입니다.
assumeyes
=valueassumeyes
옵션은 yum이 중요 작업의 확인을 요청하는지 여부를 결정합니다. 값을 다음 중 하나로 바꿉니다.0
(기본값) - yum은 수행하는 중요한 작업을 확인하라는 메시지를 표시합니다.1
- 중요한yum
작업을 확인하라는 메시지가 표시되지 마십시오.yes=1
이 설정된 경우 yum은 명령줄 옵션-y
및--assumeyes
와 동일한 방식으로 작동합니다.cachedir
=directoryyum이 캐시 및 데이터베이스 파일을 저장하는 디렉터리를 설정하려면 이 옵션을 사용합니다. 디렉터리 를 디렉터리의 절대 경로로 바꿉니다. 기본적으로 yum의 캐시 디렉토리는
/var/cache/yum/$basearch/$releasever/
입니다.$basearch
및$releasever
yum 변수에 대한 설명은 9.5.3절. “YUM 변수 사용” 을 참조하십시오.debuglevel
=value-
이 옵션은 yum에서 생성한 디버깅 출력에 대한 세부 정보를 지정합니다. 여기서 value 는
1
에서10
사이의 정수입니다. 더 높은debuglevel
값을 설정하면 yum은 더 자세한 디버깅 출력을 표시합니다.debuglevel=2
는 기본값이지만debuglevel=0
은 디버깅 출력을 비활성화합니다. exactarch
=value이 옵션을 사용하면 이미 설치된 패키지를 업데이트할 때 정확한 아키텍처를 고려하도록 yum을 설정할 수 있습니다. 값을 다음과 같이 바꿉니다.
0
- 패키지를 업데이트할 때 정확한 아키텍처를 고려하지 마십시오.1
(기본값) - 패키지를 업데이트할 때 정확한 아키텍처를 고려하십시오. 이 설정을 사용하면 yum은 64비트 아키텍처가 있는 시스템에 이미 설치된 패키지를 업데이트하기 위해 32비트 아키텍처용 패키지를 설치하지 않습니다.exclude
=package_name more_package_names-
exclude
옵션을 사용하면 설치 또는 시스템 업데이트 중에 키워드로 패키지를 제외할 수 있습니다. 제외에 대한 여러 패키지를 나열하면 공백으로 구분된 패키지 목록을 인용하여 수행할 수 있습니다. 와일드카드를 사용하는 쉘 와일드카드 표현식(예:*
및?
)이 허용됩니다. gpgcheck
=valuegpgcheck
옵션을 사용하여 yum이 패키지에서 GPG 서명 검사를 수행해야 하는지 지정합니다. 값을 다음과 같이 바꿉니다.0
- 로컬 패키지 설치를 포함하여 모든 리포지토리의 패키지에서 GPG 서명 확인을 비활성화합니다.1
(기본값) - 로컬 패키지 설치를 포함하여 모든 리포지토리의 모든 패키지에서 GPG 서명을 확인할 수 있습니다.gpgcheck
가 활성화되면 모든 패키지의 서명이 확인됩니다.이 옵션이
/etc/yum.conf
파일의[main]
섹션에 설정된 경우 모든 리포지토리에 대해 GPG-checking 규칙을 설정합니다. 그러나 개별 리포지토리에 대해gpgcheck=값을
설정할 수도 있습니다. 즉, 다른 리포지토리에서 비활성화하는 동안 한 리포지토리에서 GPG 검사를 활성화할 수 있습니다. 해당.repo
파일에 개별 리포지토리에 대한gpgcheck=값을
설정하면/etc/yum.conf
에 있는 경우 기본값이 재정의됩니다.group_command
=valuegroup_command
옵션을 사용하여yum group install
,yum group upgrade
,yum group remove
명령이 패키지 그룹을 처리하는 방법을 지정합니다. 값을 의 값으로 바꿉니다.단순
- 패키지 그룹의 모든 멤버를 설치합니다. 이전에 설치한 패키지만 업그레이드하지만 그동안 그룹에 추가된 패키지를 설치하지 마십시오.compat
-단순하지만
yum upgrade
는 이전 업그레이드 이후 그룹에 추가된 패키지도 설치합니다.개체
- (기본값.) 이 옵션을 사용하면 yum은 이전에 설치한 그룹을 추적하고 별도로 설치된 그룹 및 패키지의 일부로 설치된 패키지를 구분합니다. 보기 예 9.15. “LibreOffice 패키지 그룹에 대한 정보 보기”group_package_types
=package_type more_package_types-
여기에서
yum
group
install
명령을 호출할 때 설치된 패키지 유형(선택 사항,기본 또는 필수)을 지정할 수 있습니다. 기본 패키지 유형 및 필수 패키지 유형은 기본적으로 선택됩니다. history_record
=value이 옵션을 사용하면 yum을 설정하여 트랜잭션 기록을 기록할 수 있습니다. 값을 다음 중 하나로 바꿉니다.
0
- yum은 트랜잭션의 기록 항목을 기록하지 않아야 합니다.1
(기본값) - yum은 트랜잭션의 기록 항목을 기록합니다. 이 작업은 특정 디스크 공간을 차지하며 트랜잭션에는 약간의 추가 시간이 걸리지만, 이전 작업에 대한 많은 정보를 제공합니다. 이 정보는yum
history
명령으로 표시할 수 있습니다.history_ record=1
은 기본값입니다.yum
history
명령에 대한 자세한 내용은 9.4절. “트랜잭션 내역 작업” 을 참조하십시오.참고yum은 기록 레코드를 사용하여 yum 외부에서 수행된
rpmdb
데이터 베이스의 수정 사항을 탐지합니다. 이러한 경우 yum은 경고를 표시하고rpmdb
변경으로 인한 가능한 문제를 자동으로 검색합니다.history_ record
가 꺼지면 yum은 이러한 변경 사항을 감지할 수 없으며 자동 검사가 수행되지 않습니다.installonlypkgs
=space separated list of packages여기에서 yum을 설치할 수 있는 패키지 목록을 공백으로 구분하여 제공할 수 있지만 업데이트되지 않습니다. 기본적으로 설치 전용 패키지 목록은
yum.conf
(5) 매뉴얼 페이지를 참조하십시오.installonlypkgs
/etc/yum.conf
에 추가하는 경우yum.conf
(5)의 installonly(설치 전용) 섹션에 나열된 패키지를 모두 나열해야 합니다. 특히 커널 패키지가 항상installonlypkgs
에 나열되어 있고installonly_limit
는 항상2
보다 큰 값으로 설정되어 있으므로 기본 패키지를 부팅하지 못하는 경우 백업 커널을 항상 사용할 수 있습니다.
installonly_limit
=value이 옵션은
installonlypkgs
지시문에 나열된 패키지 수를 동시에 설치할 수 있도록 설정합니다.installonlypkgs
에 나열된 단일 패키지에 대해 동시에 설치할 수 있는 최대 버전 수를 나타내는 정수로 값을 바꿉니다.installonlypkgs
지시문의 기본값에는 여러 가지 커널 패키지가 포함되어 있으므로installonly_limit
값을 변경하면 단일 커널 패키지의 최대 버전 수에도 영향을 미칩니다./etc/yum.conf
에 나열된 기본값은installonly_limit=3
이며 가능한 최소 값은installonly_limit=2
입니다.yum이 실행 중인 커널을 제거하므로
installonly_limit=1
을 설정할 수 없습니다.installonly_limit=1
을 사용하면 yum이 실패합니다.installonly_limit=2
를 사용하면 하나의 백업 커널을 사용할 수 있습니다. 그러나 두 개의 백업 커널을 사용할 수 있도록 기본 설정installonly_limit=3
를 유지하는 것이 좋습니다.keepcache
=valuekeepcache
옵션은 yum이 설치 후 헤더 및 패키지의 캐시를 유지할지 여부를 결정합니다. 여기서 value 는 다음 중 하나입니다.0
(기본값) - 설치 후 헤더 및 패키지의 캐시를 유지하지 마십시오.1
- 설치 후 캐시를 유지합니다.logfile
=file_name-
로깅 출력 위치를 지정하려면 file_name 을 yum이 로깅 출력을 써야 하는 파일의 절대 경로로 바꿉니다. 기본적으로 yum은
/var/log/yum.log
에 로그합니다. max_connenctions
=number- 여기서 값은 최대 동시 연결 수이며 기본값은 5입니다.
multilib_policy
=valuemultilib_policy
옵션은 패키지 설치에 여러 아키텍처 버전을 사용할 수 있는 경우 설치 동작을 설정합니다. 여기서 값은 다음과 같습니다.best
- 이 시스템에 가장 적합한 아키텍처 설치. 예를 들어, AMD64 시스템에multilib_policy=best
를 설정하면 yum이 모든 패키지의 64비트 버전을 설치합니다.all
- 항상 모든 패키지에 대해 가능한 모든 아키텍처를 설치합니다. 예를 들어multilib_policy
가 AMD64 시스템에모두
설정된 경우 yum은 둘 다 사용할 수 있는 경우 패키지의 i686 및 AMD64 버전을 둘 다 설치합니다.obsoletes
=valueobsoletes
옵션을 사용하면 업데이트 중에 더 이상 사용되지 않는 프로세스 논리를 사용할 수 있습니다. 한 패키지가 다른 패키지를 더 이상 사용하지 않는 사양 파일에서 선언하면 이전 패키지가 설치된 이전 패키지로 교체됩니다. 예를 들어 패키지의 이름이 변경된 경우 obsoletes가 선언됩니다. 값을 다음 중 하나로 바꿉니다.0
- 업데이트를 수행할 때 yum의 더 이상 사용되지 않는 처리 논리를 비활성화합니다.1
(기본) - 업데이트를 수행할 때 yum이 더 이상 사용되지 않는 처리 논리를 사용하도록 설정합니다.plugins
=valueyum 플러그인을 활성화 또는 비활성화하기 위한 글로벌 스위치이며 값은 다음 중 하나입니다.
0
- 모든 yum 플러그인을 전역적으로 비활성화합니다.중요특정 플러그인이 중요한 yum 서비스를 제공하므로 모든 플러그인을 비활성화하는 것은 권장되지 않습니다. 특히 product-id 및 subscription-manager 플러그인은 인증서 기반CDN(
Content Delivery Network
)을 지원합니다. 전역적으로 플러그인을 비활성화하는 것은 편리함으로 제공되며 일반적으로 yum을 사용하여 잠재적인 문제를 진단할 때만 권장됩니다.1
(기본값) - 전역에서 모든 yum 플러그인을 활성화합니다.plugins=1
을 사용하면 해당 플러그인의 구성 파일에서enabled=0
을 설정하여 특정 yum 플러그인을 비활성화할 수 있습니다.다양한 yum 플러그인에 대한 자세한 내용은 9.6절. “yum 플러그인” 을 참조하십시오. 플러그인 제어에 대한 자세한 내용은 9.6.1절. “YUM 플러그인 활성화, 구성 및 비활성화” 을 참조하십시오.
reposdir
=directory-
여기에서 디렉터리 는
.repo
파일이 있는 디렉터리의 절대 경로입니다. 모든.repo
파일에는 저장소 정보(/etc/yum.conf
의[repository]
섹션과 유사합니다. yum은 트랜잭션에 사용할 리포지토리의 마스터 목록을 생성하기 위해/etc/yum.conf
파일의.repo
파일과[repository]
섹션에서 모든 리포지토리 정보를 수집합니다.reposdir
이 설정되지 않은 경우 yum은 기본 디렉토리/etc/yum.repos.d/
를 사용합니다. retries
=value-
이 옵션은 오류를 반환하기 전에 yum이 파일을 검색하려는 횟수를 설정합니다. 값은 정수
0
이상입니다. 값을0
으로 설정하면 yum이 영구적으로 다시 시도합니다. 기본값은10
입니다.
사용 가능한 [main]
옵션의 전체 목록은 yum.conf(5) 매뉴얼 페이지의 [main] OPTIONS
섹션을 참조하십시오.
9.5.2. [repository] 옵션 설정
[repository]
섹션은 repository 가 my_personal_repo
(공백이 허용되지 않음)와 같은 고유한 리포지토리 ID로 개별 yum 리포지토리를 정의할 수 있도록 합니다. 충돌을 방지하려면 사용자 정의 리포지토리가 Red Hat 리포지토리에서 사용하는 이름을 사용해서는 안 됩니다.
다음은 [리포지토리]
섹션의 최소 예는 다음과 같습니다.
[repository] name=repository_name baseurl=repository_url
모든 [repository]
섹션에는 다음 지시문이 포함되어야 합니다.
name
=repository_name- 여기서 repository_name 은 리포지토리를 설명하는 사람이 읽을 수 있는 문자열입니다.
baseurl
=repository_urlrepository_url 을 리포지토리의 repodata 디렉터리가 있는 디렉터리의 URL로 바꿉니다.
-
HTTP를 통해 리포지터리를 사용할 수 있는 경우
http://path/to/repo
을 사용합니다. -
FTP를 통해 리포지토리를 사용할 수 있는 경우
ftp://path/to/repo
을 사용합니다. -
리포지토리가 머신에 로컬인 경우
file:///path/to/local/repo
를 사용합니다. 특정 온라인 리포지토리에 기본 HTTP 인증이 필요한 경우 사용자 이름 및 암호를 사용자 이름
:password@link
로 URL 앞에 추가하여 지정할 수 있습니다. 예를 들어 http://www.example.com/repo/ 의 리포지토리에 "user"의 사용자 이름과 "password"의 암호가 필요한 경우baseurl
링크를 http://user:/repo/ 로 지정할 수 있습니다.일반적으로 이 URL은 다음과 같은 HTTP 링크입니다.
baseurl=http://path/to/repo/releases/$releasever/server/$basearch/os/
yum은 항상 URL에서
$releasever
,$arch
,$basearch
변수를 확장합니다. yum 변수에 대한 자세한 내용은 9.5.3절. “YUM 변수 사용” 을 참조하십시오.
-
HTTP를 통해 리포지터리를 사용할 수 있는 경우
기타 유용한 [repository]
지시문은 다음과 같습니다.
enabled
=value이 방법은 yum에 특정 리포지토리를 사용하거나 무시하도록 하는 간단한 방법입니다. 값은 다음 중 하나입니다.
0
- 업데이트 및 설치를 수행할 때 이 리포지토리를 패키지 소스로 포함하지 마십시오. 이는 리포지토리를 설정하고 해제하는 쉬운 방법입니다. 이 방법은 업데이트 또는 설치를 활성화하지 않으려는 저장소에서 단일 패키지를 원할 때 유용합니다.1
- 이 리포지토리를 패키지 소스로 포함합니다.리포지토리를 켜거나 꺼짐은
--enablerepo=repo_name또는
옵션을--disablerepo=repo_name
yum
에 전달하거나 PackageKit 유틸리티의소프트웨어 추가/제거
창을 통해 수행할 수도 있습니다.async
=value리포지토리 패키지의 병렬 다운로드를 제어합니다. 여기서 value 는 다음 중 하나입니다.
자동
(기본) - 병렬 다운로드가 가능하면 사용되므로 yum 은 오류가 발생하지 않도록 플러그인에서 생성한 리포지토리에 대해 자동으로 비활성화합니다.On
- 리포지토리에 대해 병렬 다운로드가 활성화됩니다.off
- 리포지토리에 대해 병렬 다운로드가 비활성화되어 있습니다.
더 많은 [저장소]
옵션이 있으며, 그 중 일부는 특정 [기본]
옵션과 동일한 형식을 갖습니다. 전체 목록은 yum.conf(5) 매뉴얼 페이지의 [repository] OPTIONS
섹션을 참조하십시오.
예 9.25. 샘플 /etc/yum.repos.d/redhat.repo 파일
다음은 샘플 /etc/yum.repos.d/redhat.repo
파일입니다.
# # Red Hat Repositories # Managed by (rhsm) subscription-manager # [red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-rpms] name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (RPMs) baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/os enabled = 1 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release sslverify = 1 sslcacert = /etc/rhsm/ca/redhat-uep.pem sslclientkey = /etc/pki/entitlement/key.pem sslclientcert = /etc/pki/entitlement/11300387955690106.pem [red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-source-rpms] name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (Source RPMs) baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/source/SRPMS enabled = 0 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release sslverify = 1 sslcacert = /etc/rhsm/ca/redhat-uep.pem sslclientkey = /etc/pki/entitlement/key.pem sslclientcert = /etc/pki/entitlement/11300387955690106.pem [red-hat-enterprise-linux-scalable-file-system-for-rhel-6-entitlement-debug-rpms] name = Red Hat Enterprise Linux Scalable File System (for RHEL 6 Entitlement) (Debug RPMs) baseurl = https://cdn.redhat.com/content/dist/rhel/entitlement-6/releases/$releasever/$basearch/scalablefilesystem/debug enabled = 0 gpgcheck = 1 gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release sslverify = 1 sslcacert = /etc/rhsm/ca/redhat-uep.pem sslclientkey = /etc/pki/entitlement/key.pem sslclientcert = /etc/pki/entitlement/11300387955690106.pem
9.5.3. YUM 변수 사용
yum
명령과 모든 yum 구성 파일 (즉, /etc/yum.conf
및 /etc/yum .repo
s.d/ 디렉토리에 있는 모든 .repo 파일)에서 다음 기본 제공 변수를 사용하고 참조할 수 있습니다.
$releaseVer
-
이 변수를 사용하여 Red Hat Enterprise Linux 릴리스 버전을 참조할 수 있습니다. yum은
/etc/yum.conf
구성 파일의distroverpkg=value
line에서$releasever
값을 가져옵니다./etc/yum.conf
에 이러한 행이 없는 경우 yum은redhat-release
파일을 제공하는redhat-release제품
패키지에서 버전 번호를 파생하여 올바른 값을 유추합니다. $Arch
-
이 변수를 사용하여 Python의
os.uname()
함수를 호출할 때 반환된 시스템의 CPU 아키텍처를 참조할 수 있습니다.$arch
에 유효한 값에는i586
,i686
및x86_64
가 포함됩니다. $basearch
-
basearch
를 사용하여 시스템의
기본 아키텍처를 참조할 수 있습니다. 예를 들어 i686 및 i586 시스템의 기본 아키텍처는 모두i386
이며 AMD64 및 Intel 64 시스템의 기본 아키텍처는x86_64
여야 합니다. $YUM0-9
-
이러한 10개의 변수는 각각 동일한 이름의 쉘 환경 변수 값으로 교체됩니다. 이러한 변수 중 하나를 참조하고(예:
/etc/yum.conf
) 동일한 이름의 쉘 환경 변수가 없으면 구성 파일 변수가 교체되지 않습니다.
사용자 지정 변수를 정의하거나 기존 변수의 값을 재정의하려면 /etc/yum/vars/
디렉터리에서 변수와 동일한 이름으로 파일을 생성하고 첫 번째 줄에 원하는 값을 추가합니다.
예를 들어, 리포지토리 설명에는 운영 체제 이름이 자주 포함됩니다. $osname
이라는 새 변수를 정의하려면 첫 번째 줄에 "Red Hat Enterprise Linux"를 사용하여 새 파일을 만들고 /etc/yum/vars/osname
으로 저장합니다.
~]# echo "Red Hat Enterprise Linux 7" > /etc/yum/vars/osname
"Red Hat Enterprise Linux 7" 대신 .repo
파일에서 다음을 사용할 수 있습니다.
name=$osname $releasever
9.5.4. 현재 구성 보기
글로벌 yum 옵션의 현재 값(즉, /etc/yum.conf
파일의 [main]
섹션에 지정된 옵션)을 표시하려면 명령줄 옵션 없이 yum-config-manager
명령을 실행합니다.
yum-config-manager
다른 구성 섹션 또는 섹션의 내용을 나열하려면 다음 양식에서 명령을 사용합니다.
yum-config-manager
section…
glob 표현식을 사용하여 일치하는 모든 섹션의 구성을 표시할 수도 있습니다.
yum-config-manager glob_expression…
예 9.26. 주요 섹션의 구성 보기
기본 섹션의 모든 구성 옵션 및 해당 값을 나열하려면 쉘 프롬프트에서 다음을 입력합니다.
~]$ yum-config-manager main \* Loaded plugins: langpacks, product-id, subscription-manager ================================== main =================================== [main] alwaysprompt = True assumeyes = False bandwith = 0 bugtracker_url = https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%206&component=yum cache = 0 [output truncated]
9.5.5. YUM 리포지토리 추가, 활성화 및 비활성화
전문 지식을 확장하려면 Red Hat System Administration III(RH254) 교육 과정에도 관심이 있을 수 있습니다.
9.5.2절. “[repository] 옵션 설정” yum 리포지토리를 정의하는 데 사용할 수 있는 다양한 옵션을 설명합니다. 이 섹션에서는 yum-config-manager
명령을 사용하여 리포지토리를 추가, 활성화 및 비활성화하는 방법을 설명합니다.
시스템이 Red Hat Subscription Management에 등록된 경우 인증서 기반CDN( Content Delivery Network
)에 등록된 경우 Red Hat Subscription Manager 툴을 사용하여 /etc/yum.repos.d/redhat.repo
파일의 리포지토리를 관리합니다.
YUM 리포지토리 추가
새 리포지토리를 정의하려면 [repository]
섹션을 /etc/yum.conf
파일에 추가하거나 /etc/yum .repo
s.d/ 디렉터리의 .repo
파일에 추가할 수 있습니다. 이 디렉토리에 .repo
파일 확장자가 있는 모든 파일은 yum에서 읽고 있으며, 여기에서 /etc/yum.conf
대신 리포지토리를 정의하는 것이 좋습니다.
Red Hat의 인증서 기반CDN( Content Delivery Network
) 이외의 확인되지 않았거나 신뢰할 수 없는 소프트웨어 소스에서 소프트웨어 패키지를 취득 및 설치하면 잠재적인 보안 위험이 있으며 보안, 안정성, 호환성 및 유지 관리 문제가 발생할 수 있습니다.
yum 리포지토리는 일반적으로 자체 .repo
파일을 제공합니다. 이러한 저장소를 시스템에 추가하고 활성화하려면 root
로 다음 명령을 실행하십시오.
yum-config-manager --add-repo repository_url
여기서 repository_url 은 . repo 파일에
대한 링크입니다.
예 9.27. example.repo 추가
http://www.example.com/example.repo 에 있는 리포지터리를 추가하려면 쉘 프롬프트에서 다음을 입력합니다.
~]# yum-config-manager --add-repo http://www.example.com/example.repo Loaded plugins: langpacks, product-id, subscription-manager adding repo from: http://www.example.com/example.repo grabbing file http://www.example.com/example.repo to /etc/yum.repos.d/example.repo example.repo | 413 B 00:00 repo saved to /etc/yum.repos.d/example.repo
YUM 리포지토리 활성화
특정 리포지토리 또는 리포지토리를 활성화하려면 쉘 프롬프트에서 root
로 다음을 입력합니다.
yum-config-manager
--enable
repository…
리포지토리가 고유한 리포지토리 ID입니다( yum repolist all
을 사용하여 사용 가능한 리포지토리 ID 나열). 또는 glob 표현식을 사용하여 일치하는 모든 리포지토리를 활성화할 수 있습니다.
yum-config-manager --enable glob_expression…
예 9.28. /etc/yum.conf의 사용자 지정 섹션에 정의된 리포지토리 활성화.
[example]
, [example-debuginfo]
, [example-source]
섹션에 정의된 리포지토리를 활성화하려면 다음을 입력합니다.
~]# yum-config-manager --enable example\* Loaded plugins: langpacks, product-id, subscription-manager ============================== repo: example ============================== [example] bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7Server baseurl = http://www.example.com/repo/7Server/x86_64/ cache = 0 cachedir = /var/cache/yum/x86_64/7Server/example [output truncated]
예 9.29. 모든 리포지토리 활성화
/etc/yum.conf
파일과 /etc/yum.repos.d/
디렉토리에 모두 정의된 모든 리포지토리를 활성화하려면 다음을 입력합니다.
~]# yum-config-manager --enable \* Loaded plugins: langpacks, product-id, subscription-manager ============================== repo: example ============================== [example] bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7Server baseurl = http://www.example.com/repo/7Server/x86_64/ cache = 0 cachedir = /var/cache/yum/x86_64/7Server/example [output truncated]
성공하면 yum-config-manager --enable
명령은 현재 리포지토리 구성을 표시합니다.
YUM 리포지토리 비활성화
yum 리포지토리를 비활성화하려면 root
로 다음 명령을 실행합니다.
yum-config-manager
--disable
repository…
리포지토리가 고유한 리포지토리 ID입니다( yum repolist all
을 사용하여 사용 가능한 리포지토리 ID 나열). yum-config-manager --enable
도 마찬가지로 glob 표현식을 사용하여 일치하는 모든 리포지토리를 동시에 비활성화할 수 있습니다.
yum-config-manager --disable glob_expression…
예 9.30. 모든 리포지토리 비활성화
/etc/yum.conf
파일과 /etc/yum.repos.d/
디렉토리에 모두 정의된 모든 리포지토리를 비활성화하려면 다음을 입력합니다.
~]# yum-config-manager --disable \* Loaded plugins: langpacks, product-id, subscription-manager ============================== repo: example ============================== [example] bandwidth = 0 base_persistdir = /var/lib/yum/repos/x86_64/7Server baseurl = http://www.example.com/repo/7Server/x86_64/ cache = 0 cachedir = /var/cache/yum/x86_64/7Server/example [output truncated]
성공하면 yum-config-manager --disable
명령을 실행하면 현재 구성이 표시됩니다.
9.5.6. YUM 리포지토리 생성
yum 리포지토리를 설정하려면 다음을 수행합니다.
createrepo 패키지를 설치합니다.
# yum install createrepo
새 리포지토리의 모든 패키지를
/tmp/local_repo/
와 같은 하나의 디렉터리에 복사합니다.cp /your/packages/*.rpm /tmp/local_repo/
리포지토리를 생성하려면 다음을 실행합니다.
createrepo /tmp/local_repo/
이렇게 하면 yum 리포지토리에 필요한 메타데이터가 생성되고 새로 생성된 하위 디렉터리
repodata
에 메타데이터를 배치합니다.이제 yum에서 리포지토리를 사용할 준비가 되었습니다. 이 리포지토리는 HTTP 또는 FTP 프로토콜을 통해 공유하거나 로컬 머신에서 직접 참조할 수 있습니다. yum 리포지토리를 구성하는 방법에 대한 자세한 내용은 9.5.2절. “[repository] 옵션 설정” 섹션을 참조하십시오.
참고리포지토리에 대한 URL을 구성할 때 이 디렉터리에는 메타데이터만 포함되어 있으므로
/mnt/local_repo
/repodata/mnt/local_repo
에 있습니다.
9.5.6.1. 이미 생성된 yum 리포지토리에 패키지 추가
이미 생성된 yum 리포지토리에 패키지를 추가하려면 다음을 수행합니다.
새 패키지를 리포지토리 디렉터리(예:
/tmp/local_repo/
)에 복사합니다.cp /your/packages/*.rpm /tmp/local_repo/
메타데이터에 새로 추가된 패키지를 반영하려면 다음을 실행합니다.
createrepo --update /tmp/local_repo/
선택 사항: 새로 업데이트된 리포지토리와 함께 yum 명령을 이미 사용한 경우 다음을 실행합니다.
yum clean expire-cache
9.5.7. 선택적 리포지토리 추가
선택적 및 추가 서브스크립션 채널은 오픈 소스 라이센스 소프트웨어 (선택 채널) 및 독점 라이센스 소프트웨어 (애드라이브 채널의 경우)를 포함하는 Red Hat Enterprise Linux용 추가 소프트웨어 패키지를 제공합니다.
선택적 및 추가 채널에 가입하기 전에 지원 범위 세부 정보를 참조하십시오. 이러한 채널에서 패키지를 설치하려면 How to access Optional and Supplementary channel, and -devel packages using Red Hat Subscription Manager (RHSM)를 사용하여 Red Hat Customer Portal에 설명된 단계를 따르십시오.
9.6. yum 플러그인
yum은 작업을 확장하고 개선하는 플러그인을 제공합니다. 기본적으로 특정 플러그인이 설치되어 있습니다. yum은 yum
명령을 호출할 때마다 로드 및 활성 상태인 플러그인(있는 경우)을 항상 알려줍니다. 예를 들면 다음과 같습니다.
~]# yum info yum Loaded plugins: langpacks, product-id, subscription-manager [output truncated]
로드된 플러그인을 따르는 플러그인
이름은 --disableplugin=plugin_name
옵션에 제공할 수 있는 이름입니다.
9.6.1. YUM 플러그인 활성화, 구성 및 비활성화
yum 플러그인을 활성화하려면 plugins=
로 시작하는 행이 /etc/yum.conf
의 [main]
섹션에 있고 해당 값이 1
인지 확인합니다.
plugins=1
이 행을 plugins=0
으로 변경하여 모든 플러그인을 비활성화할 수 있습니다.
특정 플러그인이 중요한 yum 서비스를 제공하므로 모든 플러그인을 비활성화하는 것은 권장되지 않습니다. 특히 product-id 및 subscription-manager 플러그인은 인증서 기반CDN( Content Delivery Network
)을 지원합니다. 전역적으로 플러그인을 비활성화하는 것은 편리함으로 제공되며 일반적으로 yum을 사용하여 잠재적인 문제를 진단할 때만 권장됩니다.
설치된 모든 플러그인에는 /etc/yum/pluginconf.d/
디렉토리에 자체 구성 파일이 있습니다. 이러한 파일에서 플러그인 특정 옵션을 설정할 수 있습니다. 예를 들어 별칭 플러그인의 aliases.conf 구성 파일은 다음과 같습니다.
[main] enabled=1
/etc/yum.conf
파일과 유사하게 플러그인 구성 파일에는 항상 enabled=
옵션이 yum
명령을 실행할 때 플러그인이 활성화되는지 여부를 제어하는 [main]
섹션이 포함되어 있습니다. 이 옵션이 없는 경우 파일에 수동으로 추가할 수 있습니다.
/etc/yum.conf
에서 enabled=0
을 설정하여 모든 플러그인을 비활성화하면 개별 구성 파일에서 활성화되었는지 여부와 관계없이 모든 플러그인이 비활성화됩니다.
단일 yum
명령에 대해 모든 yum 플러그인을 비활성화하려는 경우 --noplugins
옵션을 사용합니다.
단일 yum
명령에 대해 하나 이상의 yum 플러그인을 비활성화하려면 --disableplugin=plugin_name
옵션을 명령에 추가합니다. 예를 들어 시스템을 업데이트하는 동안 aliases 플러그인을 비활성화하려면 다음을 입력합니다.
~]# yum update --disableplugin=aliases
--disableplugin=
옵션에 제공하는 플러그인 이름은 yum
명령의 출력에서 로드된 플러그인
행 뒤에 나열된 이름과 동일합니다. 해당 이름을 쉼표로 구분하여 여러 플러그인을 비활성화할 수 있습니다. 또한 여러 플러그인 이름과 일치하거나 glob 표현식을 사용하여 긴 이름을 단축할 수 있습니다.
~]# yum update --disableplugin=aliases,lang*
9.6.2. 추가 YUM 플러그인 설치
yum 플러그인은 일반적으로 yum-plugin-plugin_name
package-naming 규칙을 준수하지만 항상 그렇지는 않습니다. 예를 들어 kabi 플러그인의 이름을 kabi-yum-plugins
라고 합니다. 다른 패키지를 설치하는 것과 동일한 방식으로 yum 플러그인을 설치할 수 있습니다. 예를 들어 yum-aliases 플러그인을 설치하려면 쉘 프롬프트에서 다음을 입력합니다.
~]# yum install yum-plugin-aliases
9.6.3. YUM 플러그인 작업
다음 목록은 몇 가지 유용한 yum 플러그인에 대한 설명 및 사용 지침을 제공합니다. 플러그인은 이름으로 나열되며, 대괄호에는 패키지 이름이 포함됩니다.
- search-disabled-repos (subscription-manager)
search-disabled-repos 플러그인을 사용하면 종속 항목을 해결하기 위해 일시적으로 또는 영구적으로 비활성화된 리포지토리를 활성화할 수 있습니다. 이 플러그인을 활성화하면 YUM이 종속성 확인 실패로 인해 패키지를 설치하지 못하면 일시적으로 비활성화된 리포지토리를 활성화하고 다시 시도하십시오. 설치에 성공하면 YUM은 사용된 리포지토리를 영구적으로 활성화하도록 제공합니다. 플러그인은 subscription-manager 에서 관리하며 사용자 지정 리포지토리가 아닌 리포지토리에서만 작동합니다.
중요yum
이--
또는assumeyes
-y
옵션으로 실행되거나/etc/yum.conf
에서yes 지시문이 활성화된 경우 플러그인은 확인 메시지를 표시하지 않고 일시적으로 및 영구적으로 비활성화된 리포지토리를 활성화합니다. 이로 인해 문제가 발생할 수 있습니다(예: 활성화하지 않는 리포지토리 활성화).search-disabled-repos 플러그인을 구성하려면
/etc/yum/pluginconf.d/search-disabled-repos.conf
에 있는 구성 파일을 편집합니다.[main]
섹션에서 사용할 수 있는 지시문 목록은 아래 표를 참조하십시오.표 9.3. 지원되는 search-disabled-repos.conf 지시문 directive 설명 enabled
=value플러그인을 활성화하거나 비활성화할 수 있습니다. 값은
1
(enabled) 또는0
(비활성화)이어야 합니다. 이 플러그인은 기본적으로 활성화되어 있습니다.notify_only
=value플러그인의 동작을 알림으로 제한할 수 있습니다. 값은
1
(YUM의 동작을 변경하지 않고만 해당) 또는0
(YUM의 동작 수정)이어야 합니다. 기본적으로 플러그인은 사용자에게만 알립니다.ignored_repos
=repositories플러그인을 통해 활성화하지 않는 리포지토리를 지정할 수 있습니다.
- Kabi (kabi-yum-plugins)
kabi 플러그인은 드라이버 업데이트 패키지가 공식 Red Hat 커널 Application Binary Interface (kABI)를 준수하는지 확인합니다. 이 플러그인을 활성화하면 사용자가 화이트리스트에 없는 커널 기호를 사용하는 패키지를 설치하려고 하면 시스템 로그에 경고 메시지가 기록됩니다. 또한 강제 모드로 실행되도록 플러그인을 구성하면 이러한 패키지가 전혀 설치되지 않습니다.
kabi 플러그인을 구성하려면
/etc/yum/pluginconf.d/kabi.conf
에 있는 구성 파일을 편집합니다.[main]
섹션에서 사용할 수 있는 지시문 목록은 아래 표에 표시되어 있습니다.표 9.4. 지원되는 kabi.conf 지시문 directive 설명 enabled
=value플러그인을 활성화하거나 비활성화할 수 있습니다. 값은
1
(enabled) 또는0
(비활성화)이어야 합니다. 설치가 완료되면 플러그인이 기본적으로 활성화됩니다.whitelists
=directory지원되는 커널 기호가 있는 파일을 지정할 수 있는 디렉터리 를 지정할 수 있습니다. 기본적으로 kabi 플러그인은 kernel-abi-whitelists 패키지(즉,
/usr/lib/modules/kabi-rhel70/
디렉터리)에서 제공하는 파일을 사용합니다.enforce
=value강제 모드를 활성화 또는 비활성화할 수 있습니다. 값은
1
(enabled) 또는0
(비활성화)이어야 합니다. 기본적으로 이 옵션은 주석 처리되며 kabi 플러그인은 경고 메시지만 표시합니다.- product-id (subscription-manager)
- product-id 플러그인은 Content Delivery Network에서 설치된 제품의 제품 ID 인증서를 관리합니다. product-id 플러그인은 기본적으로 설치됩니다.
- langpacks (yum-langpacks)
- langpacks 플러그인은 설치된 모든 패키지에 대해 선택한 언어의 로케일 패키지를 검색하는 데 사용됩니다. langpacks 플러그인은 기본적으로 설치됩니다.
- 별칭 (yum-plugin-aliases)
-
aliases 플러그인은
yum
명령에 대한별칭
을 구성하고 사용할 수 있는 alias 명령줄 옵션을 추가합니다. - yum-changelog (yum-plugin-changelog)
-
yum-changelog 플러그인은 업데이트 전후에 패키지 변경 로그를 볼 수 있는
--changelog
명령줄 옵션을 추가합니다. - yum-tmprepo (yum-plugin-tmprepo)
-
yum-tmprepo 플러그인은 리포지토리 파일의 URL을 가져와 하나의 트랜잭션에 대해서만 다운로드하고 활성화하는
--tmprepo
명령줄 옵션을 추가합니다. 이 플러그인은 안전한 리포지토리 사용을 보장합니다. 기본적으로 gpg 확인을 비활성화하는 것을 허용하지 않습니다. - yum-verify (yum-plugin-verify)
-
yum-
verify
플러그인은 시스템에서 확인 데이터를 보기 위한 검증 ,verify-rpm
및verify-all
명령줄 옵션을 추가합니다. - yum-versionlock (yum-plugin-versionlock)
-
yum-versionlock 플러그인은 선택된 패키지의 다른 버전을 제외하여 패키지를 최신 버전으로 업데이트하지 못하게 합니다.
versionlock
명령줄 옵션을 사용하면 잠긴 패키지 목록을 보고 편집할 수 있습니다.
9.7. YUM-cron을 사용하여 패키지 데이터베이스 자동 새로 고침 및 업데이트 다운로드
yum-cron
서비스는 패키지 업데이트를 자동으로 확인하고 다운로드합니다. yum-cron
서비스에서 제공하는 cron 작업은 yum-cron 패키지를 설치한 직후 활성화됩니다. yum-cron
서비스는 다운로드한 업데이트를 자동으로 설치할 수도 있습니다.
기본 설정에서 yum-cron
서비스는 다음과 같습니다.
- 시간당 한 번 yum 캐시의 메타데이터를 업데이트합니다.
- 보류 중인 패키지 업데이트를 하루에 한 번 yum 캐시로 다운로드합니다. 리포지토리에서 새 패키지를 사용할 수 있는 경우 이메일이 전송됩니다. 자세한 내용은 9.7.2절. “선택적 이메일 알림 설정” 장을 참조하십시오.
yum-cron
서비스에는 다음 두 가지 구성 파일이 있습니다.
/etc/yum/yum-cron.conf
- 일별 작업을 위한 것입니다.
/etc/yum/yum-cron-hourly.conf
- 시간별 작업의 경우.
9.7.1. 자동 업데이트 설치 활성화
다운로드한 업데이트의 자동 설치를 활성화하려면 apply_updates
옵션을 다음과 같이 설정하여 일일 설치 또는 시간별 설치의 시간별 구성 파일을 편집합니다.
apply_updates = yes
9.7.2. 선택적 이메일 알림 설정
기본적으로 yum-cron
서비스는 cron
을 사용하여 실행된 명령의 출력이 포함된 이메일을 보냅니다. 이 이메일은 cron
구성에 따라 전송되며 일반적으로 로컬 수퍼유저로 전송되며 /var/spool/mail/root
파일에 저장됩니다.
모든 cron
작업에 영향을 미치는 설정과 다른 특정 이메일 구성을 사용할 수 있습니다. 그러나 이 이메일 구성은 TLS를 지원하지 않으며 전체 이메일 내장 논리는 매우 기본적인 것입니다.
yum-cron
기본 제공 이메일 알림을 활성화하려면 다음을 수행합니다.
선택된
yum-cron
구성 파일을 엽니다./etc/yum/yum-cron.conf
- 일별 작업을 위한 것입니다.
/etc/yum/yum-cron-hourly.conf
- 시간별 작업의 경우.
[emitters]
섹션에서 다음 옵션을 설정합니다.emit_via = email
-
필요에 따라
email_from
,email_to
,email_host
옵션을 설정합니다.
9.7.3. 특정 리포지토리 활성화 또는 비활성화
yum-cron
은 리포지토리의 특정 구성을 지원하지 않습니다. yum-cron
에 대한 특정 리포지토리를 활성화 또는 비활성화하는 해결 방법으로는 일반적으로 yum
의 경우 해당 단계를 수행하지 않습니다.
- 시스템의 어디에서나 빈 리포지토리 구성 디렉터리를 생성합니다.
-
/etc/yum.repos.d/
디렉토리의 모든 설정 파일을 새로 생성된 이 디렉토리에 복사합니다. /etc/yum
구성 파일에서 다음과 같이.repo
s.d/에 있는 각 .repo활성화된
옵션을 설정합니다.enabled = 1
- 리포지토리를 활성화하려면 다음을 수행합니다.
enabled = 0
- 리포지토리를 비활성화하려면 다음을 수행합니다.
선택한
yum-cron
구성 파일의 끝에 새로 생성된 리포지토리 디렉토리를 가리키는 다음 옵션을 추가합니다.reposdir=/path/to/new/reposdir
9.7.4. YUM-cron 설정 테스트
예약된 yum-cron
작업을 기다리지 않고 yum-cron
설정을 테스트하려면 다음을 수행합니다.
선택된
yum-cron
구성 파일을 엽니다./etc/yum/yum-cron.conf
- 일별 작업을 위한 것입니다.
/etc/yum/yum-cron-hourly.conf
- 시간별 작업의 경우.
선택한 구성 파일에서
random_sleep
옵션을 다음과 같이 설정합니다.random_sleep = 0
구성 파일을 실행합니다.
# yum-cron /etc/yum/yum-cron.conf # yum-cron /etc/yum/yum-cron-hourly.conf
9.7.5. YUM-cron 메시지 비활성화
yum-cron
메시지는 완전히 비활성화할 수 없지만 우선 순위가 중요한 메시지로만 제한할 수 있습니다. 메시지를 제한하려면 다음을 수행합니다.
선택된
yum-cron
구성 파일을 엽니다./etc/yum/yum-cron.conf
- 일별 작업을 위한 것입니다.
/etc/yum/yum-cron-hourly.conf
- 시간별 작업의 경우.
구성 파일의
[base]
섹션에 다음 옵션을 설정합니다.debuglevel = -4
9.7.6. 패키지 자동 정리
yum-cron
서비스는 yum clean all
명령과 유사한 패키지를 제거하는 데 구성 옵션을 지원하지 않습니다. 패키지를 자동으로 정리하려면 실행 가능한 쉘 스크립트로 cron 작업을 생성할 수 있습니다.
다음을 포함하는
/etc/cron.daily/
디렉터리에 쉘 스크립트를 생성합니다.#!/bin/sh yum clean all
스크립트를 실행 가능하게 만듭니다.
# chmod +x /etc/cron.daily/script-name.sh
9.8. 추가 리소스
Red Hat Enterprise Linux에서 소프트웨어 패키지를 관리하는 방법에 대한 자세한 내용은 아래 나열된 리소스를 참조하십시오.
설치된 문서
-
yum
(8) - yum 명령줄 유틸리티의 도움말 페이지는 지원되는 옵션 및 명령의 전체 목록을 제공합니다. -
yumdb
(8) -yumdb
명령 줄 유틸리티 문서의 도움말 페이지에서 이 도구를 사용하여 쿼리하고 필요한 경우 yum 데이터베이스를 변경하는 방법을 설명합니다. -
yum.conf
(5) -yum.conf
문서의 수동 페이지 사용 가능 -
yum-utils
(1) -yum-utils
목록이라는 수동 페이지 및 yum 구성 관리, 리포지토리 조작 및 yum 데이터베이스 작업을 위한 추가 유틸리티를 간략하게 설명합니다.
온라인 리소스
- yum Guides - 프로젝트 홈 페이지의 YUM 가이드 페이지에서 추가 설명서에 대한 링크를 제공합니다.
- Red Hat 고객 포털 랩 - Red Hat 고객 포털 랩에는 "Yum Repository Configuration Helper"가 포함되어 있습니다.
예를 들면 다음과 같습니다.
-
6장. 권한 확보
su
및sudo
명령을 사용하여 관리 권한을 얻는 방법에 대해 설명합니다.
IV 부. 인프라 서비스
이 부분에서는 서비스 및 데몬을 구성하고 Red Hat Enterprise Linux 머신에 대한 원격 액세스를 활성화하는 방법에 대한 정보를 제공합니다.
10장. systemd를 사용하여 서비스 관리
10.1. systemd 소개
systemd 는 Linux 운영 체제용 시스템 및 서비스 관리자입니다. 이는 SysV init 스크립트와 역호환되도록 설계되었으며 부팅 시 시스템 서비스의 병렬 시작, 필요에 따라 데몬 활성화 또는 종속성 기반 서비스 제어 논리와 같은 여러 기능을 제공합니다. Red Hat Enterprise Linux 7에서 systemd는 Upstart를 기본 init 시스템으로 대체합니다.
systemd에는 systemd 단위 의 개념이 도입되었습니다. 이러한 단위는 표 10.2. “systemd 장치 파일 위치” 에 나열된 디렉터리 중 하나에 있는 단위 구성 파일로 표현되며 시스템 서비스, 수신 대기 소켓 및 init 시스템과 관련된 기타 오브젝트에 대한 정보를 캡슐화합니다. 사용 가능한 systemd 장치 유형 전체 목록은 표 10.1. “사용 가능한 systemd 장치 유형” 을 참조하십시오.
단위 유형 | 파일 확장자 | 설명 |
---|---|---|
서비스 단위 |
| 시스템 서비스. |
대상 단위 |
| systemd 장치 그룹입니다. |
자동 마운트 단위 |
| 파일 시스템 자동 마운트 지점. |
장치 단위 |
| 커널에서 인식한 장치 파일입니다. |
마운트 단위 |
| 파일 시스템 마운트 지점. |
경로 단위 |
| 파일 시스템의 파일 또는 디렉터리. |
범위 단위 |
| 외부에서 생성된 프로세스. |
슬라이스 단위 |
| 시스템 프로세스를 관리하는 계층적으로 구성된 단위 그룹입니다. |
스냅샷 단위 |
| 저장된 systemd 관리자 상태입니다. |
소켓 단위 |
| 프로세스 간 통신 소켓입니다. |
스왑 장치 |
| 스왑 장치 또는 스왑 파일. |
타이머 장치 |
| systemd 타이머. |
디렉터리 | 설명 |
---|---|
| 설치된 RPM 패키지와 함께 배포되는 systemd 장치 파일입니다. |
| 런타임에 생성된 systemd 장치 파일입니다. 이 디렉터리는 설치된 서비스 장치 파일이 있는 디렉터리보다 우선합니다. |
|
|
system.conf를 사용하여 기본 systemd 구성 덮어쓰기
systemd의 기본 구성은 컴파일 중에 정의되고 /etc/systemd/system.conf
의 systemd 구성 파일에서 찾을 수 있습니다. 이러한 기본값에서 벗어나지 않도록 하려면 이 파일을 사용하여 systemd 단위에 대해 선택된 기본값을 전역적으로 덮어씁니다.
예를 들어 90초로 설정된 제한 시간 제한의 기본값을 재정의하려면 DefaultTimeoutStartSec
매개변수를 사용하여 필요한 값을 초 단위로 입력합니다.
DefaultTimeoutStartSec=required value
자세한 내용은 예 10.21. “제한 시간 제한 변경” 참조하십시오.
10.1.1. 주요 기능
Red Hat Enterprise Linux 7에서 systemd 시스템 및 서비스 관리자는 다음과 같은 주요 기능을 제공합니다.
소켓 기반 활성화 - 부팅 시 systemd는 이러한 유형의 활성화를 지원하는 모든 시스템 서비스에 대해 수신 대기 소켓을 생성하고 시작된 즉시 소켓을 이러한 서비스에 전달합니다. 이를 통해 systemd는 병렬로 서비스를 시작할 수 있을 뿐만 아니라 서비스를 시작할 수 있을 뿐만 아니라 사용할 수 없는 동안 전송된 메시지를 손실하지 않고도 서비스를 다시 시작할 수 있습니다. 해당 소켓은 액세스 가능하며 모든 메시지가 큐에 추가됩니다.
systemd는 소켓 기반 활성화에 소켓 유닛 을 사용합니다.
- 버스 기반 활성화 - 프로세스 간 통신에 D-Bus를 사용하는 시스템 서비스는 클라이언트 애플리케이션이 해당 애플리케이션과 통신을 시도할 때 처음으로 요청 시 시작할 수 있습니다. systemd는 버스 기반 활성화를 위해 D-Bus 서비스 파일을 사용합니다.
- 장치 기반 활성화 - 특정 유형의 하드웨어가 연결되거나 사용 가능하게 되면 장치 기반 활성화를 지원하는 시스템 서비스를 필요에 따라 시작할 수 있습니다. systemd는 장치 기반 활성화를 위해 장치 장치를 사용합니다.
- 경로 기반 활성화 - 특정 파일 또는 디렉터리가 해당 상태를 변경할 때 경로 기반 활성화를 지원하는 시스템 서비스를 요청 시 시작할 수 있습니다. systemd는 경로 기반 활성화에 경로 유닛 을 사용합니다.
- 마운트 및 자동 마운트 지점 관리 - Systemd 모니터 및 마운트 및 자동 마운트를 관리합니다. systemd는 마운트 지점에 마운트 장치를 사용하고 자동 마운트 지점에 자동 마운트 장치를 사용합니다.
- 공격적 병렬화 - 소켓 기반 활성화를 사용하기 때문에 systemd는 모든 청취 소켓이 제자리에 있는 즉시 시스템 서비스를 병렬로 시작할 수 있습니다. 온 디맨드 활성화를 지원하는 시스템 서비스와 함께 병렬 활성화는 시스템 부팅에 필요한 시간을 크게 줄입니다.
- 트랜잭션 단위 활성화 논리 - 단위를 활성화 또는 비활성화하기 전에 systemd는 종속성을 계산하고, 임시 트랜잭션을 생성하며, 이 트랜잭션이 일관되게 적용되는지 확인합니다. 트랜잭션이 일관성이 없는 경우 systemd는 오류를 보고하기 전에 자동으로 해당 트랜잭션을 수정하고 필수가 아닌 작업을 제거합니다.
- SysV init과 이전 버전과의 호환성 - Systemd는 Linux 표준 기본 코어 사양에 설명된 대로 SysV init 스크립트를 지원하므로 systemd 서비스 유닛으로의 업그레이드 경로가 쉬워집니다.
10.1.2. 호환성 변경
systemd 시스템 및 서비스 관리자는 SysV init 및 Upstart와 대부분 호환되도록 설계되었습니다. 다음은 Red Hat Enterprise Linux 시스템의 이전 주요 릴리스와 관련하여 가장 주목할 만한 호환성 변경 사항입니다.
systemd는 실행 수준을 제한적으로 지원합니다. 이러한 실행 수준으로 직접 매핑할 수 있는 여러 대상 장치를 제공합니다. 호환성을 위해 이전
실행 수준
명령도 함께 배포됩니다. 그러나 모든 systemd 대상을 실행 수준 수준에 직접 매핑할 수 있는 것은 아니며, 결과적으로 이 명령은N
을 반환하여 알 수 없는 실행 수준을 나타낼 수 있습니다. 가능하면level 명령을 사용하지 않는 것이 좋습니다.systemd 대상 및 실행 수준 수준 비교에 대한 자세한 내용은 10.3절. “systemd 대상 작업” 을 참조하십시오.
systemctl
유틸리티는 사용자 지정 명령을 지원하지 않습니다.start
,stop
및status
와 같은 표준 명령 외에도 SysV init 스크립트 작성자는 추가 기능을 제공하기 위해 다수의 임의 명령에 대한 지원을 구현할 수 있었습니다. 예를 들어 Red Hat Enterprise Linux 6에서iptables
에 대한 init 스크립트를panic
명령으로 실행할 수 있으므로 패닉 모드를 즉시 활성화하고 시스템을 재구성하여 들어오는 모든 패킷을 삭제할 수 있습니다. systemd에서 지원되지 않으며systemctl
은 문서화된 명령만 허용합니다.systemctl
유틸리티 및 이전서비스
유틸리티와의 비교에 대한 자세한 내용은 10.2절. “시스템 서비스 관리” 을 참조하십시오.-
systemctl
유틸리티는 systemd에서 시작하지 않은 서비스와 통신하지 않습니다. systemd는 시스템 서비스를 시작할 때 기본 프로세스의 ID를 저장하여 해당 서비스를 추적합니다. 그런 다음systemctl
유틸리티는 이 PID를 사용하여 서비스를 쿼리하고 관리합니다. 결과적으로 사용자가 명령줄에서 직접 특정 데몬을 시작하면systemctl
은 현재 상태를 확인하거나 중지할 수 없습니다. -
systemd는 실행 중인 서비스만 중지합니다. 이전 버전에서는 종료 시퀀스가 시작될 때 Red Hat Enterprise Linux 6 및 시스템의 이전 릴리스에서는
/etc/rc0.d/
디렉터리에 있는 심볼릭 링크를 사용하여 상태와 관계없이 사용 가능한 모든 시스템 서비스를 중지했습니다. systemd에서는 실행 중인 서비스만 종료 시 중지됩니다. -
시스템 서비스는 표준 입력 스트림에서 읽을 수 없습니다. systemd가 서비스를 시작할 때 표준 입력을
/dev/null
에 연결하여 사용자와의 상호 작용을 방지합니다. -
시스템 서비스는 호출된 사용자 및 해당 세션에서 어떠한 컨텍스트(예:
HOME
및PATH
환경 변수)를 상속하지 않습니다. 각 서비스는 명확한 실행 컨텍스트에서 실행됩니다. - SysV init 스크립트를 로드할 때 systemd는 Linux 표준 기본(LSB) 헤더로 인코딩된 종속성 정보를 읽고 런타임에 해석합니다.
- 서비스 유닛에 대한 모든 작업에는 기본 시간 초과가 5분으로 되어 시스템이 중단되는 것을 방지할 수 있습니다. 이 값은 initscripts에서 생성된 서비스에 하드 코딩되며 변경할 수 없습니다. 그러나 개별 구성 파일을 사용하여 서비스당 시간 초과 값을 지정할 수 있습니다. 예 10.21. “제한 시간 제한 변경”
systemd와 함께 도입된 호환성 변경 사항의 자세한 목록은 Red Hat Enterprise Linux 7 마이그레이션 플래닝 가이드 를 참조하십시오.
10.2. 시스템 서비스 관리
전문 지식을 확장하려면 Red Hat System Administration II(RH 442) 교육 과정에도 관심이 있을 수 있습니다.
SysV init 또는 Upstart와 함께 배포된 이전 버전의 Red Hat Enterprise Linux는 /etc/rc.d/init.d/
디렉터리에 있는 init 스크립트 를 사용했습니다. 이러한 init 스크립트는 일반적으로 Bash로 작성되었으며 시스템 관리자가 시스템의 서비스 및 데몬 상태를 제어할 수 있습니다. Red Hat Enterprise Linux 7에서는 이러한 init 스크립트가 서비스 단위로 교체되었습니다.
서비스 단위는 .service
파일 확장자로 종료되고 init 스크립트와 유사한 목적을 제공합니다. 시스템 서비스를 확인, 시작, 중지, 다시 시작, 활성화 또는 비활성화하려면 이 섹션의 표 10.3. “systemctl과 서비스 utility 비교”, 표 10.4. “systemctl과 chkconfig utility 비교” 및 기타에 설명된 대로 systemctl
명령을 사용합니다. service
및 chkconfig
명령은 계속 시스템에서 사용할 수 있으며 예상대로 작동하지만 호환성상의 이유로만 포함되어 피해야 합니다.
service | systemctl | 설명 |
---|---|---|
|
| 서비스를 시작합니다. |
|
| 서비스를 중지합니다. |
|
| 서비스를 다시 시작합니다. |
|
| 실행 중인 경우에만 서비스를 다시 시작합니다. |
|
| 구성을 다시 로드합니다. |
|
| 서비스가 실행 중인지 확인합니다. |
|
| 모든 서비스의 상태를 표시합니다. |
chkconfig | systemctl | 설명 |
---|---|---|
|
| 서비스를 활성화합니다. |
|
| 서비스를 비활성화합니다. |
|
| 서비스가 활성화되어 있는지 확인합니다. |
|
| 모든 서비스를 나열하고 활성화되어 있는지 확인합니다. |
|
| 지정된 유닛 전에 시작하도록 정렬된 서비스를 나열합니다. |
|
| 지정된 유닛 후에 시작하도록 정렬된 서비스를 나열합니다. |
서비스 단위 지정
명확성을 위해 이 섹션의 모든 명령 예제는 .service
파일 확장자와 함께 전체 단위 이름을 사용합니다. 예를 들면 다음과 같습니다.
~]# systemctl stop nfs-server.service
그러나 파일 확장자는 생략할 수 있습니다. 이 경우 systemctl
유틸리티는 인수가 서비스 단위라고 가정합니다. 다음 명령은 위의 명령과 동일합니다.
~]# systemctl stop nfs-server
또한 일부 유닛에는 별칭 이름이 있습니다. 이러한 이름은 실제 장치 이름 대신 사용할 수 있는 유닛보다 짧은 이름을 가질 수 있습니다. 특정 유닛에 사용할 수 있는 모든 별칭을 찾으려면 다음을 사용합니다.
~]# systemctl show nfs-server.service -p Names
chroot 환경에서 systemctl 동작
chroot
명령을 사용하여 루트 디렉터리를 변경하는 경우 대부분의 systemctl
명령은 모든 작업 수행을 거부합니다. 그 이유는 systemd
프로세스와 chroot
명령을 사용한 사용자에게 파일 시스템에 대한 동일한 보기가 없기 때문입니다. 예를 들어 Kickstart
파일에서 systemctl
을 호출할 때 이러한 상황이 발생합니다.
이 예외는 systemctl enable
및 systemctl disable
명령과 같은 단위 파일 명령입니다. 이러한 명령은 실행 중인 시스템이 필요하지 않으며 실행 중인 프로세스에는 영향을 미치지 않지만 장치 파일에 영향을 미칩니다. 따라서 chroot
환경에서도 이러한 명령을 실행할 수 있습니다. 예를 들어 /srv/website1/
디렉터리의 시스템에서 httpd
서비스를 활성화하려면 다음을 수행합니다.
~]# chroot /srv/website1 ~]# systemctl enable httpd.service Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service, pointing to /usr/lib/systemd/system/httpd.service.
10.2.1. 서비스 나열
현재 로드된 서비스 유닛을 모두 나열하려면 쉘 프롬프트에서 다음을 입력합니다.
systemctl list-units --type service
각 서비스 유닛 파일에 대해 이 명령은 전체 이름(UNIT
)을 표시하고 단위 파일이 로드되었는지 여부(LOAD
), 높은 수준의( started ) 및 하위 수준(SUB
) 단위 파일 활성화 상태, 짧은 설명(DESCRIPTION
)을 표시합니다.
기본적으로 systemctl list-units
명령은 활성 유닛만 표시합니다. 상태에 관계없이 로드된 유닛을 모두 나열하려면 --all
또는 -a
명령줄 옵션을 사용하여 이 명령을 실행하십시오.
systemctl list-units --type service --all
사용 가능한 모든 서비스 유닛을 나열하여 활성화되어 있는지 확인할 수도 있습니다. 이렇게 하려면 다음을 입력합니다.
systemctl list-unit-files --type service
각 서비스 유닛에 대해 이 명령은 전체 이름(UNIT FILE
)을 표시하고 서비스 유닛이 활성화되었는지 여부(STATE
)가 있는지 여부가 표시됩니다. 개별 서비스 유닛의 상태를 결정하는 방법에 대한 자세한 내용은 10.2.2절. “서비스 상태 표시” 을 참조하십시오.
예 10.1. 서비스 나열
현재 로드된 서비스 유닛을 모두 나열하려면 다음 명령을 실행합니다.
~]$ systemctl list-units --type service
UNIT LOAD ACTIVE SUB DESCRIPTION
abrt-ccpp.service loaded active exited Install ABRT coredump hook
abrt-oops.service loaded active running ABRT kernel log watcher
abrt-vmcore.service loaded active exited Harvest vmcores for ABRT
abrt-xorg.service loaded active running ABRT Xorg log watcher
abrtd.service loaded active running ABRT Automated Bug Reporting Tool
...
systemd-vconsole-setup.service loaded active exited Setup Virtual Console
tog-pegasus.service loaded active running OpenPegasus CIM Server
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
46 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'
설치된 모든 서비스 장치 파일을 나열하여 활성화되어 있는지 확인하려면 다음을 입력합니다.
~]$ systemctl list-unit-files --type service UNIT FILE STATE abrt-ccpp.service enabled abrt-oops.service enabled abrt-vmcore.service enabled abrt-xorg.service enabled abrtd.service enabled ... wpa_supplicant.service disabled ypbind.service disabled 208 unit files listed.
10.2.2. 서비스 상태 표시
시스템 서비스에 해당하는 서비스 유닛에 대한 자세한 정보를 표시하려면 쉘 프롬프트에서 다음을 입력합니다.
systemctl status name.service
name 을 검사할 서비스 유닛의 이름으로 바꿉니다(예: gdm
). 이 명령은 선택한 서비스 단위의 이름, 간단한 설명, 표 10.5. “사용 가능한 서비스 단위 정보” 에 설명된 하나 이상의 필드, root
사용자가 실행하는 경우 가장 최근 로그 항목도 표시합니다.
필드 | 설명 |
---|---|
| 서비스 유닛이 로드되었는지 여부, 단위 파일의 절대 경로 및 장치가 활성화되었는지 여부를 나타냅니다. |
| 서비스 유닛이 실행 중인지 여부 및 타임스탬프를 제공합니다. |
| 해당 시스템 서비스의 PID와 해당 이름. |
| 해당 시스템 서비스에 대한 추가 정보입니다. |
| 관련 프로세스에 대한 추가 정보. |
| 관련 제어 그룹(cgroups)에 대한 추가 정보. |
특정 서비스 장치가 실행 중인지 확인하려면 다음 명령을 실행합니다.
systemctl is-active name.service
마찬가지로 특정 서비스 장치가 활성화되어 있는지 여부를 확인하려면 다음을 입력합니다.
systemctl is-enabled name.service
systemctl is-active
및 systemctl is-enabled
는 모두 지정된 서비스 장치가 실행 중이거나 활성화되어 있는 경우 종료 상태 0
을 반환합니다. 현재 로드된 모든 서비스 단위를 나열하는 방법에 대한 자세한 내용은 10.2.1절. “서비스 나열” 을 참조하십시오.
예 10.2. 서비스 상태 표시
GNOME Display Manager의 서비스 단위는 gdm.service
라고 합니다. 이 서비스 장치의 현재 상태를 확인하려면 쉘 프롬프트에서 다음을 입력합니다.
~]# systemctl status gdm.service gdm.service - GNOME Display Manager Loaded: loaded (/usr/lib/systemd/system/gdm.service; enabled) Active: active (running) since Thu 2013-10-17 17:31:23 CEST; 5min ago Main PID: 1029 (gdm) CGroup: /system.slice/gdm.service ├─1029 /usr/sbin/gdm ├─1037 /usr/libexec/gdm-simple-slave --display-id /org/gno... └─1047 /usr/bin/Xorg :0 -background none -verbose -auth /r... Oct 17 17:31:23 localhost systemd[1]: Started GNOME Display Manager.
예 10.3. 서비스 시작하기 전에 주문된 서비스 표시
지정된 서비스 이전에 정렬된 서비스를 확인하려면 쉘 프롬프트에서 다음을 입력합니다.
~]# systemctl list-dependencies --after gdm.service gdm.service ├─dbus.socket ├─getty@tty1.service ├─livesys.service ├─plymouth-quit.service ├─system.slice ├─systemd-journald.socket ├─systemd-user-sessions.service └─basic.target [output truncated]
예 10.4. 서비스 종료 후 서비스에 주문한 서비스 표시
지정된 서비스 후에 시작하도록 정렬된 서비스를 확인하려면 쉘 프롬프트에서 다음을 입력합니다.
~]# systemctl list-dependencies --before gdm.service gdm.service ├─dracut-shutdown.service ├─graphical.target │ ├─systemd-readahead-done.service │ ├─systemd-readahead-done.timer │ └─systemd-update-utmp-runlevel.service └─shutdown.target ├─systemd-reboot.service └─final.target └─systemd-reboot.service
10.2.3. 서비스 시작
시스템 서비스에 해당하는 서비스 장치를 시작하려면 root
로 쉘 프롬프트에 다음을 입력합니다.
systemctl start name.service
시작할 서비스 유닛의 이름으로 이름을 바꿉니다(예: gdm
). 이 명령은 현재 세션에서 선택한 서비스 유닛을 시작합니다. 부팅 시 서비스 유닛을 시작하는 방법에 대한 자세한 내용은 10.2.6절. “서비스 활성화” 을 참조하십시오. 특정 서비스 유닛의 상태를 결정하는 방법에 대한 자세한 내용은 10.2.2절. “서비스 상태 표시” 을 참조하십시오.
예 10.5. 서비스 시작
Apache HTTP 서버의 서비스 단위는 httpd.service
라고 합니다. 이 서비스 장치를 활성화하고 현재 세션에서 httpd
데몬을 시작하려면 root
로 다음 명령을 실행합니다.
~]# systemctl start httpd.service
10.2.4. 서비스 중지
시스템 서비스에 해당하는 서비스 장치를 중지하려면 쉘 프롬프트에 root
로 다음을 입력합니다.
systemctl stop name.service
중지하려는 서비스 유닛의 이름으로 이름을 바꿉니다(예: bluetooth
). 이 명령은 현재 세션에서 선택한 서비스 유닛을 중지합니다. 서비스 유닛을 비활성화하고 부팅 시 시작되지 않게 하는 방법에 대한 자세한 내용은 10.2.7절. “서비스 비활성화” 을 참조하십시오. 특정 서비스 유닛의 상태를 결정하는 방법에 대한 자세한 내용은 10.2.2절. “서비스 상태 표시” 을 참조하십시오.
예 10.6. 서비스 중지
bluetoothd
데몬의 서비스 단위 이름은 bluetooth.service
입니다. 이 서비스 유닛을 비활성화하고 현재 세션에서 bluetoothd
데몬을 중지하려면 root
로 다음 명령을 실행합니다.
~]# systemctl stop bluetooth.service
10.2.5. 서비스 다시 시작
시스템 서비스에 해당하는 서비스 장치를 다시 시작하려면 root
로 쉘 프롬프트에 다음을 입력합니다.
systemctl restart name.service
이름을 재시작할 서비스 유닛의 이름으로 바꿉니다(예: httpd
). 이 명령은 현재 세션에서 선택한 서비스 장치를 중지하고 즉시 다시 시작합니다. 중요한 점은 선택한 서비스 장치가 실행되고 있지 않으면 이 명령도 시작합니다. 해당 서비스가 이미 실행 중인 경우에만 서비스 장치를 재시작하도록 systemd에 지시하려면 root
로 다음 명령을 실행합니다.
systemctl try-restart name.service
또한 특정 시스템 서비스를 사용하면 실행을 중단하지 않고 구성을 다시 로드할 수 있습니다. 이 작업을 수행하려면 root
로 입력합니다.
systemctl reload name.service
이 기능을 지원하지 않는 시스템 서비스는 이 명령을 모두 무시합니다. 편의를 위해 systemctl
명령은 서비스를 다시 시작하는 reload-or-restart
및 reload-or-try-restart
명령도 지원합니다. 특정 서비스 유닛의 상태를 결정하는 방법에 대한 자세한 내용은 10.2.2절. “서비스 상태 표시” 을 참조하십시오.
예 10.7. 서비스 다시 시작
사용자가 불필요한 오류 메시지나 부분적으로 렌더링된 웹 페이지가 발생하지 않도록 하려면 Apache HTTP Server를 사용하여 구성을 다시 시작하고 적극적으로 처리된 요청을 중단하지 않고도 해당 구성을 편집하고 다시 로드할 수 있습니다. 이렇게 하려면 쉘 프롬프트에서 root
로 다음을 입력합니다.
~]# systemctl reload httpd.service
10.2.6. 서비스 활성화
부팅 시 자동으로 시스템 서비스에 해당하는 서비스 장치를 구성하려면 쉘 프롬프트에서 root
로 다음을 입력합니다.
systemctl enable name.service
name 을 활성화할 서비스 유닛의 이름으로 바꿉니다(예: httpd
). 이 명령은 선택한 서비스 장치의 [Install]
섹션을 읽고 /etc/systemd/system
파일에 대한 적절한 심볼릭 링크를 생성합니다. 그러나 이 명령은 이미 존재하는 링크를 다시 작성하지 않습니다. 심볼릭 링크가 다시 생성되었는지 확인하려면 /
디렉터리에 있는 /usr/lib/systemd/system/name.serviceroot
로 다음 명령을 사용하십시오.
systemctl reenable name.service
이 명령은 선택한 서비스 장치를 비활성화하고 즉시 다시 활성화합니다. 특정 서비스 유닛이 부팅 시 시작되도록 활성화되었는지 확인하는 방법에 대한 자세한 내용은 10.2.2절. “서비스 상태 표시” 을 참조하십시오. 현재 세션에서 서비스를 시작하는 방법에 대한 자세한 내용은 10.2.3절. “서비스 시작” 을 참조하십시오.
예 10.8. 서비스 활성화
부팅 시 자동으로 시작하도록 Apache HTTP Server를 구성하려면 root
로 다음 명령을 실행합니다.
~]# systemctl enable httpd.service Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
10.2.7. 서비스 비활성화
부팅 시 시스템 서비스에 해당하는 서비스 장치가 자동으로 시작되지 않도록 하려면 쉘 프롬프트에서 root
로 다음을 입력합니다.
systemctl disable name.service
비활성화하려는 서비스 유닛의 이름으로 이름을 바꿉니다(예: bluetooth
). 이 명령은 선택한 서비스 장치의 [Install]
섹션을 읽고 /etc/systemd/system
파일에 대한 적절한 심볼릭 링크를 제거합니다. 또한 서비스 유닛을 마스킹하여 수동으로 또는 다른 서비스에 의해 시작되지 않도록 할 수 있습니다. 이렇게 하려면 /
디렉터리 및 하위 디렉터리의 /usr/lib/systemd/system/name.serviceroot
로 다음 명령을 실행하십시오.
systemctl mask name.service
이 명령은 /etc/systemd/system/name.service
파일을 /dev/null
에 대한 심볼릭 링크로 대체하여 systemd에 액세스할 수 없는 실제 장치 파일을 렌더링합니다. 이 작업을 취소하고 서비스 유닛을 마스크 해제하려면 root
로 를 입력합니다.
systemctl unmask name.service
특정 서비스 유닛이 부팅 시 시작되도록 활성화되었는지 확인하는 방법에 대한 자세한 내용은 10.2.2절. “서비스 상태 표시” 을 참조하십시오. 현재 세션에서 서비스를 중지하는 방법에 대한 자세한 내용은 10.2.4절. “서비스 중지” 을 참조하십시오.
예 10.9. 서비스 비활성화
예 10.6. “서비스 중지” 현재 세션에서 bluetooth.service
유닛을 중지하는 방법을 보여줍니다. 이 서비스 장치가 부팅 시 시작되지 않도록 하려면 쉘 프롬프트에 root
로 다음을 입력합니다.
~]# systemctl disable bluetooth.service Removed symlink /etc/systemd/system/bluetooth.target.wants/bluetooth.service. Removed symlink /etc/systemd/system/dbus-org.bluez.service.
10.2.8. 서비스 충돌 시작
systemd 에서 서비스 간 양수 및 음수 종속성이 있습니다. 특정 서비스를 시작하려면 하나 이상의 다른 서비스(positive dependency)를 시작하거나 하나 이상의 서비스(negative 종속성)를 중지해야 할 수 있습니다.
새 서비스를 시작하려고 하면 systemd 는 모든 종속성을 자동으로 해결합니다. 이 작업은 사용자에게 명시적인 알림 없이 수행됩니다. 이미 서비스를 실행하고 음수 종속성으로 다른 서비스를 시작하려고 하면 첫 번째 서비스가 자동으로 중지됩니다.
예를 들어 postfix
서비스를 실행 중이고 sendmail
서비스를 시작하려고 하면 systemd 는 먼저 postfix
를 자동으로 중지합니다. 이러한 두 서비스가 충돌하며 동일한 포트에서 실행할 수 없기 때문입니다.
10.3. systemd 대상 작업
SysV init 또는 Upstart와 함께 배포된 이전 버전의 Red Hat Enterprise Linux는 특정 작업 모드를 나타내는 사전 정의된 실행 수준을 구현했습니다. 이러한 실행 수준으로 인해 0에서 6까지 번호가 지정되었으며 시스템 관리자가 특정 실행 수준을 사용하도록 설정한 경우 실행할 시스템 서비스에 의해 정의되었습니다. Red Hat Enterprise Linux 7에서는 실행 수준이라는 개념이 systemd 대상으로 교체되었습니다.
systemd 대상은 대상 유닛으로 표시됩니다. 대상 단위는 . target 파일
확장자로 종료되고 유일한 목적은 종속 항목 체인을 통해 다른 systemd 유닛을 함께 그룹화하는 것입니다. 예를 들어 그래픽 세션을 시작하는 데 사용되는 graphical.target
장치는 GNOME Display Manager(gdm.service ) 또는 계정 서비스(accounts-daemon
)와 같은 시스템 서비스를 시작하고, .service
다중 사용자.target
유닛을 활성화합니다. 마찬가지로 multi-user.target
장치는 NetworkManager(NetworkManager.service
) 또는 D-Bus(dbus.service
)와 같은 다른 필수 시스템 서비스를 시작하고 basic.target
이라는 다른 대상 장치를 활성화합니다.
Red Hat Enterprise Linux 7은 이 시스템의 이전 릴리스의 표준 실행 수준 세트와 비슷하거나 더 적은 사전 정의된 대상과 함께 배포됩니다. 호환성의 이유로 SysV 실행 수준을 직접 매핑하는 이러한 대상에 대한 별칭도 제공합니다. 표 10.6. “systemd 대상과 SysV Runlevels 비교” 에서는 SysV 실행 수준 및 해당 systemd 대상의 전체 목록을 제공합니다.
실행 수준 | 대상 단위 | 설명 |
---|---|---|
|
| 시스템을 종료하고 전원을 끕니다. |
|
| 복구 쉘을 설정합니다. |
|
| 그래픽이 아닌 다중 사용자 시스템을 설정합니다. |
|
| 그래픽이 아닌 다중 사용자 시스템을 설정합니다. |
|
| 그래픽이 아닌 다중 사용자 시스템을 설정합니다. |
|
| 그래픽 다중 사용자 시스템을 설정합니다. |
|
| 시스템을 종료하고 재부팅합니다. |
systemd 대상을 확인, 변경 또는 구성하려면 표 10.7. “systemctl과 SysV init 명령 비교” 및 아래 섹션에서 systemctl
유틸리티를 사용합니다. 실행 수준
및 telinit
명령은 계속 시스템에서 사용할 수 있으며 예상대로 작동하지만 호환성상의 이유로만 포함되어 있어야 합니다.
이전 명령 | 새 명령 | 설명 |
---|---|---|
|
| 현재 로드된 대상 유닛을 나열합니다. |
|
| 현재 대상을 변경합니다. |
10.3.1. 기본 대상 보기
기본적으로 사용되는 대상 장치를 확인하려면 다음 명령을 실행합니다.
systemctl get-default
이 명령은 /etc/systemd/system/default.target
에 있는 심볼릭 링크를 확인하고 결과를 표시합니다. 기본 대상을 변경하는 방법에 대한 자세한 내용은 10.3.3절. “기본 대상 변경” 을 참조하십시오. 현재 로드된 모든 대상 장치를 나열하는 방법에 대한 자세한 내용은 10.3.2절. “현재 대상 보기” 을 참조하십시오.
예 10.10. 기본 대상 보기
기본 대상 장치를 표시하려면 다음을 입력합니다.
~]$ systemctl get-default
graphical.target
10.3.2. 현재 대상 보기
현재 로드된 모든 대상 장치를 나열하려면 쉘 프롬프트에서 다음 명령을 입력합니다.
systemctl list-units --type target
각 대상 유닛에 대해 이 명령은 전체 이름(UNIT
)을 표시하고, 유닛이 로드되었는지 여부(LOAD
), 높은 레벨( started) 및 하위 수준(SUB
) 단위 활성화 상태, 짧은 설명 (DESCRIPTION
)을 표시합니다.
기본적으로 systemctl list-units
명령은 활성 유닛만 표시합니다. 상태에 관계없이 로드된 유닛을 모두 나열하려면 --all
또는 -a
명령줄 옵션을 사용하여 이 명령을 실행하십시오.
systemctl list-units --type target --all
기본 대상을 표시하는 방법에 대한 자세한 내용은 10.3.1절. “기본 대상 보기” 을 참조하십시오. 현재 대상을 변경하는 방법에 대한 자세한 내용은 10.3.4절. “현재 대상 변경” 을 참조하십시오.
예 10.11. 현재 대상 보기
현재 로드된 모든 대상 장치를 나열하려면 다음 명령을 실행합니다.
~]$ systemctl list-units --type target
UNIT LOAD ACTIVE SUB DESCRIPTION
basic.target loaded active active Basic System
cryptsetup.target loaded active active Encrypted Volumes
getty.target loaded active active Login Prompts
graphical.target loaded active active Graphical Interface
local-fs-pre.target loaded active active Local File Systems (Pre)
local-fs.target loaded active active Local File Systems
multi-user.target loaded active active Multi-User System
network.target loaded active active Network
paths.target loaded active active Paths
remote-fs.target loaded active active Remote File Systems
sockets.target loaded active active Sockets
sound.target loaded active active Sound Card
spice-vdagentd.target loaded active active Agent daemon for Spice guests
swap.target loaded active active Swap
sysinit.target loaded active active System Initialization
time-sync.target loaded active active System Time Synchronized
timers.target loaded active active Timers
LOAD = Reflects whether the unit definition was properly loaded.
ACTIVE = The high-level unit activation state, i.e. generalization of SUB.
SUB = The low-level unit activation state, values depend on unit type.
17 loaded units listed. Pass --all to see loaded but inactive units, too.
To show all installed unit files use 'systemctl list-unit-files'.
10.3.3. 기본 대상 변경
기본적으로 다른 대상 장치를 사용하도록 시스템을 구성하려면 쉘 프롬프트에 root
로 다음을 입력합니다.
systemctl set-default name.target
기본적으로 사용할 대상 유닛의 이름으로 이름을 바꿉니다(예: 다중 사용자
). 이 명령은 /etc/systemd/system/default.target
파일을 /usr/lib/systemd/system/name.target
에 대한 심볼릭 링크로 교체합니다. 여기서 name 은 사용하려는 대상 장치의 이름입니다. 현재 대상을 변경하는 방법에 대한 자세한 내용은 10.3.4절. “현재 대상 변경” 을 참조하십시오. 현재 로드된 모든 대상 장치를 나열하는 방법에 대한 자세한 내용은 10.3.2절. “현재 대상 보기” 을 참조하십시오.
예 10.12. 기본 대상 변경
기본적으로 multi-user.target
장치를 사용하도록 시스템을 구성하려면 root
로 다음 명령을 실행합니다.
~]# systemctl set-default multi-user.target rm '/etc/systemd/system/default.target' ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'
10.3.4. 현재 대상 변경
현재 세션에서 다른 대상 단위로 변경하려면 쉘 프롬프트에 root
로 다음을 입력합니다.
systemctl isolate name.target
name 을 사용하려는 대상 유닛의 이름으로 바꿉니다(예: 다중 사용자
). 이 명령은 name 및 모든 종속 유닛이라는 대상 유닛을 시작하고 다른 모든 장치를 즉시 중지합니다. 기본 대상을 변경하는 방법에 대한 자세한 내용은 10.3.3절. “기본 대상 변경” 을 참조하십시오. 현재 로드된 모든 대상 장치를 나열하는 방법에 대한 자세한 내용은 10.3.2절. “현재 대상 보기” 을 참조하십시오.
예 10.13. 현재 대상 변경
그래픽 사용자 인터페이스를 끄고 현재 세션의 multi-user.target
장치로 변경하려면 root
로 다음 명령을 실행합니다.
~]# systemctl isolate multi-user.target
10.3.5. 복구 모드로 변경
복구 모드는 편리한 단일 사용자 환경을 제공하며 일반적인 부팅 프로세스를 완료할 수 없는 상황에서 시스템을 복구할 수 있습니다. 복구 모드에서는 시스템이 모든 로컬 파일 시스템을 마운트하고 일부 중요한 시스템 서비스를 시작하려고 하지만 네트워크 인터페이스를 활성화하지 않거나 더 많은 사용자가 시스템에 로그인할 수 있도록 합니다. Red Hat Enterprise Linux 7에서 복구 모드는 단일 사용자 모드 와 동일하며 root 암호가 필요합니다.
현재 대상을 변경하고 현재 세션에서 복구 모드로 들어가려면 쉘 프롬프트에 root
로 다음을 입력합니다.
systemctl rescue
이 명령은 systemctl isolate rescue.target
과 유사하지만 현재 시스템에 로그인한 모든 사용자에게 정보 메시지를 보냅니다. systemd가 이 메시지를 전송하지 못하도록 하려면 --no-wall
명령줄 옵션을 사용하여 이 명령을 실행하십시오.
systemctl --no-wall rescue
긴급 모드로 전환하는 방법에 대한 자세한 내용은 10.3.6절. “긴급 모드로 변경” 을 참조하십시오.
예 10.14. 복구 모드로 변경
현재 세션에서 복구 모드로 들어가려면 root
로 다음 명령을 실행합니다.
~]# systemctl rescue Broadcast message from root@localhost on pts/0 (Fri 2013-10-25 18:23:15 CEST): The system is going down to rescue mode NOW!
10.3.6. 긴급 모드로 변경
긴급 모드는 가능한 가장 최소한의 환경을 제공하며 시스템이 복구 모드로 전환되지 않은 경우에도 시스템을 복구할 수 있습니다. 긴급 모드에서는 읽기용으로만 루트 파일 시스템을 마운트하고 다른 로컬 파일 시스템을 마운트하지 않고 네트워크 인터페이스를 활성화하지 않으며 몇 가지 필수 서비스만 시작합니다. Red Hat Enterprise Linux 7의 긴급 모드에서는 루트 암호가 필요합니다.
현재 대상을 변경하고 긴급 모드로 전환하려면 쉘 프롬프트에서 root
로 다음을 입력합니다.
systemctl emergency
이 명령은 systemctl isolate emergency.target
과 유사하지만 현재 시스템에 로그인한 모든 사용자에게 정보 메시지를 보냅니다. systemd가 이 메시지를 전송하지 못하도록 하려면 --no-wall
명령줄 옵션을 사용하여 이 명령을 실행하십시오.
systemctl --no-wall emergency
복구 모드로 전환하는 방법에 대한 자세한 내용은 10.3.5절. “복구 모드로 변경” 을 참조하십시오.
예 10.15. 긴급 모드로 변경
현재 시스템에 로그인한 모든 사용자에게 메시지를 보내지 않고 긴급 모드로 전환하려면 root
로 다음 명령을 실행합니다.
~]# systemctl --no-wall emergency
10.4. 시스템 종료, 일시 중지 및 중단
Red Hat Enterprise Linux 7에서 systemctl
유틸리티는 이전 버전의 Red Hat Enterprise Linux 시스템에서 사용된 여러 전원 관리 명령을 대체합니다. 표 10.8. “systemctl과 Power Management Commands 비교” 에 나열된 명령은 호환성 이유로 시스템에서 계속 사용할 수 있지만 가능한 경우 systemctl
을 사용하는 것이 좋습니다.
이전 명령 | 새 명령 | 설명 |
---|---|---|
|
| 시스템을 중지합니다. |
|
| 시스템의 전원을 끕니다. |
|
| 시스템을 다시 시작합니다. |
|
| 시스템을 일시 중지합니다. |
|
| Hibernates the system을 실행합니다. |
|
| Hibernates를 사용하여 시스템을 일시중지합니다. |
10.4.1. 시스템 종료
systemctl
유틸리티는 시스템 종료 명령을 제공하지만 기존 shutdown
명령도 지원됩니다. shutdown
명령은 systemctl
유틸리티를 호출하여 종료를 수행하지만 시간 인수도 지원한다는 장점이 있습니다. 이는 예약된 유지 관리에 특히 유용하며 사용자가 시스템 종료가 예정된 경고에 반응할 수 있도록 더 많은 시간을 허용합니다. 종료를 취소하는 옵션도 장점이 될 수 있습니다.
systemctl 명령 사용
시스템을 종료하고 머신 전원을 끄려면 쉘 프롬프트에 root
로 다음을 입력합니다.
systemctl poweroff
머신 전원을 끄지 않고 시스템을 종료하고 중지하려면 root
로 다음 명령을 실행합니다.
systemctl halt
기본적으로 이러한 명령 중 하나를 실행하면 systemd에서 현재 시스템에 로그인한 모든 사용자에게 정보 메시지를 보냅니다. systemd가 이 메시지를 전송하지 못하도록 하려면 --no-wall
명령줄 옵션을 사용하여 선택한 명령을 실행합니다. 예를 들면 다음과 같습니다.
systemctl --no-wall poweroff
종료 명령 사용
시스템을 종료하고 특정 시간에 머신을 끄려면 다음 형식으로 root
로 명령을 사용합니다.
shutdown --poweroff hh:mm
여기서 hh:mm 는 24시간 시계 형식의 시간입니다. 새 로그인을 방지하기 위해 시스템을 종료하기 전에 /run/nologin
파일이 5분 후에 생성됩니다. 시간 인수를 사용하면 옵션 메시지인 wall 메시지를 명령에 추가할 수 있습니다.
머신 전원을 끄지 않고 잠시 후 시스템을 종료하고 중지하려면 다음 형식으로 root
로 명령을 사용합니다.
shutdown --halt +m
여기서 +m 은 지연 시간(분)입니다. now
키워드는 +0
의 별칭입니다.
보류 중인 종료는 다음과 같이 root
사용자가 취소할 수 있습니다.
shutdown -c
추가 명령 옵션은 shutdown(8)
매뉴얼 페이지를 참조하십시오.
10.4.2. 시스템 다시 시작
시스템을 다시 시작하려면 root
로 다음 명령을 실행하십시오.
systemctl reboot
기본적으로 이 명령을 실행하면 systemd에서 현재 시스템에 로그인한 모든 사용자에게 정보 메시지를 보냅니다. systemd가 이 메시지를 전송하지 못하도록 하려면 --no-wall
명령줄 옵션을 사용하여 이 명령을 실행하십시오.
systemctl --no-wall reboot
10.4.3. 시스템 일시 중단
시스템을 일시 중지하려면 쉘 프롬프트에 root
로 다음을 입력합니다.
systemctl suspend
이 명령은 시스템 상태를 RAM에 저장하고 RAM 모듈을 제외하고 시스템의 대부분의 장치의 전원을 끕니다. 시스템을 다시 켜면 시스템을 다시 부팅할 필요 없이 RAM에서 해당 상태를 복원합니다. 시스템 상태가 하드 디스크가 아닌 RAM에 저장되기 때문에 시스템을 일시 중지 모드로 복원하는 것은 절전 모드에서 복원하는 것보다 훨씬 빠르지만 결과적으로 시스템 정지 상태도 전원 중단에 취약합니다.
시스템 활성화 방법에 대한 자세한 내용은 10.4.4절. “시스템 장애 조치” 을 참조하십시오.
10.4.4. 시스템 장애 조치
시스템에서 root
로 쉘 프롬프트에서 다음을 입력합니다.
systemctl hibernate
이 명령은 시스템 상태를 하드 디스크 드라이브에 저장하고 시스템의 전원을 끕니다. 시스템을 다시 켜면 시스템을 다시 부팅하지 않고도 저장된 데이터에서 해당 상태를 복원합니다. 시스템 상태가 하드 디스크가 아니라 RAM 디스크에 저장되기 때문에 시스템은 RAM 모듈에 전력을 유지해야 할 필요가 없지만 결과적으로 절전 모드에서 시스템을 복원하는 것은 일시 중지 모드에서 복원하는 것보다 훨씬 느려집니다.
RuntimeClass로 시스템을 일시 중단하려면 root
로 다음 명령을 실행합니다.
systemctl hybrid-sleep
시스템을 일시 중지하는 방법에 대한 자세한 내용은 10.4.3절. “시스템 일시 중단” 을 참조하십시오.
10.5. 원격 시스템에서 systemd 제어
systemd 시스템 및 서비스 관리자를 로컬에서 제어하는 것 외에도 systemctl
유틸리티를 사용하면 SSH 프로토콜을 통해 원격 시스템에서 실행되는 systemd와 상호 작용할 수 있습니다. 원격 시스템의 sshd
서비스가 실행 중인 경우 --host
또는 -H
명령줄 옵션을 사용하여 systemctl
명령을 실행하여 이 머신에 연결할 수 있습니다.
systemctl --host user_name@host_name command
user_name 을 원격 사용자의 이름으로, host_name 을 시스템의 호스트 이름으로, 명령을
위에서 설명한 systemctl
명령 중 하나로 바꿉니다. 선택한 사용자가 SSH 프로토콜을 통해 원격 액세스를 허용하도록 원격 시스템을 구성해야 합니다. SSH 서버를 구성하는 방법에 대한 자세한 내용은 12장. OpenSSH 을 참조하십시오.
예 10.16. 원격 관리
server-01.example.com
이라는 원격 시스템에 root
사용자로 로그인하고 httpd.service
유닛의 현재 상태를 확인하려면 쉘 프롬프트에서 다음을 입력합니다.
~]$ systemctl -H root@server-01.example.com status httpd.service
>>>>>>> systemd unit files -- update
root@server-01.example.com's password:
httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
Active: active (running) since Fri 2013-11-01 13:58:56 CET; 2h 48min ago
Main PID: 649
Status: "Total requests: 0; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
10.6. systemd 장치 파일 생성 및 수정
유닛 파일에는 단위를 설명하고 해당 동작을 정의하는 구성 지시문이 포함되어 있습니다. 백그라운드에서 여러 개의 systemctl
명령이 유닛 파일을 사용하여 작동합니다. 보다 세밀하게 조정하려면 시스템 관리자가 수동으로 장치 파일을 편집하거나 생성해야 합니다. 표 10.2. “systemd 장치 파일 위치” 은 시스템에 장치 파일이 저장되는 세 가지 기본 디렉토리를 나열하며, /etc/systemd/system/
디렉터리는 시스템 관리자가 만들거나 사용자 지정할 수 있도록 /etc/systemd/system/ 디렉터리가 예약되어 있습니다.
단위 파일 이름은 다음과 같습니다.
unit_name.type_extension
여기서 unit_name 은 단위 이름을 나타내고 type_extension 은 단위 유형을 식별하며, 전체 단위 유형 목록은 표 10.1. “사용 가능한 systemd 장치 유형” 을 참조하십시오. 예를 들어 일반적으로 시스템에 sshd.service
및 sshd.socket
장치가 있습니다.
추가 구성 파일을 위해 디렉터리로 장치 파일을 추가할 수 있습니다. 예를 들어 sshd.service
에 사용자 지정 구성 옵션을 추가하려면 sshd.service.d/custom.conf
파일을 생성하고 추가 지시문을 삽입합니다. 구성 디렉터리에 대한 자세한 내용은 10.6.4절. “기존 장치 파일 수정” 을 참조하십시오.
또한 sshd.service.wants/
및 sshd.service.requires/
디렉터리를 생성할 수 있습니다. 이러한 디렉터리에는 sshd
서비스의 종속 항목인 단위 파일에 대한 심볼릭 링크가 포함되어 있습니다. 심볼릭 링크는 [Install] 유닛 파일 옵션 또는 [Unit] 옵션 기반 런타임에 따라 설치 중에 자동으로 생성됩니다( 표 10.11. “중요 [설치] 섹션 옵션”참조하십시오. 표 10.9. “중요 [Unit] 섹션 옵션” 이러한 디렉터리와 심볼릭 링크를 수동으로 생성할 수도 있습니다.
많은 단위 파일 옵션은 장치 파일이 로드될 때 장치 매개 변수로 동적으로 대체되는 와일드카드 문자열이라는 so called 단위 쿼리자를 사용하여 설정할 수 있습니다. 이렇게 하면 인스턴스화된 단위를 생성하기 위한 템플릿으로 사용되는 일반 장치 파일을 생성할 수 있습니다. 자세한 내용은 10.6.5절. “인스턴스화된 유닛으로 작업” 을 참조하십시오.
10.6.1. 단위 파일 구조 이해
단위 파일은 일반적으로 다음 세 섹션으로 구성됩니다.
- [unit] - 단위 유형에 의존하지 않는 일반 옵션이 포함되어 있습니다. 이러한 옵션은 단위 설명을 제공하고, 단위의 동작을 지정하고, 종속성을 다른 단위로 설정합니다. 가장 자주 사용되는 [Unit] 옵션의 목록은 표 10.9. “중요 [Unit] 섹션 옵션” 을 참조하십시오.
- [단위 유형] - 단위에 유형별 지시문이 있는 경우 단위 유형 뒤에 이름이 지정된 섹션 아래에 그룹화됩니다. 예를 들어, 서비스 유닛 파일에 [Service] 섹션이 포함되어 있으며, 가장 자주 사용되는 [Service] 옵션은 표 10.10. “중요 [Service] 섹션 옵션” 을 참조하십시오.
-
[install] -
systemctl enable
및disable
명령에 사용되는 유닛 설치에 대한 정보가 포함되어 있습니다. [Install] 옵션 목록은 표 10.11. “중요 [설치] 섹션 옵션” 을 참조하십시오.
옵션[a] 섹션은 systemd.unit(5) 매뉴얼 페이지를 참조하십시오. | 설명 |
---|---|
|
단위에 대한 의미 있는 설명입니다. 이 텍스트는 예를 들어 |
| 단위에 대한 URI 참조 설명서 목록을 제공합니다. |
|
유닛이 시작되는 순서를 정의합니다. 이 단위는 |
|
다른 유닛에 대한 종속성을 구성합니다. |
|
|
|
|
[a]
[Unit]에서 설정할 수 있는 전체 옵션 목록을 보려면
[b]
대부분의 경우 After 및 Before 단위 파일 옵션을 사용하여 순서가 지정된 종속성만 설정하는 것으로 충분합니다. 또한 Wants (recommended) 또는 Requires 를 사용하여 요구 종속성을 설정하는 경우에도 순서 종속성을 지정해야 합니다. 이는 순서 및 요구 사항 종속성이 서로 독립적으로 작동하기 때문입니다.
|
옵션[a] 섹션은 systemd.service(5) 매뉴얼 페이지를 참조하십시오.] | 설명 |
---|---|
|
*
*
*
*
* |
|
단위가 시작될 때 실행할 명령 또는 스크립트를 지정합니다. |
| 장치가 중지될 때 실행할 명령 또는 스크립트를 지정합니다. |
| 장치가 다시 로드될 때 실행할 명령 또는 스크립트를 지정합니다. |
|
이 옵션을 활성화하면 |
|
True로 설정하면 모든 프로세스가 종료된 경우에도 서비스가 활성 상태로 간주됩니다. 기본값은 False입니다. 이 옵션은 |
[a]
[Service에서 구성 가능한 전체 옵션 목록을 보려면
|
옵션[a] 섹션은 systemd.unit(5) 매뉴얼 페이지를 참조하십시오. | 설명 |
---|---|
|
은 단원에 대해 공백으로 구분된 추가 이름 목록을 제공합니다. |
|
단위에 종속된 유닛 목록입니다. 이 유닛을 활성화하면 |
|
장치가 약하게 의존하는 단위 목록입니다. 이 유닛을 활성화하면 |
| 유닛을 설치하거나 제거할 유닛 목록을 지정합니다. |
| 인스턴스화 단위로 제한되는 이 옵션은 장치가 활성화된 기본 인스턴스를 지정합니다. 보기 10.6.5절. “인스턴스화된 유닛으로 작업” |
[a]
[Install에서 구성 가능한 전체 옵션 목록을 보려면
|
단위 구성을 미세 조정하는 데 사용할 수 있는 전체 옵션인 예 10.17. “redfish.service 단위 파일” 은 시스템에 설치된 서비스 단위의 예를 보여줍니다. 또한 단위 파일 옵션은 10.6.5절. “인스턴스화된 유닛으로 작업” 에 설명된 대로 장치를 동적으로 생성하는 방식으로 정의할 수 있습니다.
예 10.17. redfish.service 단위 파일
다음은 postfix 패키지에서 현재 제공하는 /usr/lib/systemd/system/hiera.service
유닛 파일의 내용입니다.
[Unit] Description=Postfix Mail Transport Agent After=syslog.target network.target Conflicts=sendmail.service exim.service [Service] Type=forking PIDFile=/var/spool/postfix/pid/master.pid EnvironmentFile=-/etc/sysconfig/network ExecStartPre=-/usr/libexec/postfix/aliasesdb ExecStartPre=-/usr/libexec/postfix/chroot-update ExecStart=/usr/sbin/postfix start ExecReload=/usr/sbin/postfix reload ExecStop=/usr/sbin/postfix stop [Install] WantedBy=multi-user.target
[Unit] 섹션은 서비스를 설명하고, 정렬 종속성과 충돌하는 단위를 지정합니다. [Service]에서 사용자 지정 스크립트의 순서는 장치 활성화, 중지 및 다시 로드 중에 실행되도록 지정됩니다. EnvironmentFile
은 서비스의 환경 변수가 정의된 위치를 가리킵니다. PIDFile
은 서비스의 기본 프로세스에 대한 안정적인 PID를 지정합니다. 마지막으로 [Install] 섹션에는 서비스를 사용하는 장치가 나열됩니다.
10.6.2. 사용자 지정 유닛 파일 생성
장치 파일을 처음부터 생성하는 몇 가지 사용 사례가 있습니다. 사용자 정의 데몬을 실행하거나, 기존 서비스의 두 번째 인스턴스를 생성( 예 10.19. “sshd 서비스의 두 번째 인스턴스 생성”), SysV init 스크립트( 10.6.3절. “SysV Init 스크립트를 유닛 파일로 변환”참조)를 가져올 수 있습니다. 반면 기존 유닛의 동작을 수정하거나 확장하려는 경우 10.6.4절. “기존 장치 파일 수정” 의 지침을 사용합니다. 다음 절차에서는 사용자 지정 서비스를 생성하는 일반적인 프로세스를 설명합니다.
-
사용자 지정 서비스로 실행 파일을 준비합니다. 사용자 지정 스크립트 또는 소프트웨어 공급자가 제공하는 실행 파일일 수 있습니다. 필요한 경우 사용자 지정 서비스의 기본 프로세스에 대해 상수 PID를 유지하도록 PID 파일을 준비합니다. 서비스에 대한 쉘 변수를 저장할 환경 파일을 포함할 수도 있습니다. 소스 스크립트가 실행 가능하고(
chmod a+x
) 대화형이 아닌지 확인합니다. /etc/systemd/system/
디렉터리에 유닛 파일을 만들고 올바른 파일 권한이 있는지 확인합니다.root
로 실행:touch /etc/systemd/system/name.service
chmod 664 /etc/systemd/system/name.service
name 을 생성할 서비스 이름으로 바꿉니다. 파일은 실행 파일일 필요가 없습니다.
이전 단계에서
만든이름.service
파일을 열고 서비스 구성 옵션을 추가합니다. 생성하려는 서비스 유형에 따라 사용할 수 있는 다양한 옵션이 있습니다. 10.6.1절. “단위 파일 구조 이해” 다음은 네트워크 관련 서비스의 유닛 구성 예입니다.[Unit] Description=service_description After=network.target [Service] ExecStart=path_to_executable Type=forking PIDFile=path_to_pidfile [Install] WantedBy=default.target
다음과 같습니다.
-
service_description 은 저널 로그 파일과
systemctl status
명령의 출력에 표시되는 정보적 설명입니다. -
after
설정
은 네트워크가 실행된 후에만 서비스가 시작되는지 확인합니다. 다른 관련 서비스 또는 대상의 공백으로 구분된 목록을 추가합니다. - path_to_executable 은 실제 실행 파일의 경로를 나타냅니다.
-
type=forking
은 fork 시스템 호출을 수행하는 데몬에 사용됩니다. 서비스의 기본 프로세스는 path_to_pidfile 에 지정된 PID를 사용하여 생성됩니다. 표 10.10. “중요 [Service] 섹션 옵션” 에서 다른 시작 유형을 찾습니다. -
WantedBy
는 서비스를 시작해야 하는 대상 또는 대상을 지정합니다. 이러한 대상을 실행 수준의 이전 개념을 대체하는 대상으로 간주하면 자세한 내용은 10.3절. “systemd 대상 작업” 을 참조하십시오.
-
service_description 은 저널 로그 파일과
root
로 다음 명령을 실행하여새이름.service
파일이 있음을 systemd에 알립니다.systemctl daemon-reload
systemctl start name.service
주의새 장치 파일을 생성하거나 기존 유닛 파일을 수정한 후 항상
systemctl daemon-reload
명령을 실행합니다. 그렇지 않으면 디스크의 systemd 및 실제 서비스 유닛 파일의 상태가 일치하지 않아systemctl start
또는systemctl enable
명령이 실패할 수 있었습니다.이제 10.2절. “시스템 서비스 관리” 에 설명된 명령을 사용하여 다른 시스템 서비스로 .service 이름을 관리할 수 있습니다.
예 10.18. emacs.service 파일 생성
EgressIP 텍스트 편집기를 사용할 때 파일을 편집할 때마다 프로그램의 새 인스턴스를 시작하는 대신 백그라운드에서 실행하는 것이 더 빠르고 편리합니다. 다음 단계는 서비스처럼 처리할 수 있도록 SMT용 유닛 파일을 생성하는 방법을 보여줍니다.
/etc/systemd/system/
디렉터리에 유닛 파일을 만들고 올바른 파일 권한이 있는지 확인합니다.root
로 실행:~]# touch /etc/systemd/system/emacs.service ~]# chmod 664 /etc/systemd/system/emacs.service
파일에 다음 내용을 추가합니다.
[Unit] Description=Emacs: the extensible, self-documenting text editor [Service] Type=forking ExecStart=/usr/bin/emacs --daemon ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)" Environment=SSH_AUTH_SOCK=%t/keyring/ssh Restart=always [Install] WantedBy=default.target
위의 구성을 사용하면 서비스 시작 시
/usr/bin/emacs
실행 파일이 데몬 모드에서 시작됩니다. SSH_AUTH_SOCK 환경 변수는 런타임 디렉터리를 나타내는 "%t" 장치 지정자를 사용하여 설정됩니다. 또한 이 서비스는 예기치 않게 종료되면 emacs 프로세스를 다시 시작합니다.다음 명령을 실행하여 구성을 다시 로드하고 사용자 지정 서비스를 시작합니다.
~]# systemctl daemon-reload ~]# systemctl start emacs.service