검색

시스템 관리자 가이드

download PDF
Red Hat Enterprise Linux 7

RHEL 7 배포, 구성 및 관리

초록

시스템 관리자의 가이드 에서는 Red Hat Enterprise Linux 7의 배포, 구성 및 관리와 관련된 관련 정보를 문서화합니다. 시스템에 대한 기본적인 이해가 있는 시스템 관리자를 대상으로 합니다.
참고
전문 지식을 확장하려면 Red Hat System Administration I(RH124), Red Hat System Administration II(RH134), Red Hat System Administration III(RH254) 또는 RHCSA Rapid Track(RH199) 교육 과정에 관심이 있을 수 있습니다.
Linux Containers 기능과 함께 Red Hat Enterprise Linux 7을 사용하려면 Red Hat Enterprise Linux Atomic Host 제품 설명서 를 참조하십시오. 일반적인 Linux 컨테이너 개념 및 Red Hat Enterprise Linux 7에서 구현된 현재 기능에 대한 개요는 Red Hat Systems의 컨테이너 개요 를 참조하십시오. 컨테이너 관리 및 관리와 관련된 주제는 Red Hat Enterprise Linux Atomic Host 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. 환경의 기본 설정

환경의 기본 구성은 다음과 같습니다.

  • 날짜 및 시간
  • 시스템 지역
  • 키보드 레이아웃

이러한 항목 설정은 일반적으로 설치 프로세스의 일부입니다.

자세한 내용은 설치 방법에 따라 적절한 소스를 참조하십시오.

설치 후 환경의 기본 특성을 재구성해야 하는 경우 이 섹션의 지침을 따르십시오.

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 명령줄 유틸리티를 사용할 수 있습니다.

nmclinmtui 유틸리티에서는 하나 이상의 새 네트워크 연결을 추가하고 기존 연결을 수정 및 검사할 수 있습니다. 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) 유틸리티인 nmtuiNetworkManager 를 제어하여 네트워킹을 구성하는 텍스트 인터페이스를 제공합니다.

nmtui 텍스트 인터페이스 툴 설치 및 사용에 대한 자세한 내용은 Red Hat Enterprise Linux 7 네트워킹 가이드 를 참조하십시오.

1.2.4. 웹 콘솔에서 네트워킹 관리

웹 콘솔에서 네트워킹 메뉴를 사용하면 됩니다.

  • 현재 수신 및 전송된 패킷을 표시하려면 다음을 수행합니다.
  • 사용 가능한 네트워크 인터페이스의 가장 중요한 특성 표시
  • 네트워킹 로그의 콘텐츠를 표시하려면 다음을 수행합니다.
  • 다양한 유형의 네트워크 인터페이스 추가 (bond, team, bridge, VLAN)

그림 1.1. 웹 콘솔에서 네트워킹 관리

네트워킹 n

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 사용자로 수행해야 합니다.

시스템 등록 및 등록

  1. 시스템을 등록합니다.

    ~]# subscription-manager register

    이 명령은 Red Hat Customer Portal 사용자 이름과 암호를 입력하라는 메시지를 표시합니다.

  2. 필요한 서브스크립션의 풀 ID를 확인합니다.

    ~]# subscription-manager list --available

    이 명령은 Red Hat 계정에 사용 가능한 모든 서브스크립션을 표시합니다. 모든 서브스크립션에 대해 풀 ID를 포함하여 다양한 특성이 표시됩니다.

  3. pool_id 를 이전 단계에서 확인한 풀 ID로 교체하여 시스템에 적절한 서브스크립션을 연결합니다.

    ~]# subscription-manager attach --pool=pool_id

시스템 등록 및 Red Hat Content Delivery Network 서브스크립션 첨부에 대한 자세한 내용은 7장. 시스템 등록 및 서브스크립션 관리 을 참조하십시오.

1.3.4. EUS 콘텐츠에 시스템 등록

EUS (Extended Update Support) 콘텐츠에 액세스하려면 다음과 같이 시스템을 등록합니다.

  1. 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
  2. Pool ID를 사용하여 해당 서브스크립션을 연결합니다.

    ~]# subscription-manager attach --pool 8a99f9ac7238188b01723d9c8a8a06a9
  3. 시스템에 활성화된 기본 리포지토리를 EUS 변형으로 바꿉니다.

    ~]# subscription-manager repos --disable \*
  4. 사용 중인 RHEL 버전에 설정된 EUS 콘텐츠를 나타내는 리포지토리를 활성화합니다.

    ~]# subscription-manager repos --enable rhel-7-server-eus-rpms
  5. 최종 시스템에 필요한 릴리스 및 지원되는 릴리스를 선택합니다.

    ~]# subscription-manager release --set 7.6

현재 지원되는 EUS 릴리스는 연장 업데이트 지원 애드온 을 참조하십시오.

1.3.5. E4S 콘텐츠에 시스템 등록

다음 절차에서는 시스템을 등록하고 E4S 콘텐츠를 사용하는 방법을 설명합니다.

  1. 다음 명령을 사용하여 시스템을 등록합니다.

    ~]# subscription-manager register
  2. 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
  3. Pool ID를 사용하여 해당 서브스크립션을 연결합니다.

    ~]# subscription-manager attach --pool=#################
  4. 시스템에 활성화된 기본 리포지토리를 EUS 변형으로 바꿉니다.

    ~]# subscription-manager repos --disable="*"
  5. 사용 중인 RHEL 버전에 설정된 E4S 콘텐츠를 나타내는 리포지토리를 활성화합니다.

    ~]# subscription-manager --enable=rhel-7-server-e4s-rpms
  6. 리포지토리 캐시 및 릴리스 잠금을 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. 웹 콘솔에서 서비스 관리

웹 콘솔에서 Services 를 선택하여 systemd 대상, 서비스, 소켓, 타이머 및 경로를 관리합니다. 여기에서 자신의 상태를 확인, 시작 또는 중지, 활성화 또는 비활성화할 수 있습니다.

그림 1.2. 웹 콘솔에서 서비스 관리

systemd n

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 정책이 적용됨을 의미합니다. SELinuxSELinux 정책 규칙에 따라 액세스를 거부하고, 특히 허용되는 상호 작용만 활성화합니다. 강제 모드는 설치 후 기본 모드이며 가장 안전한 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의 필수 상태 확인

  1. 현재 적용된 SELinux 모드를 표시합니다.

    ~]$ getenforce
  2. 필요한 경우 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 는 강제 모드로 작동합니다. 이 모드를 해제하면 SELinux 를 허용 모드로 전환할 수 있습니다. /etc/sysconfig/selinux 파일의 기본 구성에서 이러한 비교는 다음 부팅 시 자동으로 되돌아갑니다.

그림 1.3. 웹 콘솔에서 SELinux 관리

n의 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 복사

  1. 공개 및 개인 키를 생성합니다.

    ~]$ ssh-keygen

    두 키는 모두 ~/.ssh/ 디렉터리에 저장됩니다.

    • ~/.ssh/id_rsa.pub - public key
    • ~/.SSH/id_rsa - 개인 키

      공개 키는 시크릿일 필요가 없습니다. 개인 키를 확인하는 데 사용됩니다. 개인 키는 시크릿입니다. 키 생성 프로세스 중에 지정한 암호로 개인 키를 보호하도록 선택할 수 있습니다. 암호를 사용하면 인증은 더 안전하지만 더 이상 암호가 제공되지 않습니다. ssh-agent 명령을 사용하여 이를 방지할 수 있습니다. 이 경우 세션이 시작될 때 한 번만 암호를 입력합니다. ssh-agent 구성에 대한 자세한 내용은 12.2.4절. “키 기반 인증 사용” 을 참조하십시오.

  2. 가장 최근에 수정된 공개 키를 로그인하려는 원격 머신에 복사합니다.

    ~]# ssh-copy-id USER@hostname

    따라서 이제 안전한 방법으로 시스템을 입력할 수 있지만 암호를 입력하지 않아도 됩니다.

1.6.3.3. SSH 루트 로그인 비활성화

시스템 보안을 강화하기 위해 기본적으로 활성화되어 있는 root 사용자의 SSH 액세스를 비활성화할 수 있습니다.

이 항목에 대한 자세한 내용은 Red Hat Enterprise Linux 7 보안 가이드 를 참조하십시오.

