Infrastructure/Linux

[Concept] Chapter 14 유닉스 시스템 관리

Jinlib 2017. 12. 25. 21:00

목차

1. 시스템 관리자
2. 부팅과 종료
3. 사용자 관리
4. 그룹 관리
5. 루트 비밀번호 관리
6. 서비스 관리
7. 패키지 관리
8. 네트워크 관리

1. 시스템 관리자

(1) 시스템 관리자란?

    • 시스템이 올바르게 동작할 수 있도록 시스템을 관리하고 운영하는 책임을 가진 사용자
    • 모든 권한을 가지고 있다.
    • 계정 이름 : root

(2) 시스템 관리자의 역할

    • 사용자 등록 / 삭제
    • 각종 소프트웨어 설치, 업그레이드, 제거
    • 각종 하드웨어 추가 설치 ( 디스크, 프린터, 등)
    • 시스템 보안
    • 데이터 백업
    • 컴퓨터 자원의 감시
    • 하드웨어 / 소프트웨어 문제 발생시 진단 및 문제 해결

(3) 시스템 관리자 계정 - root

1) root 계정으로 로그인하기

      • 로그인 이름 : root, 암호 : 시스템 설치ㅣ 지정
      • 프롬프트 : #

2) root 계정으로 변경하기

      • 일반 계정으로 로그인 후 root로 사용자 변경
      • root 계정으로 직접 로그인하는 경우보다 안전
      • 보안을 위해 root 계정의 직접 접속을 막아놓은 경우에 사용한다.
      • su [ - ] [ 로그인 ID ]
        [ - ] : 초기화 파일 실행 후 홈디렉토리로 이동한다.
        [ 로그인 ID ] : 변경하고자 하는 사용자 이름. 생략시 root로 로그인한다.

3) 일반계정에 관리자 권한 부여하기

아래 과정은 root 계정에서 진행해야한다.

Ⅰ. /etc/sudoers 파일 수정하기
이를 통해 아래와 같이 sudo 권한을 부여한다.

계정명 ALL = (ALL) ALL  을 root 밑에 추가시켜준다.

Ⅱ. /etc/group 파일 수정이를 통해 root 그룹 부여한다.

위와같이 root:x:0:[계정명] 을 추가 시켜준다
혹은
gpasswd -a [ 계정명 ] [ 추가할 그룹명 ] 을 이용할 수 있다.


Ⅲ. /etc/passwd를 수정한다.
    이를 통해 root의 uid, gid로 변경한다.
    변경할 계정명을 찾아서 UID와 GID 부분을 0으로 변경해준다.


이제 로그아웃후 재로그인하면 변경되있는 것을 확인할 수 있다.


2. 부팅과 종료

(1) 부팅 순서


(2) 시스템 종료 - shutdown

1) 기 능

      • 지정한 시간이 지난 후 시스템 자동 종료
      • 시스템에 접속중인 모든 사용자에게 경고음과 함께 메시지 출력 가능하다.

2) 형 식

shutdown [옵션] [메시지]

3) 옵 션

-y : 시스템 종료 여부를 확인하지 않는다.
-g 시간 : 지정한 시간이 지난 후 시스템 종료
-i 상태 : 지정한 상태로 변경
now : 즉시 종료


3. 사용자 관리

(1) 사용자의 구성 요소

1) 로그인 ID

      • 시스템 안에서 사용자를 구분하는 이름, 시스템 내에서 유일해야한다.        

2) 비밀번호

      • 시스템에 로그인 허가를 받기 위해 사용자임을 증명하는 문자열
      • 6~8자 사이의 영문자, 숫자, 특수문자의 조합

3) 홈 디렉토리

      • 로그인 한 직후 위치하는 디렉토리
      • 자신의 파일과 디렉토리 저장

4) 로그인 쉘

      • 로그인 할 때 자동으로 실행되는 쉘
      • 사용자의 명령 처리

5) 사용자 초기화 파일

      • 각 사용자가 자신의 작업 환경을 구성하는 파일
      • 로그인 쉘이 자동 실행

