-
리눅스 바이블: Chapter 8. Becoming a Linux System Administrator 정리리눅스 2021. 2. 13. 17:19
1. Understanding System Administration
관리자를 왜 다른 사용자들과 구분할까?
-> 시스템의 보안적인 문제와 시스템에 악영향을 방지하기 위함
일반적인 사용자들은 종종 관리자의 권한이 필요할 때가 있다.
다음은 관리자의 권한이 필요한 경우이다.
- su command : root 사용자로서 쉘을 열고, 관리자로서 다양한 커맨드를 수행할 수 있다.
- sudo command : 일반 사용자는 sudo 커맨드를 이용하여 root의 특권을 부여한다.
커맨드 사용 후, 다시 일반 사용자의 권한을 가진다.
- Graphical windows : 일반 사용자로 시작되지만, 루트의 권한이 필요한 경우가 있다.
- Filesystems : 리눅스 설치시 디렉토리구조는 시스템을 사용하지 못하게 설정된다. 만약 사용자가 추가적인 저장소나
홈 디렉토링 밖에 파일시스템 레이아웃등을 바꾸고 싶다면 관리자 권한이 필요하-config-nfs다. 또한 루트 사용자는
다른 사용자들의 파일에 대한 퍼미션을 갖는다.
- Software installation : 잘못된 소프트 웨어 설치는 시스템이나 보안에 악영향을 끼칠 수 있으므로, 소프트 웨어 설치시
루트권한을 필요로 한다.
- User accounts : 오직 root 사용자만이 사용자를 추가, 삭제할 수 있다.
- Network interfaces : 과거에는 root 사용자만이 네트워크 인터페이스를 관리할 수 있었지만
현재는 많은 리눅스 데스크탑들이 일반 사용자들에게도 네트워크 관리를 허용한다.
- Servers : 웹서버, 파일 서버, dns서버, 메일서버등을 확인할 때 루트 사용자 권한이 필요하다.
- Security features : firewall이나 user acess list 설정시 root 사용자 권한이 필요하다. 또한 루트 사용자만이
서비스 모니터링을 할 수 있다.
2. Using Graphical Administration Tools
(1) Using system-config-* tools
system-config-* 툴은 시스템에 장착되어 있는 하드웨어 자원과 시스템에 대한 각종 정보를 x윈도를 통해 관리해 주는 도구
system-config 툴 사용을 위해선 root 퍼미션을 허용해주어야 한다.
- Domain Name System(system-config-bind) : 컴퓨터가 DNS서버로써 동작한다면 위 파일 생성
- HTTP(system-config-httpd) : 아파치 웹 서버로 동작
- NFS(system-config-nfs) : NFS 서비스를 사용하여 네트워크의 다른 컴퓨터와 공유할 시스템의 디렉토리를 설정
- Root Password(system-config-rootpassword) : root password를 변경
- Samba NFS(system-config-samba) : Windows(SMB) 파일 공유를 구성
다음 그래픽 도구는 Fedora 및 Red Hat Enterprise Linux에서 모두 사용가능하다.
- Services(system-config-services) : 서비스 구성 창에서 다른 실행 수준에서 실행 중인 서비스를 표시하고 변경
- Authentication(authconfig-gtk) : 사용자의 인증 방법 변경
- Date & Time (system-config-date) : 날짜와 시간을 설정하거나 NTP 서버가 시스템 시간을 동기화하도록 선택
- Firewall(system-config-control) : 네트워크에서 컴퓨터에 대한 서비스를 허용하거나 거부하도록 방화벽을 구성
- Language(system-config-language) : 시스템에 사용되는 기본 언어를 선택
- Printing(system-config-contract) : 로컬 및 네트워크 프린터를 구성
- SELinux 관리(policy core utils-gui) : SELinux 시행 모드 및 기본 정책을 설정
- Users & Groups(system-config-users) : Fedora 시스템의 사용자 및 그룹 계정을 추가, 표시 및 변경- configuration Editor(gconf-closer) : GNOME 구성 데이터베이스를 직접 편집
- Disk Usage Analyzer(gnome-utils) : 하드 디스크 및 이동식 저장 장치에 대한 자세한 정보를 표시
- Disk Utility : 디스크 파티션 관리 및 파일 시스템 추가
- Kickstart(system-config-kickstart): 사용자 상호 작용 없이 여러 Linux 시스템을 설치하는 데 사용할 수 있는 kickstart configuration 파일 생성이외에도 browser-based admin tool등이 있다.
3. Using the root user account
모든 리눅스 시스템에는 적어도 하나의 관리자 계정(root 사용자)과 하나 이상의 일반 사용자들로 구성된다.
대부분의 경우 일반 사용자로 로그인하며, 관리자계정이 필요한 task수행시 root 사용자로 로그인한다.
root 사용자로 로그인시, 다음 위치에 존재
root 사용자에 대한 정보를 자세히 보고 싶으면 /etc/passwd 참고
차례로 name, user ID, group ID, home 디렉토리, 사용하는 쉘을 알 수 있다.
(1) Becoming root from the shell(su command)
일반 사용자로 로그인 후, 잠깐동안 빠르게 관리자 권한을 사용하고 싶은 경우에
프롬프트가 일반 유저($) 에서 슈퍼 유저(#)로 바뀌었음을 알 수 있다.
하지만 위 방식은 루트 환경에서 read가 되지 않는다. 결론적으로 다음과 같은 방식을 사용
다음과 같이 root사용자 접속뿐만아니라 다른 일반사용자로도 접속 가능하다.
(나오고 싶다면 crtl + D 나 exit)
(2) Gaining administrative access with sudo
일반 사용자는 sudo를 이용하여 passwd 입력없이 관리자 권한의 특정 task를 처리할 수 있다.
이러한 특권을 사용하기 위해 sudoer이 가장 흔하게 사용된다.
sudoer 란 일반 계정이 sudo 명령어를 이용하여, 임시로 root 권한을 얻을 수 있는 것을 말한다.
일반 계정에 sudo 권한을 주기 위해선 /etc/sudoers 파일에 대한 수정이 필요하다.:
root 계정으로 접속 후 /etc/sudoers에 쓰기 권한 부여
blue 사용자에게 password 확인 없이 sudo 사용 권한을 허락한다.
저장 후 권한 원래대로 돌리기
다음과 같이 blue 계정에서 sudo 패스워드 입력없이 sudo 사용
4. Exploring Administrative Commands, Configuration Files, and Log Files
(1) Administrative Commands
root 계정으로 로그인시 많은 관리자 커맨드를 사용할 수 있게 된다.
$PATH 환경변수가 root 사용자 전용 커맨드를 포함한 디렉토리경로를 포함하기 때문이다.
- sbin/ : 시스템 부팅에 필요한 커맨드가 존재
- /usr/sbin : 사용자 계정관리에 커맨드들이 존재한다.(useradd와 같은)
(2) Administrative confguration files
구성 파일은 리눅스 시스템 관리의 중심이다. 컴퓨터의 거의 모든 세팅들이 plaintext file로 저장된다.
이러한 text 파일의 장점은 읽기 쉽고 수정하기 쉬우며 어떠한 텍스트 에디터든 다 활용가능하다.
반면, 에러의 확인과 수정이 어렵다는 단점이 있다.
몇몇의 구성파일은 xml같은 기본 구조를 사용하여 에러를 확인하기 쉽지만, 그렇지 않은 파일 또한 많다.
그래서 그외의 구성파일에 대한 구조와 규칙을 알아야 한다.
- $HOME : 모든 사용자들이 로그인 후 해야 할 행동들을 자신의 홈 디렉토리에 저장해놓는다.
많은 구성파일은 각 사용자의 홈 디렉토리에 있으며 이는 dot(.)으로 시작한다.
이렇게 dot로 시작하는 파일들은 숨김파일로 저장되며 각 사용자의 쉘안에서 행동들을 정의한다.
예를 들면, 다음과 같이 seung 사용자 계정에서 .ssh 파일은 원격 시스템에 로그인 하기 위한 퍼미션을 구성하는 파일
- /etc : 대부분의 기본적인 리눅스 시스템 구성파일을 담은 디렉토리
- /etc/cron* : 시간에 대한 동작을 정의한 파일을 담은 디렉토리
- /etc/cups : common unix printing systems의 약자로, printing system을 구성하는 디렉토리
- /etc/default : 다양한 유틸리티에 대한 디폴트 값들을 담은 디렉토리
- /etc/httpd : 아파치 웹 서버에 대한 동작방식을 구성하는 파일을 담은 디렉토리
- /etc/init.d : System V-style run-level scripts의 영구적 복사본을 포함
- /etc/mail : send mail agent에 대한 구성을 담은 파일
- /etc/pcmcia : 컴퓨터를 구성하는 다양한 PCMCIA 카드 소유를 허용하는 파일
여기서 PCMCIA 카드는 일반적으로 랜카드, 모뎀, 하드디스크를 말한다.
- etc/postfix : postfix mail agent에 대한 구성 파일을 담은 디렉토리
- etc/ppp : Point-to-Point protocol 에 대한 세팅을 위한 구성파일을 포함
- etc/security : 컴퓨터에 대한 디폴트 보안 컨디션을 세팅하는 구성 파일 포함
- etc/skel : 사용자가 시스템에 추가될 때, 사용자의 홈 디렉토리를 자동으로 복사하는 파일을 포함
- etc/sysconfig : 다양한 서비스에 의해 만들어지는 중요한 시스템 구성 파일을 포함
- etc/systemd : 부팅과정과 시스템 서비스 관리와 연관된 파일을 포함
- etc/xinetd.d : 온-디맨드 네트워크 서비스를 정의하는 파일을 포함
다음은 /etc 안에 있는 많은 구성파일들...
- aliases : 리눅스 메일 시스템에 사용되는 distribution list를 포함
- bashrc : bash shell 사용자들에 대한 디폴트 세팅을 포함
- crontab : 자동화된 task 실행 시간을 세팅
- exports : NFS를 사용하는 원격 컴퓨터와 공유할 수 있는 로컬 디렉토리를 포함
- fstab : 스토리지 디바이스에 대한 정보들을 명시
- group : 시스템에 정의된 그룹이름과 그룹아이디를 명시
- gshadow : 그룹 shadow passwd를 포함
- host.conf : 기존 응용 프로그램에서 TCP/IP 네트워크(예: redhat.com)에서 도메인 이름이 검색되는 위치를 설정하는 데 사용
- host name : 로컬 시스템의 호스트 이름을 포함
- hosts : 컴퓨터에서 연결할 수 있는 IP 주소와 호스트 이름을 포함
- hosts.allow : 로컬 컴퓨터의 특정 TCP/IP 서비스를 사용할 수 있는 호스트 시스템을 나열
- hosts.deny : 로컬 컴퓨터에서 특정 TCP/IP 서비스를 사용할 수 없는 호스트 시스템을 나열
- mtab : 현재 마운트된 파일 시스템 목록을 포함
- mtools.conf : 리눅스의 DOS 도구에서 사용하는 설정이 포함
- named.conf : 자신의 DNS 서버(부착 또는 bind9 패키지)를 실행 중인 경우 DNS 설정을 포함
- nsswitch.conf : 중요 시스템 정보(사용자 계정, 호스트 이름 대 주소 매핑 등)가 (로컬 호스트 또는 네트워크 서비스를 통해) 어디에서 왔는지 식별하기 위한 이름 서비스 스위치 설정이 포함
- ntp.conf : NTP(Network Time Protocol)를 실행하는 데 필요한 정보를 포함
- passwd : 로컬 시스템의 모든 유효한 사용자에 대한 계정 정보를 저장
- printcap : 컴퓨터에 구성된 프린터에 대한 정의를 포함
- profile : 모든 사용자를 위한 시스템 전체 환경 및 시작 프로그램을 설정 (사용자가 로그인할 때 읽히는 파일)
- protocols : 다양한 인터넷 서비스의 프로토콜 번호와 이름을 설정
- rpc : 원격 프로시저 호출 이름 및 번호를 정의
- services : TCP/IP 및 UDP 서비스 이름과 해당 포트 할당을 정의
- shadow : 암호에 정의된 사용자의 encrypted된 암호가 들어 있다.
- shells : 시스템에서 사용할 수 있는 쉘 명령줄 인터프리터(sell, sh, csh 등)와 해당 위치를 나열
- sudoers : sudo 명령을 사용하여 명령 실행 권한이 없는 사용자가 실행할 수 있는 명령을 설정
- rsyslog.conf : rsyslogd 데몬이 수집하는 로깅 메시지와 해당 메시지를 저장할 파일을 정의
- termcap : 특정 터미널에서 지원하는 기능을 문자 기반 응용 프로그램이 알 수 있도록 문자 터미널에 대한 정의를 나열
- xinetd.conf : xinetd에서 사용하는 간단한 구성 정보 포함(3) Administrative log files and systemd journal
리눅스 시스템에서 어떤 작업을 수행중, 이유도 모른채 실패하는 경우도 있고,
어떤 사람들이 내 컴퓨터에 불법적으로 엑세스하는지 모니터링하고 싶은 경우도 있다.
이러한 경우, systemd의 journal을 확인한다.
여기서 Systemd는 Linux 시스템이 부팅 할 때 실행되는 프로그램을 제어하기위한 표준 프로세스를 제공한다.
다음은 systemd의 journal을 확인하기 위한 journalctl 커맨드다.
반응형'리눅스' 카테고리의 다른 글
리눅스 바이블: Chapter 10. Getting and Managing Software 정리 (0) 2021.02.21 리눅스 바이블: Chapter 7. Writing Simple Shell Script 정리 (0) 2021.02.21 리눅스 바이블: Chapter6. Managing Running Process 정리 (0) 2021.02.12 리눅스 바이블: Chapter5. Working with Text Files 정리 (0) 2021.02.12 리눅스 바이블: Chapter4. Moving around the Filesystem 정리 (0) 2021.02.11