SSH 루트 로그인 비활성화

  1. /etc/ssh/sshd_config 파일에 액세스합니다.

    ~]# vi /etc/ssh/sshd_config
  2. #PermitRootLogin yes 를 다음과 같이 읽는 행을 변경합니다.

    PermitRootLogin no
  3. 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. 웹 콘솔에서 사용자 계정 관리

계정 n

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 명령을 사용하여 수행할 수 있습니다.

자세한 내용은 설치 방법에 따라 적절한 소스를 참조하십시오.

1.8.3. 설치 프로세스 후 kdump가 설치 및 활성화되었는지 확인

kdump 가 설치되었는지 확인하고 구성하려면 다음을 수행합니다.

kdump 설치 및 kdump 구성 확인

  1. kdump 가 시스템에 설치되어 있는지 확인하려면 다음을 수행하십시오.

    ~]$ rpm -q kexec-tools
  2. 설치되지 않은 경우 kdump 를 설치하려면 root 사용자로 입력합니다.

    ~]# yum install kexec-tools
  3. kdump 를 구성하려면 다음을 수행합니다.

    명령줄 또는 그래픽 사용자 인터페이스를 사용합니다.

    두 옵션 모두 Red Hat Enterprise Linux 7 Kernel Crash Dump Guide에 자세히 설명되어 있습니다.

    그래픽 구성 도구를 설치해야 하는 경우:

    ~]# yum install system-config-kdump

1.8.4. 웹 콘솔에서 kdump 구성

웹 콘솔에서 커널 덤프 를 선택하여 확인합니다.

  • kdump 상태
  • kdump용으로 예약된 메모리 양
  • 크래시 덤프 파일의 위치

그림 1.5. 웹 콘솔에서 kdump 구성

kdump n

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 고객 포털 을 사용하십시오.

이 섹션에서는 다음을 설명합니다.

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 에서 구성해서는 안 됩니다.

표 2.1. /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

localelocalectl 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 매크로 설정

  1. Kickstart 파일의 %post 섹션을 수정합니다.

    LANG=en_US
    echo "%_install_langs $LANG" > /etc/rpm/macros.language-conf
    
    yum-config-manager --setopt=override_install_langs=$LANG --save
  2. Kickstart 파일의 %packages 섹션을 수정합니다.

    %packages
    yum-utils*
    %end

전역적으로 RPM 매크로 설정

  1. 다음 콘텐츠를 사용하여 /etc/rpm/macros. language-conf 에 RPM 구성 파일을 만듭니다.

    %_install_langs LANG

    LANGinstLang 옵션의 값입니다.

  2. /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

maplocalectl 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 명령의 도움말 페이지는 이 도구를 사용하여 가상 콘솔의 키보드 레이아웃을 변경하는 방법에 대한 자세한 정보를 제공합니다.
예를 들면 다음과 같습니다.

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 --sethwclock --systohc 명령을 모두 사용하는 것과 유사합니다.

NTP 서비스가 활성화되면 명령이 실패합니다. 서비스를 일시적으로 비활성화하려면 3.1.5절. “원격 서버와 시스템 Clock 동기화” 을 참조하십시오.

예 3.2. 현재 시간 변경

현재 시간을 11:26 p.m.로 변경하려면 root 로 다음 명령을 실행하십시오.

~]# timedatectl set-time 23:26:00

기본적으로 시스템은 UTC를 사용하도록 구성됩니다. 로컬 시간에 클럭을 유지하도록 시스템을 구성하려면 set-local-rtc 옵션을 roottimedatectl 명령을 실행합니다.

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_zonetimedatectl 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) 매뉴얼 페이지를 참조하십시오.

표 3.1. 일반적으로 사용되는 제어 순서
제어 순서설명

%H

HH 형식의 시간(예: 17)입니다.

%M

MM 형식의 분(예: 30)입니다.

%S

두 번째는 SS 형식의 두 번째 형식(예: 24)입니다.

%d

DD 형식의 월의 일(예: 16).

%m

MM 형식의 월(예: 09).

%Y

octets 형식(예: 2016년)의 연도입니다.

%Z

표준 시간대 약어(예: CEST)입니다.

%F

전체 날짜 (예: 2016-09-16)입니다. 이 옵션은 %Y-%m-%d 와 동일합니다.

%T

HH:MM:SS 형식의 전체 시간(예: 17:30:24)입니다. 이 옵션은 %H:%M:%S와 같습니다.

예 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 명령의 도움말 페이지는 지원되는 명령줄 옵션의 전체 목록을 제공합니다.
예를 들면 다음과 같습니다.

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_MINGID_MIN 지시문을 변경합니다.

[file contents truncated]
UID_MIN         5000
[file contents truncated]
GID_MIN         5000
[file contents truncated]
참고

UID_MINGID_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. “사용자 및 그룹을 관리하기 위한 명령줄 유틸리티” 에 설명된 사용자 및 그룹 관리를 위해 명령줄 툴을 사용할 수 있습니다.

표 4.1. 사용자 및 그룹을 관리하기 위한 명령줄 유틸리티
유틸리티설명

id

사용자 및 그룹 ID를 표시합니다.

useradd, usermod, userdel

사용자 계정을 추가, 수정 및 삭제하는 표준 유틸리티입니다.

groupadd, groupmod, groupdel

그룹을 추가, 수정 및 삭제하는 표준 유틸리티입니다.

gpasswd

유틸리티는 주로 newgrp 명령에서 사용되는 /etc/gshadow 파일에서 그룹 암호를 수정하는 데 사용됩니다.

pwck, grpck

암호, 그룹 및 관련 shadow 파일을 확인하는 데 사용할 수 있는 유틸리티입니다.

pwconv, pwunconv

암호를 섀도우 암호로 변환하거나 섀도 암호에서 표준 암호로 전환하는 데 사용할 수 있는 유틸리티입니다.

grpconv, grpunconv

이전과 유사하게 이러한 유틸리티를 사용하여 그룹 계정에 대한 shadowed 정보를 변환할 수 있습니다.

4.3.1. 새 사용자 추가

새 사용자를 시스템에 추가하려면 쉘 프롬프트에서 root 로 다음을 입력합니다.

useradd options username

여기서 옵션표 4.2. “일반 useradd 명령줄 옵션” 에 설명된 대로 명령줄 옵션입니다.

기본적으로 useradd 명령은 잠긴 사용자 계정을 생성합니다. 계정 잠금을 해제하려면 root 로 다음 명령을 실행하여 암호를 할당합니다.

passwd username

필요한 경우 암호 사용 기간 정책을 설정할 수 있습니다. Red Hat Enterprise Linux 7 보안 가이드의 암호 보안 섹션을 참조하십시오.

표 4.2. 일반 useradd 명령줄 옵션
옵션 

-c '주석'

주석은 임의의 문자열로 교체할 수 있습니다. 이 옵션은 일반적으로 사용자의 전체 이름을 지정하는 데 사용됩니다.

-d home_directory

기본 /home/username/ 대신 사용할 홈 디렉토리입니다.

-e date

octets-MM-DD 형식으로 계정을 비활성화하는 날짜입니다.

-F days

암호가 만료된 후 계정이 비활성화될 때까지 일 수입니다. 0 을 지정하면 암호가 만료된 직후 계정이 비활성화됩니다. -1 을 지정하면 암호가 만료된 후 계정이 비활성화되지 않습니다.

-g group_name

사용자 default( primary) 그룹의 그룹 이름 또는 그룹 번호입니다. 그룹은 여기에 지정되기 전에 존재해야 합니다.

-G group_list

사용자가 멤버인 쉼표로 구분된 추가(기본값 이외의) 그룹 이름 또는 그룹 번호 목록입니다. 그룹은 여기에 지정되기 전에 존재해야 합니다.

-m

홈 디렉터리가 없는 경우 해당 디렉터리를 생성합니다.

-M

홈 디렉터리를 생성하지 마십시오.

-N

사용자에 대한 사용자 개인 그룹을 생성하지 마십시오.

-p password

crypt 로 암호화된 암호.

-r

홈 디렉터리없이 1000 미만의 UID가 있는 시스템 계정을 생성합니다.

-s

기본값은 /bin/bash 인 사용자 로그인 쉘입니다.