(2) 사용자 관리 - /etc/passwd 파일

1) 구 성

2) 구성요소

    1.  로그인 ID : 사용자 이름
    2.  비밀번호 : 이쪽 필드는 x로 표시하고 root만 읽을 수 있는 /etc/shadow파일에 암호화된 비밀번호를 저장한다.
    3.  UID : 시스템 내부적으로 사용자에게 부여하는 일련번호 100~65534 사이를 사용하며, 0~99, 60001, 60002, 655534는 시스템사용
    4.  GID : 사용자가 속한 기본 그룹ID, /etc/group에 정의한다.
    5.  설명 : 사용자의 전체이름
    6. 홈디렉토리 : 사용자의 기본 홈디렉토리
    7. 로그인 쉘 : 사용자가 로그인 했을때 쉘

3) 기본 시스템 계정


(3) 사용자 추가하기 - useradd

1) 기 능

지정한 사용자 계정 생성

2) 형 식

useradd [옵션] 로그인ID

3) 옵 션

-D : 옵션을 지정하지 않을 때 사용하는 기본 값 출력
-u uid : UID 지정
-g gid : 기본 그룹 지정
-G gid : 보조 그룹 지정
-d dir : 홈 디렉토리 지정
-m : -d 옵션으로 지정한 홈 디렉토리가 없으면 생성
-c comment : 사용자의 이름 등을 지정


(4) 사용자 정보 수정 - usermod

1) 기 능

사용자 계정 정보를 수정

2) 형 식

usermod [옵션] 로그인ID

3) 옵 션

-u uid : UID 값을 지정한 값으로 변경
-g gid : GID 값을 지정한 값으로 변경
-d dir : 홈디렉토리 변경
-s shell : 로그인 쉘 변경
-l 새로그인ID : 사용자의 로그인ID를 변경
-m : 사용자의 홈 디렉토리를 -d위치로 변경
-c comment : 사용자 정보 변경

(5) 사용자 계정 삭제 - userdel

1) 기 능

지정한 사용자 계정 삭제

2) 형 식

userdel [옵션] 로그인ID

3) 옵션

-r : 사용자의 홈 디렉토리도 삭제

4) 주의사항

find / -user [삭제할 유저 uid] -exec rm -r {} \;
명령어를 통해 삭제할 유저가 생성한 모든 파일을 삭제하는 것이 좋다.

(6) 공지사항 전달 - /etc/motd

1) 기 능

각 사용자가 로그인 할 때마다 /etc/motd 파일에 저장된 메시지를 출력시킨다.


4. 그룹 관리 - /etc/group 파일

(1) 구성


(2) 그룹 생성 - groupadd

1) 기 능

새로운 그룹을 생성한다.

2) 형 식

groupadd [옵션] 그룹명

3) 옵 션

-g gid : 생성한 그룹의 gid값 지정
-o : gid의 중복을 허용

(3) 그룹 수정 - groupmod

1) 기 능

그룹 정보 수정

2) 형 식

groupmod [옵션] 그룹명

3) 옵 션

-g gid : 지정한 그룹의 gid값 수정
-o : gid 중복을 허용
-n 새이름 : 그룹이름 변경

(4) 그룹 삭제 - groupdel

1) 기 능

지정한 그룹을 삭제


5. 루트 비밀번호 관리

(1) root 비밀 번호 복구하기

몇번이고 비밀번호를 틀려서 난감한 상황.

1.컴퓨터 재부팅

우선 컴퓨터 또는 VM을 재부팅한다. 복구모드로 진입해서 비밀번호를 수정해야하기 때문.

2.재부팅시 Shift키를 꾹 누른다

Grub모드로 진입하기 위함인데, 이 모드로 진입해야 Recovery(복구)모드로 들어갈 수 있다.

쉬프트를 꾹 누르고 있으면 위와같은 화면이 뜰텐데, 화살표 아래버튼(↓)버튼을 눌러서

