과제설명
top은 프로세스의 CPU사용량을 보여주는 유틸리티 이다. 일반적으로 배포본에 같이 포함되지만 unix top project를 통해 다양한 환경에서 이식될 수 있도록 소스가 제공된다. 배포되는 top 소스는 다양한 환경을 자동으로 인식하고 각기 적절하게 컴파일할 수 있도록 해주기 위해 configure 라는 쉘스크립트 파일을 제공하고 있다. 따라서 top을 설치하기 위해서는 configure라는 파일을 실행시켜준 다음 make 명령으로 컴파일을 하도록 되어 있다. 보다 자세히 말하면 configure를 실행시키면 해당 시스템을 여러가지 테스트를 통해 자동으로 인식하고, 각기 적절하게 컴파일할 수 있는 Makefile을 작성한다.
이후 사용자는 make 명령을 내려주면 해당 시스템에 맞게끔 컴파일이 되게 된다. 이번 과제는 여기서 사용되는 쉘스크립트로 작성되 있는 configure 파일의 코드를 분석하고, 이 파일이 실행된 후 작성되는 Makefile의 코드를 분석함으로써 쉘스크립트와 Makefile에 대한 이해를 증진시키고, 나아가 실제 프로그램 작성시 쉘스크립트와 Makefile작성에 익숙하게끔 하려는 것이다.
쉘 스크립트에 익숙해 진후 쉡 스크립트를 이용하여 실제 어플리케이션을 작성하도록 한다. 작성할 어플리케이션은 system admin을 위한 사용자 계정 작성 프로그램이다. 리눅스에는 adduser라는 shell기반의 사용자 등록 프로그램이 있지만 많은 옵션때문에 사용하기 어렵다. gui기반의 사용자 관리툴도 존재 하지만 x-windows가 없는 상황에서 빠르고 편리하게 사용자를 등록 할 수 있는 사용자 계정 작성 프로그램을 만들어 보도록 하겠다. top의 configure 파일을 참고하여 인터렉티브한 사용자 계정 작성 프로그램을 만들도록 한다.
Top 소스 설치 과정- 사용자를 root로 하고,
- top 3.5 소스를 다운받는다.
- top 3.5 는 (http://www.unixtop.org)에서
다운받을 수 있다.
- 원하는 디렉토리로 top-3.5.tar.gz을 복사한 후
tar
xvfz top-3.5.tar.gz
로 명령하여 top 소스를 푼다.
- 이렇게 하면 원하는 디렉토리에 top-3.5라는 디렉토리가 생기고 그 안에 소스 압축이
풀린다.
- 그러면 top-3.5 디렉토리로 가서
./Configure
라고 명령한다.(반드시 리눅스에서 실행시킨다.)
- 물어보는 질문에 개인의 시스템에 맞추어 적절히 대답한다.
- 실행이 종료된 후 해당 디렉토리에 Makefile이 작성되었는지 확인한다.
- 아래와 같이 명령하여
make
install
정상적인 설치가 되는지 확인해 본다.
Makefile 및 Configure 코드 분석자료 작성방법
- Makefile 및 Configure코드분석은 보고서에 들어갈 내용만 작성한다.
- 보고서에 "Makefile 코드분석" 이라는 항목에 아래의 5개의 컴파일 명령에 대해 번호를 붙여 작성토록 한다.
- make를 사용하여 컴파일할 경우 다양한 옵션을 줄 수 있다. 본 과제에서는 이 중 다음의 5개 컴파일 명령에 대해
각 명령의 의미와 이 명령에 의해 컴파일되는 과정을 Makefile의 수행코드를 순서대로 나열하고 상세히 설명한다.
(변수선언은 순서에 포함시키지 않아도 된다. 단, 옵션에 변수가
포함되 있을시 어디에서 어떤 식으로 변수값이 지정되는지 포함시키도록 한다.)
1. make install
2. make prefix=/usr/local/share install
3. make uninstall
4. make realclean
5. make test
- 실행되는 코드 나열시 설명과 함께 몇 번째 줄인지 명시한다.
- 예를들어 if부터 fi까지, case부터 esac까지등 구문의 의미를 중심으로 주석을 위의 예시
단, if부터 fi까지의 내부에 또 다시 if, case등의 구문이 있을 경우
각각의 의미에 대해서도 기술한다.
또한, 명령어가 독립적으로 사용되었을 경우나 중요한 명령이라 생각되는 부분에
대해서는 이에 대한 의미를 기술한다.
아래와 같이 리다이렉션되어 다른 파일에 저장되는 부분의 코드에 대해서는
주석을 달지 않아도 된다.
첨부문서에서 코드의 주석부분은 알아보기 쉽게 색을 달리하거나,
폰트와 굵기등을 달리하여 출력한다.
한 라인, 라인마다 주석을 달 경우 추가점수가 부여된다.
- 보고서에 "Configure 코드분석"이라는 항목에는 다음 2가지 내용을 기술한다.
- Interactive 메뉴의 Control flow
- 전체코드와 주석 (Makefile 예시 참조)
사용자 계정 관리 프로그램 작성
1. 배경지식
passwd와 관련된 정보는
/etc/passwd
/etc/group
등에 저장되어 있다.
/etc/passwd에는 기본적인 사용자 계정 관련 정보가 들어 있고,
/etc/group에는 그룹 정보가 들어 있다.
useradd, groupadd 유틸리티를 사용하면 사용자 및 group를 등록 할 수 있다.
2. 설명
사용자 계정 정보는 "사용자명(ID)", "사용자ID(UID)", "사용자 그룹(GID)", "정보(Comment)",
"로그인 쉘(shell)", "홈 디렉토리(home directory)" 로 구성되어 있다.
사용자 등록시 useradd(혹은 adduser)를 사용하게 되면 이러한 정보들을 옵션을 이용하여
등록하도록 되어 있다. shell프로그래밍을 이용하여 간편하게 사용자 정보를 작성하고 관리
할 수 있는 프로그램을 작성한다.
이때 인터렉티브한 입력은 shell을 통해서 받을 수 있도록 하고, 실제 등록은 shell 스크립트에서
useradd와 groupadd를 직접 호출하여 등록 할 수 있도록 한다.
3. 상세 프로그램
프로그램은 각각 메뉴와 sub메뉴로 구성되어 있다. 초기 프로그램을 실행하면 다음과 같은
메뉴가 나온다.
각각의 메뉴는 다음과 같은 역할을 한다.
1. Show All Group : 모든 유저 정보를 보여준다.
2. Create New Group : 새로운 그룹을 생성한다.
3. Show All User : 모든 유저 정보를 보여준다.
4. Create New User : 새로운 유저를 생성한다.
1을 선택할 경우 다음과 같이 그룹 정보를 보여준다
2를 선택할 경우 다음과 같은 순서로 그룹을 등록 할 수 있도록 한다.
Group ID : 사용자가 직접 입력도 가능하고, 입력없이 엔터치면 자동적으로 할당하여 준다.
Group Name : 사용자가 직접 입력하도록 한다. 중복을 검사하여 중복 입력일 경우 에러 메시지 출력후 다시 입력 받는다.
3을 선택할 경우 다음과 같이 그룹 정보를 보여준다.
4를 선택할 경우 다음과 같은 순서로 유저를 등록 할 수 있도록 한다.
User ID : 사용자명, 사용자가 직접 입력한다. 중복을 검사하여 중복된 입력일 경우 에러 메시지 출력 후 다시 입력 받는다.
UID : UID, 사용자가 직접 입력 가능하며, 엔터치면 자동적으로 할당한다.
Select Group : 현재 입력 가능한 그룹명을 모두 출력하여 선택 할 수 있도록 한다.
Comment : 학번과 이름을 입력 받을 수 있도록 한다. (분리하여 입력 가능)
Shell : /bin/csh, /bin/tcsh, /bin/sh 중에 하나 선택 가능하도록 한다.
Home directory : 엔터칠 경우 자동적으로 만들어 지도록 한다.
보다 구체적인 내용은 레드햇 배포판의 "Red Hat 사용자 관리" 유틸리티 참조.
4. 힌트
Configure에 쓰인 인터렉티브 프로그래밍 방법 참조
useradd, groupadd 명령어 참조
"Red Hat 사용자 관리" 유틸리티등 계정관리 유틸리티 참조
과제 제출 형식
- 보고서 제출 형식
- Makefile 및 Configure code 분석
- 시스템 환경
- 기본지식 (Makefile및 Configure에 쓰인 주요 명령어 및 문법사항 기술)
- Makefile code분석
- Configure화일 분석(인터렉티브 관점)
- 계정관리 시스템 구현
- 테스트 환경
- 기본 지식
- 프로그램에 쓰인 주요 알고리즘
- 프로그램에 쓰인 주요 함수
- 프로그램 실행 방법 및 실행 결과
- 프로그램 제출 형식
- 실행 파일명을 자신의 학번으로 하여 제출한다.
ex) 학번이 2020100인 학생 -> 2020100.sh
참고 사이트 및 자료
- Unix Shells by Example (Paperback) 저자:Ellie Quigley,
출판사:Prentice - Hall
- useradd, groupadd man page