-u 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 명령이 섀도가 활성화된 시스템에서 실행된 경우 어떤 일이 발생하는지를 보여줍니다.

  1. /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 로 설정됩니다.
  2. /etc/shadow에 대한 새 행이 /etc/shadow 에 생성됩니다.

    juan:!!:14798:0:99999:7:::

    라인에는 다음과 같은 특징이 있습니다.

    • 사용자 이름으로 시작합니다.
    • 두 개의 느낌표(!!)가 계정을 잠그는 /etc/shadow 파일의 password 필드에 나타납니다.

      참고

      암호화된 암호가 -p 플래그를 사용하여 전달되면 사용자의 새 줄의 /etc/shadow 파일에 배치됩니다.

    • 암호는 만료되지 않음으로 설정됩니다.
  3. jan이라는 그룹의 새 행이 /etc/group 에 생성됩니다.

    juan:x:1001:

    사용자와 동일한 이름을 가진 그룹을 사용자 개인 그룹 이라고 합니다. 사용자 개인 그룹에 대한 자세한 내용은 4.1.1절. “사용자 개인 그룹” 을 참조하십시오.

    /etc/group 에서 생성된 행은 다음과 같은 특징이 있습니다.

    • 그룹 이름으로 시작합니다.
    • 시스템이 섀도우 그룹 암호를 사용하고 있음을 나타내는 x 가 password 필드에 나타납니다.
    • GID는 /etc/passwd 에 있는 juan 의 기본 그룹에 대해 나열된 항목과 일치합니다.
  4. jan이라는 그룹의 새 행이 /etc/gshadow 에 생성됩니다.

    juan:!::

    라인에는 다음과 같은 특징이 있습니다.

    • 그룹 이름으로 시작합니다.
    • 느낌표(! ! )는 그룹을 잠그는 /etc/gshadow 파일의 password 필드에 나타납니다.
    • 다른 모든 필드는 비어 있습니다.
  5. /home 디렉토리에 사용자 juan 의 디렉터리가 생성됩니다.

    ~]# ls -ld /home/juan
    drwx------. 4 juan juan 4096 Mar 3 18:23 /home/juan

    이 디렉토리는 사용자 juan 및 group juan 이 소유합니다. 이 명령은 사용자(Jenan)에 대해서만 읽기,쓰기, 실행 권한을 보유합니다. 기타 모든 권한은 거부됩니다.

  6. /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 명령줄 옵션” 에 설명된 대로 명령줄 옵션입니다.

표 4.3. 공통 groupadd 명령줄 옵션
옵션설명

-f, --force

-gid 및 gid 함께 사용하면 groupadd 가 그룹에 대해 다른 고유한 gid를 선택합니다.

-g gid

그룹의 그룹 ID는 unique이고 unique여야 합니다.

-K, --key key=value

/etc/login.defs 기본값을 재정의합니다.

-o, --non-unique

중복된 GID를 사용하여 그룹을 생성할 수 있습니다.

-p, --password password

이 암호화된 암호를 새 그룹에 사용합니다.

-r

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/ 디렉토리의 파일에서 작업해야 합니다. 일부 사용자는 이 디렉터리의 내용을 수정할 수 있지만 모든 사람이 수정할 수는 없습니다.

  1. 루트 로서 쉘 프롬프트에서 다음을 입력하여 /opt/myproject/ 디렉터리를 만듭니다.

    mkdir /opt/myproject
  2. myproject 그룹을 시스템에 추가합니다.

    groupadd myproject
  3. /opt/myproject/ 디렉터리의 콘텐츠를 myproject 그룹과 연결합니다.

    chown root:myproject /opt/myproject
  4. 그룹의 사용자가 디렉터리 내에 파일을 생성하고 setgid 비트를 설정할 수 있도록 허용합니다.

    chmod 2775 /opt/myproject

    이 시점에서 myproject 그룹의 모든 멤버는 사용자가 새 파일을 쓸 때마다 파일 권한을 변경하지 않고도 /opt/myproject/ 디렉토리에서 파일을 만들고 편집할 수 있습니다. 권한이 올바르게 설정되었는지 확인하려면 다음 명령을 실행합니다.

    ~]# ls -ld /opt/myproject
    drwxrwsr-x. 3 root myproject 4096 Mar 3 18:31 /opt/myproject
  5. 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 always 0 (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 적용

사용자 그룹 Umask 예
중요

보안상의 이유로 일반 파일은 기본적으로 실행 권한을 가질 수 없습니다. 따라서 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,zshtcsh 와 같은 인기 있는 쉘의 경우 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 70007 로 변환됩니다.

예 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 변수 할당을 변경합니다. 이 예에서는 기본 umask0227 로 변경합니다.

  if [ $UID -gt 199 ] && [ “id -gn” = “id -un” ]; then
    umask 002
  else
    umask 227
특정 사용자의 기본 쉘 messages로 작업

기본적으로 새 사용자의 bash umask/etc/bashrc 에 정의된 기본값으로 설정됩니다.

특정 사용자에 대해 bash umask 를 변경하려면 해당 사용자의 $HOME/.bashrc 파일에 있는 dependencies 명령에 대한 호출을 추가합니다. 예를 들어 사용자 johnbash umask0227 로 변경하려면 다음을 수행합니다.

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 (8) - pwconv ,pwunconv,grpconv, grpunconv 명령의 수동 페이지, 암호 및 그룹의 섀도우 정보를 변환하는 방법을 설명합니다.
  • ID (1) - id 명령의 설명서 페이지에서 사용자 및 그룹 ID를 표시하는 방법에 대해 설명합니다.
  • imagestreamtag(2) - 파일 모드 생성 마스크를 사용하는 방법에 대한 permissions 명령의 수동 페이지입니다.

관련 구성 파일에 대한 자세한 내용은 다음을 참조하십시오.

  • 그룹(5) - /etc/group 파일 문서의 도움말 페이지는 이 파일을 사용하여 시스템 그룹을 정의하는 방법을 설명합니다.
  • passwd(5) - 이 파일을 사용하여 사용자 정보를 정의하는 방법을 /etc/passwd 파일의 도움말 페이지.
  • shadow(5) - 이 파일을 사용하여 시스템에 대한 암호 및 계정 만료 정보를 설정하는 방법을 설명합니다.
온라인 문서
  • Red Hat Enterprise Linux 7 보안 가이드 - Red Hat Enterprise Linux 7의 보안 가이드에서 는 암호 사용 기간 및 사용자 계정 잠금을 활성화하여 암호 보안과 워크스테이션을 보호하는 방법에 대한 추가 정보를 제공합니다.
예를 들면 다음과 같습니다.
  • 6장. 권한 확보 susudo 명령을 사용하여 관리 권한을 얻는 방법에 대해 설명합니다.

5장. 액세스 제어 목록

파일 및 디렉터리에는 파일 소유자, 파일과 연결된 그룹, 시스템의 기타 모든 사용자에 대한 권한 세트가 있습니다. 그러나 이러한 권한 세트에는 제한 사항이 있습니다. 예를 들어 다른 사용자에 대해 다른 권한을 구성할 수 없습니다. 따라서 ACL( 액세스 제어 목록 )이 구현되었습니다.

Red Hat Enterprise Linux 커널은 ext3 파일 시스템과 NFS 내보내기 파일 시스템에 대한 ACL 지원을 제공합니다. ACL은 Samba를 통해 액세스하는 ext3 파일 시스템에서도 인식됩니다.

커널의 지원과 함께 ACL을 구현하려면 acl 패키지가 필요합니다. 여기에는 ACL 정보를 추가, 수정, 제거 및 검색하는 데 사용되는 유틸리티가 포함되어 있습니다.

cpmv 명령은 파일 및 디렉터리와 관련된 모든 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을 구성할 수 있습니다.

  1. 사용자당
  2. 그룹당
  3. 효과적인 권한 마스크를 통해
  4. 파일의 사용자 그룹에 없는 사용자의 경우

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 패키지가 필요합니다.

표 5.1. 별표를 위한 명령줄 옵션
옵션설명

-c

아카이브 파일을 생성합니다.

-n

파일을 추출하지 마십시오. -x 와 함께 사용하여 파일 추출 작업을 표시합니다.

-r

아카이브의 파일을 대체합니다. 파일은 아카이브 파일의 끝에 작성되어 모든 파일을 동일한 경로와 파일 이름으로 바꿉니다.

-t

아카이브 파일의 내용을 표시합니다.

-u

아카이브 파일을 업데이트합니다. 아카이브가 없는 경우 또는 파일이 아카이브에서 동일한 이름의 파일보다 최신인 경우 아카이브의 끝에 파일이 작성됩니다. 이 옵션은 아카이브가 파일이거나 백페이스일 수 있는 차단되지 않은 테이프인 경우에만 작동합니다.

-x

아카이브에서 파일을 추출합니다. 아카이브의 -U 및 파일에 사용된 파일이 파일 시스템의 해당 파일보다 오래된 경우 파일을 추출하지 않습니다.

-help

가장 중요한 옵션을 표시합니다.

-xhelp

가장 중요한 옵션을 표시합니다.

-/

아카이브에서 파일을 추출할 때 파일 이름에서 슬래시를 스트라이핑하지 마십시오. 기본적으로 파일을 추출할 때 제거됩니다.

-acl

생성 또는 추출 시 파일 및 디렉터리와 관련된 모든 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 사용자로 시스템에 액세스하는 것은 잠재적으로 위험하며 시스템과 데이터를 광범위하게 손상시킬 수 있습니다. 이 장에서는 susudo 와 같은 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 그룹에 추가하려는 사용자 이름으로 교체합니다.

사용자 설정 툴을 사용하여 다음과 같이 그룹 멤버십을 수정할 수도 있습니다. 이 절차를 수행하려면 관리자 권한이 필요합니다.

  1. Super 키를 눌러 활동 개요를 입력하고 사용자를 입력한 다음 Enter 를 누릅니다. 사용자 설정 도구가 나타납니다. Super 키는 키보드와 기타 하드웨어에 따라 다양한 길잡이에 표시되지만 일반적으로 스페이스바 왼쪽에 있는 Windows 또는 Command 키로 나타납니다.
  2. 변경을 활성화하려면 Unlock 버튼을 클릭하고 유효한 관리자 암호를 입력합니다.
  3. 왼쪽 열에서 사용자 아이콘을 클릭하여 오른쪽 창에 사용자의 속성을 표시합니다.
  4. 계정 유형을 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 서브스크립션 관리를 사용하는 것이 좋습니다.

참고

시스템을 등록하고 초기 설정 프로세스 중에 설치 후 서브스크립션을 연결할 수도 있습니다. 초기 설정에 대한 자세한 내용은 Red Hat Enterprise Linux 7 설치 가이드초기 설정 장을 참조하십시오. Initial Setup 애플리케이션은 설치 시 X Window System과 함께 설치된 시스템에서만 사용할 수 있습니다.

7.1. 시스템 및 연결 서브스크립션 등록

시스템을 등록하고 Red Hat 서브스크립션 관리를 사용하여 서브스크립션을 하나 이상 연결하려면 다음 단계를 완료합니다. 모든 subscription-manager 명령은 root 로 실행되어야 합니다.

  1. 다음 명령을 실행하여 시스템을 등록합니다. 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다. 사용자 이름과 암호는 Red Hat Customer Portal의 로그인 자격 증명과 동일합니다.

    subscription-manager register
  2. 필요한 서브스크립션의 풀 ID를 확인합니다. 이렇게 하려면 쉘 프롬프트에서 다음을 입력하여 시스템에 사용 가능한 모든 서브스크립션 목록을 표시합니다.

    subscription-manager list --available

    사용 가능한 서브스크립션마다 이 명령은 서브스크립션과 관련된 이름, 고유 식별자, 만료일 및 기타 세부 정보를 표시합니다. 모든 아키텍처의 서브스크립션을 나열하려면 --all 옵션을 추가합니다. 풀 ID는 풀 ID 로 시작하는 줄에 나열됩니다.

  3. 다음과 같이 명령을 입력하여 시스템에 적절한 서브스크립션을 연결합니다.

    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. 서브스크립션 제거

특정 서브스크립션을 제거하려면 다음 단계를 완료하십시오.

  1. 이미 연결된 서브스크립션에 대한 정보를 나열하여 제거할 서브스크립션의 일련 번호를 결정합니다.

    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
  2. 다음과 같이 명령을 입력하여 선택한 서브스크립션을 제거합니다.

    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 서브스크립션 관리 사용 방법에 대한 자세한 정보가 포함되어 있습니다.
  • 설치 가이드 - 초기 설정 프로세스 중에 등록하는 방법에 대한 자세한 내용은 초기 설정 장을 참조하십시오.
예를 들면 다음과 같습니다.
  • 6장. 권한 확보 susudo 명령을 사용하여 관리 권한을 얻는 방법에 대해 설명합니다.
  • 9장. yum yum 패키지 관리자를 사용하여 소프트웨어를 설치 및 업데이트하는 방법에 대한 정보를 제공합니다.

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 지원 도구를 고객 포털에 등록하려면 다음과 같이 진행하십시오.

  1. 다음 명령을 입력하여 툴을 시작합니다.

    ~]# redhat-support-tool
  2. Red Hat Customer Portal 사용자 이름을 입력합니다.

    Command (? for help): config user username

    사용자 이름을 글로벌 구성 파일에 저장하려면 -g 옵션을 추가합니다.

  3. 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 모드를 사용하여 새 지원 케이스 열기