Advanced options for Ubuntu를 선택하고 엔터를 눌러 진입한다.

        그럼 위와같은 화면이 또 나타나게 될텐데, 두번째 “Ubuntu, with Linux 4.4.0-78-generic (recovery mode)“를 선택하고 진입한다.
        4.4.0-78은 현재 시스템의 커널버전을 뜻하므로, 각각의 사용자마다 다를 수 있다. 버전 상관없이 (recovery mode) 를 선택하고 진입

이렇게 복구모드가 들어가지는데, 이 메뉴의 아래에서 두번째 메뉴인 ‘root’ 를 선택한다.

진입한다.

그러면 위와같이 ‘유지보수를 위해 root 비밀번호를 입력하시오(또는 컨트롤+D를 눌러 계속하십시오)’ 라는 글이 뜨게 되는데,
우분투를 설치할때 또는 설치하고나서 root의 비밀번호를 입력했다면 설정했던 패스워드를 입력하면 된다.
만약 별도로 설정하지 않았더라면, 그냥 엔터를 입력하면 된다.

이렇게 커맨드 창으로 진입을 했지만, 현재의 상태는 readonly 상태이기 때문에 비밀번호를 변경해도 바뀌지 않는다.

3.읽기/쓰기 권한 변경

쓰기권한을 얻기위해 다음과 같이 입력하고 엔터를 누른다

아무것도 출력되는것은 없으나 별다른 오류가 없다면 성공적으로 변경이 된것이다.

 

4.비밀번호 변경

이제 쓰기권한을 얻었으므로, passwd 명령어를 통해 비밀번호를 바꿔보자.
나는 root계정의 비밀번호 부재로 다른 계정을 변경하기 보다는 root비밀번호를 변경했다.

성공적으로 비밀번호가 변경되었다.

마지막으로 재부팅


6. 서비스 관리

(1) 서비스에 대한 정보 제공 - sysv-rc-conf

1) 기 능

Centos의 chkconfig나 유닉스의 svcs를 우분투에서는 유용한 sysv-rc-conf를 사용한다.
(sudo apt-get install sysv-rc-conf로 설치가 가능하다)

2) 형 식

chkconfig [모드] [서비스명] [on | off ]

3) 모드

--list : service 리스트를 출력한다. (= service --status-all)

4) 사용 예시

아무런 옵션 없이 실행시 )

여기서

S : shutdown을 의미한다.
0 : System halt를 의미한다.
1 : Single User 모드를 의미한다.
2~5 : 멀티유저 모드를 의미한다.
6 : reboot 곧 재 부팅을 의미한다.

이렇게 ctrl+n 키로 page down // ctrl+p 키로 page up을 하면서 확인 할 수 있다.

3과 5 실행레벨에 있는 ssh를 정지시키고 싶을때 )

sysv-rc-conf --level 35 ssh off

(2) 서비스 활성화/비활성화 - service

1) 기 능

시스템 서비스를 조작하기 위한 명령 /etc/init.d 디렉토리안의 링크파일들을 시작,종료,재시작할 수 있다.

2) 형 식

service [옵션]

3) 옵 션

start : 중지된 서비스 시작
stop : 실행되는 서비스 중지
restart : 멈춘 후 시랭 서비스 시작 또는 중지된 서비스 시작
reload : 연결을 끊지 않는 채 서비스 설정 리로드
status : 서비스 실행 여부를 나타낸다.

7. 패키지 관리

(1) 패키지 관리 - apt get

1) 기 능

인터넷에서 패키지를 찾아서 설치한다.

2) 형 식

apt-get [서브명령] [패키지 이름]

3) 서브 명령

      • update : 패키지 인덱스 정보를 업데이트 (인덱스 정보는 /etc/apt/sources.list에 있다)
      • upgrade : 설치된 패키지를 모두 새버전으로 업그레이드한다.
      • dist-upgrade : 의존성을 검사하면서 업그레이드한다.
      • install [패키지이름] : 패키지를 설치한다.
      • --reinstall install 패키지 이름 : 패키지를 재설치한다.
      • remove 패키지 이름 : 패키지를 삭제한다(설정파일은 그대로)
      • --purge remove 패키지이름 : 설정파일까지 모두 지운다.
      • source 패키지이름 : 패키지 소스코드를 다운로드한다.
      • build-dep 패키지 이름 : 소스코드를 의존성있게 빌드