대화형 모드를 사용하여 새 지원 케이스를 시작하려면 다음과 같이 진행하십시오.

  1. 다음 명령을 입력하여 툴을 시작합니다.

    ~]# redhat-support-tool
  2. opencase 명령을 입력합니다.

    Command (? for help): opencase
  3. 화면에 표시되는 메시지에 따라 제품을 선택한 다음 버전을 선택합니다.
  4. 케이스 요약을 입력합니다.
  5. 케이스에 대한 설명을 입력하고 완료되면 빈 행에서 Ctrl+D 를 누릅니다.
  6. 케이스의 심각도를 선택합니다.
  7. 필요한 경우 지원 케이스를 열기 전에 이 문제에 대한 해결 방법이 있는지 확인하기로 결정했습니다.
  8. 지원 케이스를 계속 열고 있는지 확인합니다.

    Support case 0123456789 has successfully been opened
  9. 선택적으로 SOS 보고서를 첨부하도록 선택합니다.
  10. 선택적으로 파일을 첨부하도록 선택합니다.

Interactive 모드를 사용하여 기존 지원 케이스 보기 및 업데이트

대화형 모드를 사용하여 기존 지원 케이스를 보고 업데이트하려면 다음과 같이 진행하십시오.

  1. 다음 명령을 입력하여 툴을 시작합니다.

    ~]# redhat-support-tool
  2. getcase 명령을 입력합니다.

    Command (? for help): getcase case-number

    여기서 case-number 는 보고 업데이트하려는 케이스의 수입니다.

  3. 화면의 지침에 따라 케이스를 보거나, 주석을 수정하거나 추가하고, 첨부 파일을 가져오거나 추가합니다.

Interactive 모드를 사용하여 기존 지원 케이스 수정

대화형 모드를 사용하여 기존 지원 케이스의 속성을 수정하려면 다음과 같이 진행하십시오.

  1. 다음 명령을 입력하여 툴을 시작합니다.

    ~]# redhat-support-tool
  2. 수정 케이스 명령을 입력합니다.

    Command (? for help): modifycase case-number

    여기서 case-number 는 보고 업데이트하려는 케이스의 수입니다.

  3. 수정 선택 목록이 나타납니다.

    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.

    화면의 메시지에 따라 하나 이상의 옵션을 수정합니다.

  4. 예를 들어 상태를 수정하려면 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 자체( yumrpm 패키지) 및 종속 항목(예: 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]:

이 출력에는 관심 있는 몇 가지 항목이 포함되어 있습니다.

  1. 로드된 플러그인: langpack, product-id, subscription-manager - YUM은 항상 설치 및 활성화되는 yum 플러그인을 알려줍니다. 특정 플러그인에 대한 설명은 9.6절. “yum 플러그인” 에서 yum 플러그인에 대한 일반 정보는 9.6.3절. “YUM 플러그인 작업” 을 참조하십시오.
  2. rpm.x86_64 - 새 rpm 패키지와 해당 종속 항목을 다운로드하여 설치할 수 있습니다. 트랜잭션 검사는 이러한 각 패키지에 대해 수행됩니다.
  3. 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
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 명령을 사용하면 시스템을 최신 마이너 버전으로 빠르게 업그레이드할 수 있습니다. 다음 단계는 업그레이드 프로세스를 보여줍니다.

  1. ISO 이미지를 마운트할 대상 디렉터리를 생성합니다. 이 디렉터리는 마운트 시 자동으로 생성되지 않으므로 다음 단계를 진행하기 전에 생성합니다. 루트 로서 다음을 입력합니다.

    mkdir mount_dir

    mount_dir 을 마운트 디렉터리의 경로로 바꿉니다. 일반적으로 사용자는 /media 디렉터리에 하위 디렉터리를 생성합니다.

  2. Red Hat Enterprise Linux 7 설치 ISO 이미지를 이전에 생성한 대상 디렉터리에 마운트합니다. 루트 로서 다음을 입력합니다.

    mount -o loop iso_name mount_dir

    iso_name 을 ISO 이미지의 경로로 바꾸고 mount_dir 을 대상 디렉터리의 경로로 바꿉니다. 여기서는 파일을 블록 장치로 마운트하려면 -o loop 옵션이 필요합니다.

  3. 마운트 디렉토리에서 media.repo 파일을 /etc/yum.repos.d/ 디렉토리에 복사합니다. 이 디렉터리의 설정 파일에는 제대로 작동하려면 .repo 확장자가 있어야 합니다.

    cp mount_dir/media.repo /etc/yum.repos.d/new.repo

    이렇게 하면 yum 리포지토리의 구성 파일이 생성됩니다. new.repo 를 파일 이름으로 교체합니다(예: rhel7.repo ).

  4. Red Hat Enterprise Linux 설치 ISO를 가리키도록 새 구성 파일을 편집합니다. /etc/yum.repos.d/new.repo파일에 다음 행을 추가합니다.

    baseurl=file:///mount_dir

    mount_dir 을 마운트 지점의 경로로 바꿉니다.

  5. 이전 단계에서 만든 /etc/yum.repos.d/new.repo 를 포함한 모든 yum 리포지토리를 업데이트합니다. 루트 로서 다음을 입력합니다.

    yum update

    이렇게 하면 마운트된 ISO 이미지에서 제공하는 버전으로 시스템이 업그레이드됩니다.

  6. 성공적으로 업그레이드되면 ISO 이미지를 마운트 해제할 수 있습니다. 루트 로서 다음을 입력합니다.

    umount mount_dir

    여기서 mount_dir 은 마운트 디렉터리의 경로입니다. 또한 첫 번째 단계에서 생성된 마운트 디렉토리를 제거할 수 있습니다. 루트 로서 다음을 입력합니다.

    rmdir mount_dir
  7. 이전에 생성된 구성 파일을 다른 설치 또는 업데이트에 사용하지 않는 경우 제거할 수 있습니다. 루트 로서 다음을 입력합니다.

    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 loop
    rhel-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&hellip;

검색할 패키지 이름으로 용어를 바꿉니다.

예 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&hellip;

예 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&hellip;

예 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&hellip;

예 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&hellip;

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&hellip;

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&hellip;

예 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 를 사용하면yumname-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&hellip;

여러 패키지를 설치할 때 명령에 패키지 이름을 추가하여 한 번에 여러 패키지를 제거할 수 있습니다.

예 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&hellip;

표시되지 않는 사용자 표시로 표시되지 않는 그룹도 나열하도록 숨겨진, 그룹 ID를 나열하는 ID를 포함하여 이 명령에 몇 가지 선택적 인수를 전달할 수 있습니다. 언어,환경,설치 또는 사용 가능한 옵션을 추가하여 명령 출력을 특정 그룹 유형으로 줄일 수 있습니다.

특정 그룹에 포함된 필수 및 선택적 패키지를 나열하려면 다음 명령을 사용합니다.

yum group info glob_expression&hellip;

예 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 를 사용합니다. yumgroup mark 의 기능에 대한 자세한 내용은 yum(8) man 페이지를 참조하십시오.

참고

@^ 접두사를 사용하는 환경 그룹을 식별할 수 있으며 패키지 그룹은 @ 으로 표시할 수 있습니다. 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&hellip;

예 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. “대체 필드의 가능한 값” 에 설명된 대로 추가 정보가 올 수 있습니다.
표 9.1. Action(s) 필드의 가능한 값
동작약어설명

downgrade

D

하나 이상의 패키지가 이전 버전으로 다운그레이드되었습니다.

압축 풀기

E

하나 이상의 패키지가 제거되었습니다.

install

I

새 패키지가 하나 이상 설치되어 있어야 합니다.

Obsoleting

O

하나 이상의 패키지가 더 이상 사용되지 않음으로 표시되었습니다.

reinstall

R

하나 이상의 패키지가 다시 설치되어 있어야 합니다.

update

U

하나 이상의 패키지가 최신 버전으로 업데이트되었습니다.

표 9.2. 대체 필드의 가능한 값
symbol설명

<

트랜잭션이 완료되기 전에 rpmdb 데이터베이스가 yum 외부에서 변경되었습니다.

>

트랜잭션이 완료되면 rpmdb 데이터베이스가 yum 외부에서 변경되었습니다.

*

트랜잭션이 완료되지 못했습니다.

#

트랜잭션이 성공적으로 완료되었지만 yum은 0이 아닌 종료 코드를 반환했습니다.

E

트랜잭션이 성공적으로 완료되었지만 오류 또는 경고가 표시되었습니다.

P

트랜잭션이 성공적으로 완료되었지만 rpmdb 데이터베이스에 문제가 이미 발생했습니다.

트랜잭션이 성공적으로 완료되었지만 --skip-broken 명령줄 옵션이 사용되었으며 특정 패키지를 건너뛰었습니다.

현재 사용된 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&hellip;

예 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 listyum history summary 은 모두 트랜잭션을 지향하지만 지정된 패키지 또는 패키지와 관련된 트랜잭션만 표시할 수 있지만 패키지 버전과 같은 중요한 세부 사항은 표시되지 않습니다. 패키지 관점에서 트랜잭션을 나열하려면 root 로 다음 명령을 실행합니다.

yum history package-list glob_expression&hellip;

예 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&hellip;

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 undoyum 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=value

assumeyes 옵션은 yum이 중요 작업의 확인을 요청하는지 여부를 결정합니다. 값을 다음 중 하나로 바꿉니다.

0 (기본값) - yum은 수행하는 중요한 작업을 확인하라는 메시지를 표시합니다.

1 - 중요한 yum 작업을 확인하라는 메시지가 표시되지 마십시오. yes=1 이 설정된 경우 yum은 명령줄 옵션 -y--assumeyes 와 동일한 방식으로 작동합니다.

cachedir=directory

yum이 캐시 및 데이터베이스 파일을 저장하는 디렉터리를 설정하려면 이 옵션을 사용합니다. 디렉터리 를 디렉터리의 절대 경로로 바꿉니다. 기본적으로 yum의 캐시 디렉토리는 /var/cache/yum/$basearch/$releasever/ 입니다.

$basearch$releasever yum 변수에 대한 설명은 9.5.3절. “YUM 변수 사용” 을 참조하십시오.

debuglevel=value
이 옵션은 yum에서 생성한 디버깅 출력에 대한 세부 정보를 지정합니다. 여기서 value1 에서 10 사이의 정수입니다. 더 높은 debuglevel 값을 설정하면 yum은 더 자세한 디버깅 출력을 표시합니다. debuglevel=2 는 기본값이지만 debuglevel=0 은 디버깅 출력을 비활성화합니다.
exactarch=value

이 옵션을 사용하면 이미 설치된 패키지를 업데이트할 때 정확한 아키텍처를 고려하도록 yum을 설정할 수 있습니다. 값을 다음과 같이 바꿉니다.

0 - 패키지를 업데이트할 때 정확한 아키텍처를 고려하지 마십시오.

1 (기본값) - 패키지를 업데이트할 때 정확한 아키텍처를 고려하십시오. 이 설정을 사용하면 yum은 64비트 아키텍처가 있는 시스템에 이미 설치된 패키지를 업데이트하기 위해 32비트 아키텍처용 패키지를 설치하지 않습니다.

exclude=package_name more_package_names
exclude 옵션을 사용하면 설치 또는 시스템 업데이트 중에 키워드로 패키지를 제외할 수 있습니다. 제외에 대한 여러 패키지를 나열하면 공백으로 구분된 패키지 목록을 인용하여 수행할 수 있습니다. 와일드카드를 사용하는 쉘 와일드카드 표현식(예: *?)이 허용됩니다.
gpgcheck=value

gpgcheck 옵션을 사용하여 yum이 패키지에서 GPG 서명 검사를 수행해야 하는지 지정합니다. 값을 다음과 같이 바꿉니다.

0 - 로컬 패키지 설치를 포함하여 모든 리포지토리의 패키지에서 GPG 서명 확인을 비활성화합니다.

1 (기본값) - 로컬 패키지 설치를 포함하여 모든 리포지토리의 모든 패키지에서 GPG 서명을 확인할 수 있습니다. gpgcheck 가 활성화되면 모든 패키지의 서명이 확인됩니다.

이 옵션이 /etc/yum.conf 파일의 [main] 섹션에 설정된 경우 모든 리포지토리에 대해 GPG-checking 규칙을 설정합니다. 그러나 개별 리포지토리에 대해 gpgcheck=값을 설정할 수도 있습니다. 즉, 다른 리포지토리에서 비활성화하는 동안 한 리포지토리에서 GPG 검사를 활성화할 수 있습니다. 해당 .repo 파일에 개별 리포지토리에 대한 gpgcheck=값을 설정하면 /etc/yum.conf 에 있는 경우 기본값이 재정의됩니다.

group_command=value

group_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=value

keepcache 옵션은 yum이 설치 후 헤더 및 패키지의 캐시를 유지할지 여부를 결정합니다. 여기서 value 는 다음 중 하나입니다.

0 (기본값) - 설치 후 헤더 및 패키지의 캐시를 유지하지 마십시오.

1 - 설치 후 캐시를 유지합니다.

logfile=file_name
로깅 출력 위치를 지정하려면 file_name 을 yum이 로깅 출력을 써야 하는 파일의 절대 경로로 바꿉니다. 기본적으로 yum은 /var/log/yum.log 에 로그합니다.
max_connenctions=number
여기서 값은 최대 동시 연결 수이며 기본값은 5입니다.
multilib_policy=value

multilib_policy 옵션은 패키지 설치에 여러 아키텍처 버전을 사용할 수 있는 경우 설치 동작을 설정합니다. 여기서 값은 다음과 같습니다.

best - 이 시스템에 가장 적합한 아키텍처 설치. 예를 들어, AMD64 시스템에 multilib_policy=best 를 설정하면 yum이 모든 패키지의 64비트 버전을 설치합니다.

all - 항상 모든 패키지에 대해 가능한 모든 아키텍처를 설치합니다. 예를 들어 multilib_policy 가 AMD64 시스템에 모두 설정된 경우 yum은 둘 다 사용할 수 있는 경우 패키지의 i686 및 AMD64 버전을 둘 다 설치합니다.

obsoletes=value

obsoletes 옵션을 사용하면 업데이트 중에 더 이상 사용되지 않는 프로세스 논리를 사용할 수 있습니다. 한 패키지가 다른 패키지를 더 이상 사용하지 않는 사양 파일에서 선언하면 이전 패키지가 설치된 이전 패키지로 교체됩니다. 예를 들어 패키지의 이름이 변경된 경우 obsoletes가 선언됩니다. 값을 다음 중 하나로 바꿉니다.

0 - 업데이트를 수행할 때 yum의 더 이상 사용되지 않는 처리 논리를 비활성화합니다.

1 (기본) - 업데이트를 수행할 때 yum이 더 이상 사용되지 않는 처리 논리를 사용하도록 설정합니다.

plugins=value

yum 플러그인을 활성화 또는 비활성화하기 위한 글로벌 스위치이며 값은 다음 중 하나입니다.

0 - 모든 yum 플러그인을 전역적으로 비활성화합니다.

중요

특정 플러그인이 중요한 yum 서비스를 제공하므로 모든 플러그인을 비활성화하는 것은 권장되지 않습니다. 특히 product-idsubscription-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] 섹션은 repositorymy_personal_repo (공백이 허용되지 않음)와 같은 고유한 리포지토리 ID로 개별 yum 리포지토리를 정의할 수 있도록 합니다. 충돌을 방지하려면 사용자 정의 리포지토리가 Red Hat 리포지토리에서 사용하는 이름을 사용해서는 안 됩니다.

다음은 [리포지토리] 섹션의 최소 예는 다음과 같습니다.

[repository]
name=repository_name
baseurl=repository_url

모든 [repository] 섹션에는 다음 지시문이 포함되어야 합니다.

name=repository_name
여기서 repository_name 은 리포지토리를 설명하는 사람이 읽을 수 있는 문자열입니다.
baseurl=repository_url

repository_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 변수 사용” 을 참조하십시오.