4) 번외

패키지 검색 : apt-cache search 패키지이름
패키지정보보기 : apt-cache show 패키지이름

8. 네트워크 관리

(1) 네트워크 관리 - netstat

1) 기 능

네트워크 상태확인, 제어를 할 수 있다.

2) 형 식

netstat [옵션] [서비스] [서브옵션]

3) 옵 션

      • -a : 모든 소켓을 보기 (안쓰면 Established 상태인 것만 출력)
      • -c : 현재 실행 명령을 매 초다마 실행한다. ex) netstat -anc
      • -e : 확장 정보 추가. User 부분과 Inode 열이 추가된다.
      • -g : 멀티캐스트에 대한 그룹별 정보를 보여준다.
      • -i : 인터페이스 통계 값
      • -l : 대기준인 소켓 리스트를 보여준다.
      • -n : 도메인 주소를 읽어들이지 않고 숫자로 출력한다.
      • -o : 연결 대기 시간을 표기한다.
      • -p : PID와 사용중인 프로그램명이 표시된다.
      • -r : 라우팅 테이블 보기 (route 명령어와 동일하다)
      • -s : 프로토콜 요약정보
      • -t : TCP 프로토콜 보기 (연결된것만 나온다)
      • -u : UDP 프로토콜 보기
      • -v : 버전보기
      • -w : RAW 프로토콜 보기
      • -A : 프로토콜별로 보기. 종류는 inet, unix, ipx, ax25, netrom, ddp가 있다. ex) netstat -A inet (TCP 프로토콜 연결 상태만 보기)
      • -M : 마스커레이딩 정보 표시

4) 출력 라인( inet과 관련있다.)

      • Proto : 프로토콜 종류. TCP/UDP/RAW가 있다.
      • Recv-Q : 해당 프로그램이 현재 받는 바이트 표기
      • Send-Q : 해당 프로그램이 현재 보내는 바이트 표기
      • Local Address : 출발지 주소 및 포트. 자신의 주소 및 포트
      • Foreign Address : 목적지 주소 및 포트
      • State : 포트의 상태 표기
        - CLOSED
        - CLOSED_WAIT
        - CLOSING
        - ESTABLISHED : 연결이 완료된 상태
        - FIN_WAIT1
        - FIN_WAIT2
        - LAST_ACK
        - LISTEN : 대기중인 포트. 포트가 열려 있음.
        - SYN_RECV : 연결 요청을 받은 후에 확인 값을 기다리는 상태
        - SYN_SENT : 목적지에 연결 요청
        - TIME_WAIT : 연결이 종료도니 후 기다리는 상태 약 1분 정도 -o옵션으로 확인 가능하다
        - UNKNOWN : 소켓의 상태를 알 수 없다.

=========================================예제=========================================
    1. 인터넷 연결 상태 보기 netstat -A inet


2. 통계값 보기(프토로콜 별) netstat -s

3. 통계값 보기(인터페이스별) netstat -i

4. 열려있는 TCP 포트 보기 netstat -lnt -A inet

5. 연결된 TCP 포트 보기 netstat -nt -A inet

6. 모든 열려있는 포트 보기 netstat -ant -A int

7. 특정 포트나 호스트 모니터링 하기 netstat -A inet -n  -c| grep :80
   (1초마다 80포트(인터넷)을 보기 )


8. 네트워크 자원을 사용중인 프로그램 종료하기

위를 보면 firefox가 6449라는 PID를 가지고 네트워크를 이용중인것을 볼 수 있다.


Kill 명령어로 프로세스를 종료하면 위와같이 네트워크 자원을사용중인 프로르램이 종료 되었다.


=====================================================================================