기타 유용한 [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,i686x86_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&hellip;

glob 표현식을 사용하여 일치하는 모든 섹션의 구성을 표시할 수도 있습니다.

yum-config-manager glob_expression&hellip;

예 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&hellip;

리포지토리가 고유한 리포지토리 ID입니다( yum repolist all 을 사용하여 사용 가능한 리포지토리 ID 나열). 또는 glob 표현식을 사용하여 일치하는 모든 리포지토리를 활성화할 수 있습니다.

yum-config-manager --enable glob_expression&hellip;

예 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&hellip;

리포지토리가 고유한 리포지토리 ID입니다( yum repolist all 을 사용하여 사용 가능한 리포지토리 ID 나열). yum-config-manager --enable 도 마찬가지로 glob 표현식을 사용하여 일치하는 모든 리포지토리를 동시에 비활성화할 수 있습니다.

yum-config-manager --disable glob_expression&hellip;

예 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 리포지토리를 설정하려면 다음을 수행합니다.

  1. createrepo 패키지를 설치합니다.

    # yum install createrepo
  2. 새 리포지토리의 모든 패키지를 /tmp/local_repo/ 와 같은 하나의 디렉터리에 복사합니다.

    cp /your/packages/*.rpm /tmp/local_repo/
  3. 리포지토리를 생성하려면 다음을 실행합니다.

    createrepo /tmp/local_repo/

    이렇게 하면 yum 리포지토리에 필요한 메타데이터가 생성되고 새로 생성된 하위 디렉터리 repodata 에 메타데이터를 배치합니다.

    이제 yum에서 리포지토리를 사용할 준비가 되었습니다. 이 리포지토리는 HTTP 또는 FTP 프로토콜을 통해 공유하거나 로컬 머신에서 직접 참조할 수 있습니다. yum 리포지토리를 구성하는 방법에 대한 자세한 내용은 9.5.2절. “[repository] 옵션 설정” 섹션을 참조하십시오.

    참고

    리포지토리에 대한 URL을 구성할 때 이 디렉터리에는 메타데이터만 포함되어 있으므로 /mnt/local_repo /repodata 를 참조하십시오. 실제 yum 패키지는 /mnt/local_repo 에 있습니다.

9.5.6.1. 이미 생성된 yum 리포지토리에 패키지 추가

이미 생성된 yum 리포지토리에 패키지를 추가하려면 다음을 수행합니다.

  1. 새 패키지를 리포지토리 디렉터리(예: /tmp/local_repo/ )에 복사합니다.

    cp /your/packages/*.rpm /tmp/local_repo/
  2. 메타데이터에 새로 추가된 패키지를 반영하려면 다음을 실행합니다.

    createrepo --update /tmp/local_repo/
  3. 선택 사항: 새로 업데이트된 리포지토리와 함께 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-idsubscription-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-rpmverify-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 기본 제공 이메일 알림을 활성화하려면 다음을 수행합니다.

  1. 선택된 yum-cron 구성 파일을 엽니다.

    /etc/yum/yum-cron.conf
    일별 작업을 위한 것입니다.
    /etc/yum/yum-cron-hourly.conf
    시간별 작업의 경우.
  2. [emitters] 섹션에서 다음 옵션을 설정합니다.

    emit_via = email
  3. 필요에 따라 email_from,email_to,email_host 옵션을 설정합니다.

9.7.3. 특정 리포지토리 활성화 또는 비활성화

yum-cron 은 리포지토리의 특정 구성을 지원하지 않습니다. yum-cron 에 대한 특정 리포지토리를 활성화 또는 비활성화하는 해결 방법으로는 일반적으로 yum 의 경우 해당 단계를 수행하지 않습니다.

  1. 시스템의 어디에서나 빈 리포지토리 구성 디렉터리를 생성합니다.
  2. /etc/yum.repos.d/ 디렉토리의 모든 설정 파일을 새로 생성된 이 디렉토리에 복사합니다.
  3. /etc/yum .repo s.d/에 있는 각 .repo 구성 파일에서 다음과 같이 활성화된 옵션을 설정합니다.

    enabled = 1
    리포지토리를 활성화하려면 다음을 수행합니다.
    enabled = 0
    리포지토리를 비활성화하려면 다음을 수행합니다.
  4. 선택한 yum-cron 구성 파일의 끝에 새로 생성된 리포지토리 디렉토리를 가리키는 다음 옵션을 추가합니다.

    reposdir=/path/to/new/reposdir

9.7.4. YUM-cron 설정 테스트

예약된 yum-cron 작업을 기다리지 않고 yum-cron 설정을 테스트하려면 다음을 수행합니다.

  1. 선택된 yum-cron 구성 파일을 엽니다.

    /etc/yum/yum-cron.conf
    일별 작업을 위한 것입니다.
    /etc/yum/yum-cron-hourly.conf
    시간별 작업의 경우.
  2. 선택한 구성 파일에서 random_sleep 옵션을 다음과 같이 설정합니다.

    random_sleep = 0
  3. 구성 파일을 실행합니다.

    # yum-cron /etc/yum/yum-cron.conf
    # yum-cron /etc/yum/yum-cron-hourly.conf

9.7.5. YUM-cron 메시지 비활성화

yum-cron 메시지는 완전히 비활성화할 수 없지만 우선 순위가 중요한 메시지로만 제한할 수 있습니다. 메시지를 제한하려면 다음을 수행합니다.

  1. 선택된 yum-cron 구성 파일을 엽니다.

    /etc/yum/yum-cron.conf
    일별 작업을 위한 것입니다.
    /etc/yum/yum-cron-hourly.conf
    시간별 작업의 경우.
  2. 구성 파일의 [base] 섹션에 다음 옵션을 설정합니다.

    debuglevel = -4

9.7.6. 패키지 자동 정리

yum-cron 서비스는 yum clean all 명령과 유사한 패키지를 제거하는 데 구성 옵션을 지원하지 않습니다. 패키지를 자동으로 정리하려면 실행 가능한 쉘 스크립트로 cron 작업을 생성할 수 있습니다.

  1. 다음을 포함하는 /etc/cron.daily/ 디렉터리에 쉘 스크립트를 생성합니다.

    #!/bin/sh
    yum clean all
  2. 스크립트를 실행 가능하게 만듭니다.

    # 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장. 권한 확보 susudo 명령을 사용하여 관리 권한을 얻는 방법에 대해 설명합니다.

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 장치 유형” 을 참조하십시오.

표 10.1. 사용 가능한 systemd 장치 유형
단위 유형파일 확장자설명

서비스 단위

.service

시스템 서비스.

대상 단위

.target

systemd 장치 그룹입니다.

자동 마운트 단위

.automount

파일 시스템 자동 마운트 지점.

장치 단위

.device

커널에서 인식한 장치 파일입니다.

마운트 단위

.Mount

파일 시스템 마운트 지점.

경로 단위

.path

파일 시스템의 파일 또는 디렉터리.

범위 단위

.scope

외부에서 생성된 프로세스.

슬라이스 단위

.slice

시스템 프로세스를 관리하는 계층적으로 구성된 단위 그룹입니다.

스냅샷 단위

.snapshot

저장된 systemd 관리자 상태입니다.

소켓 단위

.socket

프로세스 간 통신 소켓입니다.

스왑 장치

.swap

스왑 장치 또는 스왑 파일.

타이머 장치

.timer

systemd 타이머.

표 10.2. systemd 장치 파일 위치
디렉터리설명

/usr/lib/systemd/system/

설치된 RPM 패키지와 함께 배포되는 systemd 장치 파일입니다.

/run/systemd/system/

런타임에 생성된 systemd 장치 파일입니다. 이 디렉터리는 설치된 서비스 장치 파일이 있는 디렉터리보다 우선합니다.

/etc/systemd/system/

systemctl enable 를 통해 생성된 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,stopstatus 와 같은 표준 명령 외에도 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 에 연결하여 사용자와의 상호 작용을 방지합니다.
  • 시스템 서비스는 호출된 사용자 및 해당 세션에서 어떠한 컨텍스트(예: HOMEPATH 환경 변수)를 상속하지 않습니다. 각 서비스는 명확한 실행 컨텍스트에서 실행됩니다.
  • 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 명령을 사용합니다. servicechkconfig 명령은 계속 시스템에서 사용할 수 있으며 예상대로 작동하지만 호환성상의 이유로만 포함되어 피해야 합니다.

표 10.3. systemctl과 서비스 utility 비교
servicesystemctl설명

서비스 이름 시작

systemctl start name.service

서비스를 시작합니다.

service name stop

systemctl stop name.service

서비스를 중지합니다.

서비스 이름 재시작

systemctl restart name.service

서비스를 다시 시작합니다.

서비스 이름 condrestart

systemctl try-restart name.service

실행 중인 경우에만 서비스를 다시 시작합니다.

서비스 이름 다시 로드

systemctl reload name.service

구성을 다시 로드합니다.

service name status

systemctl status name.service

systemctl is-active name.service

서비스가 실행 중인지 확인합니다.

service --status-all

systemctl list-units --type service --all

모든 서비스의 상태를 표시합니다.

표 10.4. systemctl과 chkconfig utility 비교
chkconfigsystemctl설명

chkconfig name on

systemctl enable name.service

서비스를 활성화합니다.

chkconfig 이름 off

systemctl disable name.service

서비스를 비활성화합니다.

chkconfig --list name

systemctl status name.service

systemctl is-enabled name.service

서비스가 활성화되어 있는지 확인합니다.

chkconfig --list

systemctl list-unit-files --type service

모든 서비스를 나열하고 활성화되어 있는지 확인합니다.

chkconfig --list

systemctl list-dependencies --after

지정된 유닛 전에 시작하도록 정렬된 서비스를 나열합니다.

chkconfig --list

systemctl list-dependencies --before

지정된 유닛 후에 시작하도록 정렬된 서비스를 나열합니다.

서비스 단위 지정

명확성을 위해 이 섹션의 모든 명령 예제는 .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 enablesystemctl 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 사용자가 실행하는 경우 가장 최근 로그 항목도 표시합니다.

표 10.5. 사용 가능한 서비스 단위 정보
필드설명

loaded

서비스 유닛이 로드되었는지 여부, 단위 파일의 절대 경로 및 장치가 활성화되었는지 여부를 나타냅니다.

active

서비스 유닛이 실행 중인지 여부 및 타임스탬프를 제공합니다.

Main PID

해당 시스템 서비스의 PID와 해당 이름.

상태

해당 시스템 서비스에 대한 추가 정보입니다.

process

관련 프로세스에 대한 추가 정보.

cgroup

관련 제어 그룹(cgroups)에 대한 추가 정보.

특정 서비스 장치가 실행 중인지 확인하려면 다음 명령을 실행합니다.

systemctl is-active name.service

마찬가지로 특정 서비스 장치가 활성화되어 있는지 여부를 확인하려면 다음을 입력합니다.

systemctl is-enabled name.service

systemctl is-activesystemctl 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-restartreload-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.service 파일에 대한 적절한 심볼릭 링크를 생성합니다. 그러나 이 명령은 이미 존재하는 링크를 다시 작성하지 않습니다. 심볼릭 링크가 다시 생성되었는지 확인하려면 root 로 다음 명령을 사용하십시오.

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.service 파일에 대한 적절한 심볼릭 링크를 제거합니다. 또한 서비스 유닛을 마스킹하여 수동으로 또는 다른 서비스에 의해 시작되지 않도록 할 수 있습니다. 이렇게 하려면 root 로 다음 명령을 실행하십시오.

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 대상의 전체 목록을 제공합니다.

표 10.6. systemd 대상과 SysV Runlevels 비교
실행 수준대상 단위설명

0

runlevel0.target, poweroff.target

시스템을 종료하고 전원을 끕니다.

1

runlevel1.target, rescue.target

복구 쉘을 설정합니다.

2

runlevel2.target, multi-user.target

그래픽이 아닌 다중 사용자 시스템을 설정합니다.

3

runlevel3.target, multi-user.target

그래픽이 아닌 다중 사용자 시스템을 설정합니다.

4

runlevel4.target, multi-user.target

그래픽이 아닌 다중 사용자 시스템을 설정합니다.

5

runlevel5.target, graphical.target

그래픽 다중 사용자 시스템을 설정합니다.

6

runlevel6.target, reboot.target

시스템을 종료하고 재부팅합니다.

systemd 대상을 확인, 변경 또는 구성하려면 표 10.7. “systemctl과 SysV init 명령 비교” 및 아래 섹션에서 systemctl 유틸리티를 사용합니다. 실행 수준telinit 명령은 계속 시스템에서 사용할 수 있으며 예상대로 작동하지만 호환성상의 이유로만 포함되어 있어야 합니다.

표 10.7. systemctl과 SysV init 명령 비교
이전 명령새 명령설명

실행 수준

systemctl list-units --type 대상

현재 로드된 대상 유닛을 나열합니다.

telinit 실행 수준

systemctl isolate name.target

현재 대상을 변경합니다.

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 을 사용하는 것이 좋습니다.

표 10.8. systemctl과 Power Management Commands 비교
이전 명령새 명령설명

Halt

systemctl halt

시스템을 중지합니다.

poweroff

systemctl poweroff

시스템의 전원을 끕니다.

reboot

systemctl reboot

시스템을 다시 시작합니다.

pm-suspend

systemctl suspend

시스템을 일시 중지합니다.

pm-hibernate

systemctlloadbalancing

Hibernates the system을 실행합니다.

pm-suspend-hybrid

systemctl hybrid-sleep

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.servicesshd.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 enabledisable 명령에 사용되는 유닛 설치에 대한 정보가 포함되어 있습니다. [Install] 옵션 목록은 표 10.11. “중요 [설치] 섹션 옵션” 을 참조하십시오.
표 10.9. 중요 [Unit] 섹션 옵션
옵션[a] 섹션은 systemd.unit(5) 매뉴얼 페이지를 참조하십시오.설명

설명

단위에 대한 의미 있는 설명입니다. 이 텍스트는 예를 들어 systemctl status 명령 출력에 표시됩니다.

문서

단위에 대한 URI 참조 설명서 목록을 제공합니다.

이후[b]

유닛이 시작되는 순서를 정의합니다. 이 단위는 After 에 지정된 단위가 활성화된 후에만 시작됩니다. Requires 와 달리,After 는 지정된 단위를 명시적으로 활성화하지 않습니다. Before 옵션은 다음과 같은 기능을 수행합니다.

필수 항목

다른 유닛에 대한 종속성을 구성합니다. Requires 에 나열된 단위는 장치와 함께 활성화됩니다. 필요한 유닛 중 하나라도 시작되지 않으면 장치가 활성화되지 않습니다.

원하는 경우

Requires 보다 약한 종속성을 설정합니다. 나열된 유닛 중 하나라도 성공적으로 시작되지 않으면 장치 활성화에 영향을 미치지 않습니다. 사용자 지정 유닛 종속성을 설정하는 것이 좋습니다.

충돌

Requires 와 반대로 음수 종속성을 설정합니다.

[a] [Unit]에서 설정할 수 있는 전체 옵션 목록을 보려면
[b] 대부분의 경우 AfterBefore 단위 파일 옵션을 사용하여 순서가 지정된 종속성만 설정하는 것으로 충분합니다. 또한 Wants (recommended) 또는 Requires 를 사용하여 요구 종속성을 설정하는 경우에도 순서 종속성을 지정해야 합니다. 이는 순서 및 요구 사항 종속성이 서로 독립적으로 작동하기 때문입니다.
표 10.10. 중요 [Service] 섹션 옵션
옵션[a] 섹션은 systemd.service(5) 매뉴얼 페이지를 참조하십시오.]설명

유형

ExecStart 및 관련 옵션의 기능에 영향을 주는 유닛 프로세스 시작 유형을 구성합니다. 다음 중 하나:

* simple - 기본값입니다. ExecStart 로 시작하는 프로세스는 서비스의 주요 프로세스입니다.

* 예약 - ExecStart 로 시작하는 프로세스는 서비스의 주요 프로세스가 되는 하위 프로세스를 생성합니다. 상위 프로세스는 시작이 완료되면 종료됩니다.

* shot - 이 유형은 simple 과 유사하지만 consequent 장치를 시작하기 전에 프로세스가 종료됩니다.

* dbus - 이 유형은 단순 과 유사하지만, 주 프로세스에서 D-Bus 이름을 얻은 후에만 시작됩니다.

알림 - 이 유형은 단순 과 유사하지만 연속 단위는 sd_notify() 함수를 통해 알림 메시지를 보낸 후에만 시작됩니다.

* idle - 단순 과 유사하게 모든 작업이 완료될 때까지 서비스 바이너리의 실제 실행이 지연되어 상태 출력을 서비스의 쉘 출력과 혼합하지 않습니다.

ExecStart

단위가 시작될 때 실행할 명령 또는 스크립트를 지정합니다. ExecStart PreExecStartPost 이전 및 이후 실행할 사용자 지정 명령을 지정합니다. type=oneshot 을 사용하면 순차적으로 실행되는 여러 사용자 지정 명령을 지정할 수 있습니다.

ExecStop

장치가 중지될 때 실행할 명령 또는 스크립트를 지정합니다.

ExecReload

장치가 다시 로드될 때 실행할 명령 또는 스크립트를 지정합니다.

재시작

이 옵션을 활성화하면 systemctl 명령의 명확한 중지를 제외하고 프로세스가 종료된 후 서비스가 다시 시작됩니다.

RemainAfterExit

True로 설정하면 모든 프로세스가 종료된 경우에도 서비스가 활성 상태로 간주됩니다. 기본값은 False입니다. 이 옵션은 Type=oneshot 이 구성된 경우 특히 유용합니다.

[a] [Service에서 구성 가능한 전체 옵션 목록을 보려면
표 10.11. 중요 [설치] 섹션 옵션
옵션[a] 섹션은 systemd.unit(5) 매뉴얼 페이지를 참조하십시오.설명

별칭

은 단원에 대해 공백으로 구분된 추가 이름 목록을 제공합니다. systemctl enable 을 제외한 대부분의 systemctl 명령은 실제 유닛 이름 대신 별칭을 사용할 수 있습니다.

RequiredBy

단위에 종속된 유닛 목록입니다. 이 유닛을 활성화하면 RequiredBy 에 나열된 단위가 단위에 대한 종속성이 요구됩니다.

WantedBy

장치가 약하게 의존하는 단위 목록입니다. 이 유닛을 활성화하면 WantedBy 에 나열된 단위가 단위에 대해 Want dependency를 얻습니다.

Also

유닛을 설치하거나 제거할 유닛 목록을 지정합니다.

DefaultInstance

인스턴스화 단위로 제한되는 이 옵션은 장치가 활성화된 기본 인스턴스를 지정합니다. 보기 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절. “기존 장치 파일 수정” 의 지침을 사용합니다. 다음 절차에서는 사용자 지정 서비스를 생성하는 일반적인 프로세스를 설명합니다.

  1. 사용자 지정 서비스로 실행 파일을 준비합니다. 사용자 지정 스크립트 또는 소프트웨어 공급자가 제공하는 실행 파일일 수 있습니다. 필요한 경우 사용자 지정 서비스의 기본 프로세스에 대해 상수 PID를 유지하도록 PID 파일을 준비합니다. 서비스에 대한 쉘 변수를 저장할 환경 파일을 포함할 수도 있습니다. 소스 스크립트가 실행 가능하고( chmod a+x) 대화형이 아닌지 확인합니다.
  2. /etc/systemd/system/ 디렉터리에 유닛 파일을 만들고 올바른 파일 권한이 있는지 확인합니다. root 로 실행:

    touch /etc/systemd/system/name.service
    chmod 664 /etc/systemd/system/name.service

    name 을 생성할 서비스 이름으로 바꿉니다. 파일은 실행 파일일 필요가 없습니다.

  3. 이전 단계에서 만든이름.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 대상 작업” 을 참조하십시오.
  4. 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용 유닛 파일을 생성하는 방법을 보여줍니다.

  1. /etc/systemd/system/ 디렉터리에 유닛 파일을 만들고 올바른 파일 권한이 있는지 확인합니다. root 로 실행:

    ~]# touch /etc/systemd/system/emacs.service
    ~]# chmod 664 /etc/systemd/system/emacs.service
  2. 파일에 다음 내용을 추가합니다.

    [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 프로세스를 다시 시작합니다.

  3. 다음 명령을 실행하여 구성을 다시 로드하고 사용자 지정 서비스를 시작합니다.

    ~]# systemctl daemon-reload
    ~]# systemctl start emacs.service