본문 바로가기

Linux/Exercise

리눅스 시스템 1차 테스트 - 모범답안

3. fdisk 로 파티션을 1G를 만든 후 ext3파일 시스템으로 /data라는 디렉토리에 마운트되고 reboot후에도 자동으로 사용할 수 있게  만드시오.

#fdisk

-> n --> +1G --> w

#partprobe

#mkfs -t ext3 /dev/sda8

#mkdir /data

#mount /dev/sda8 /data

#vi /etc/fstab

------------------------------------------------------------

/dev/sda8           /data       ext3     defaults       0 0

------------------------------------------------------------


----------------------------------------------------------------------------------------------------------------------------------------------


4. 2개의 파티션 (ext3, 1G)을 raid1로 구성하고 /raid1이란 디렉토리에 사용가능하게 설정 후 부팅 후에도 사용 가능하도록 설정하시오.

#fdisk

-> n --> +1G --> n --> +1G --> t --> fd -->w

#partprobe

#mdadm -C /dev/md1 -l 1 -n 2 /dev/sda9 /dev/sda10

#mkfs -t ext3 /dev/md1

#mkdir /raid1

#mount /dev/md1 /raid1

#vi /etc/fstab

------------------------------------------------------------

/dev/md1           /raid       ext3     defaults       0 0

------------------------------------------------------------


----------------------------------------------------------------------------------------------------------------------------------------------


5. 2개의 파티션 (ext3, 1G)을 volume group lmv0으로 설정하고 logical volume 1.2G를 /backup 디렉토리에 사용 가능하게 하고 부팅후에도 사용가능하도록 설정하시오.

#fdisk

-> n --> +1G --> n --> +1G --> t --> 8e -->w

#partprobe

#pvcreate /dev/sda11 /dev/sda12

#pvscan

#vgcreate lmv0 /dev/sda11 /dev/sda12

#vgscan

#lvcreate -L +1.2G -n lvdata1 lmv0

#lvscan

#mkdir /backup

#mkfs -t ext3 /dev/lmv0/lvdata1

#mount /dev/lmv0/lvdata1 /backup

#vi /etc/fstab

------------------------------------------------------------

/dev/lmv0/lvdata1           /backup       ext3     defaults       0 0

------------------------------------------------------------



----------------------------------------------------------------------------------------------------------------------------------------------


6. 500M swap 파티션을 생성하고 부팅후에도 사용가능하도록 설정하시오.

#fdisk

-> n --> +500M --> t --> 82 -->w

#partprobe

#mkswap /dev/sda13

#swapon /dev/sda13

#free -m

#vi /etc/fstab

------------------------------------------------------------

/dev/sda13                  swap     defaults       0 0

------------------------------------------------------------


----------------------------------------------------------------------------------------------------------------------------------------------

7. 사용자 추가 및 quota 설정


 User  UID GID(1차)
 2차그룹  계정위치  쉘  quota  soft  hard
 scv  610  610  terran  /home/terran/scv /bin/bash
usrqouta
 10M  20M
 drone  620  620
 zerg  /home/zerg/drone  /bin/ksh  usrquota  10M  20M
 probe  630  630  protoss  /home/protoss/probe  /bin/csh  usrquota  10M  20M
 lim  670  terran   /data/lim
 /bin/bash  grpquota  10M  20M
 hong  680  zerg    /data/hong  /bin/bash  grpquota  10M  20M
 kim  690  protoss    /data/kim  /bin/bash  grpquota  10M  20M
 shin  700  700(shin)    /data/shin  /bin/bash  grpquota  10M  20M

# groupadd protoss
# groupadd -g 610 scv
# groupadd -g 620 drone
# groupadd -g 630 probe
# groupadd -g 700 shin
# mkdir /home/terran
# mkdir /home/zerg
# mkdir /home/protoss
# useradd -u 610 -g scv -G terran -d /home/terran/scv scv
# useradd -u 620 -g drone -G zerg -d /home/zerg/drone -s /bin/ksh drone
# useradd -u 630 -g probe -G protoss -d /home/protoss/probe -s /bin/csh probe
# useradd -u 670 -g terran -d /data/lim lim
# useradd -u 680 -g zerg -d /data/hong hong
# useradd -u 690 -g protoss -d /data/kim kim
# useradd -u 700 -g shin -d /data/shin shin

# vi /etc/fstab
------------------------------------------------------------
LABEL=/home1    /home     ext3     defaults,usrquota      1 2
/dev/sda8           /data       ext3     defaults,grpquota       0 0
------------------------------------------------------------

userquota
# mount -o remount /home
# quotacheck -u /home
# edquota -u probe
---------------------------------------------------------------------------
Disk quotas for user probe (uid 630):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda7                        32      10240      20480             8         0         0
---------------------------------------------------------------------------
# edquota -p probe scv
# edquota -p probe drone

groupquota
# mount -o remount /data
# quotacheck -g /data
# edquota -g zerg
---------------------------------------------------------------------------
Disk quotas for group zerg (gid 501):
  Filesystem                   blocks       soft       hard     inodes     soft     hard
  /dev/sda8                          32    10240      20480             8         0         0
---------------------------------------------------------------------------                                                                                        
# edquota -g protoss
# edquota -g terran
# edquota -g shin

----------------------------------------------------------------------------------------------------------------------------------------------

8. shin 사용자가 파일 생성시 600 디렉토리 생성시 700 이 되도록 umask를 설정하시오.

# vi /etc/bashrc - root의 bashrc에서 umask부분을 복사한다.(여기는 root의 환경이다.)
------------------------------------------------
if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
        umask 002
else
        umask 022
fi
------------------------------------------------

# cd /data/shin - shin 의 홈폴더로 이동한다.
# ls -al
-rw-r--r--  1 shin shin  310 11월 19 15:56 .bashrc

# vi .bashrc - shin의 bashrc에서 umask 설정을 변경하고 붙여놓는다.(여기는 shin의 환경이다.)
------------------------------------------------
if [ $UID -gt 99 ] && [ "`id -gn`" = "`id -un`" ]; then
        umask 077                   - 파일 생성시 600, 디렉토리 생성시 700 이 되도록 하기 위한 umask값
else
        umask 022
fi
------------------------------------------------

# mkdir shin
# touch shin.txt
# ls -l                    - 파일 및 디렉토리 생성 후 퍼미션 확인
drwx------  2 shin shin 4096 11월 19 16:00 shin
-rw-------   1 shin shin       0  11월 19 16:00 shin.txt

----------------------------------------------------------------------------------------------------------------------------------------------

9. hong 사용자는 로그인 할수 없도록 설정하시오.

# passwd hong - hong의 패스워드를 입력한다.
Changing password for user hong.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.

# passwd -l hong - hong의 패스워드에 락을 건다.
Locking password for user hong.
passwd: Success


- hong의 패스워드 상태확인
# passwd -S hong
hong LK 2008-11-19 0 99999 7 -1 (Password locked.)
또는
# vi /etc/shadow
hong:!!$1$M890~~~:7:::  - 패스워드 앞에 !!가 붙어 있다.(수동으로도 입력가능)

----------------------------------------------------------------------------------------------------------------------------------------------

10. /data/lim 디렉토리에 only 디렉토리를 생성 후 그 디렉토리에서 shin 사용자가 파일 및 디렉토리 생성과 리스트를 볼 수 있도록 설정하시오.

# cd /data
# ls -l
drwx------ 3 lim  terran 4096 11월 19 23:40 lim
drwx------ 3 shin shin   4096 11월 19 23:40 shin
# chmod 770 lim   - 그룹을 이용하기 위해 lim 폴더의 퍼미션을 바꾼다.
# ls -l
drwxrwx--- 3 lim  terran 4096 11월 19 23:40 lim
drwx------ 3 shin shin   4096 11월 19 23:40 shin
# usermod -G terran shin   - lim폴더에 접근하기 위해 terran그룹에 shin을 추가한다.
# vi /etc/group   - terran그룹에 shin이 잘 추가되었는지 확인한다.
-----------------------
terran:x:601:scv,shin
-----------------------

# cd lim
# mkdir only
# ls -l
drwxr-xr-x 2 root root 4096 11월 19 23:44 only
# chown root.shin only   - shin이 only폴더접근 할 수있디록 shin을 그룹에 추가해준다.
# chmod 770 only   - 그룹만(shin포함) 이용가능하도록 퍼미션을 바꾼다.
# ls -l
drwxrwx--- 2 root shin 4096 11월 19 23:44 only

----------------------------------------------------------------------------------------------------------------------------------------------

11. /data2 디렉토리를 생성 후 누구나 생성 및 삭제가 가능한 디렉토리로 생성하되 파일을 생성한 사람만 삭제 가능한 디렉토리로 설정하시오.


- Sticky bit에 관한 내용이다.

# mkdir data2
# ls -l
drwxrwxrwx  2 root root  4096 11월 19 19:36 data2
# chmod 1777 data2
# ls -l
drwxrwxrwt   2 root root  4096 11월 19 19:37 data2

[사용자 - test1]
$ cd /data2
$ vi test1.txt
$ ls -l
-rw-rw-r-- 1 test1 test1 18 11월 19 19:40 test1.txt

[사용자 - test2]
$ cd /data2
$ vi test2.txt
$ ls -l
-rw-rw-r-- 1 test1 test1 18 11월 19 19:40 test1.txt
-rw-rw-r-- 1 test2 test2 12 11월 19 19:43 test2.txt
$ rm -rf test1.txt
rm: cannot remove `test1.txt': 명령이 허용되지 않음  - 사용자 2가 사용자 1이 만든 파일을 삭제해 보려고 하지만 권한이 없어 삭제가 불가능하다.

----------------------------------------------------------------------------------------------------------------------------------------------

12. 일요일 오전 4시 30분에 tar zcvf home.tar.gz /home 명령이 실행되어 /backup폴더에 백업되도록 설정하시오.

# crontab -e   - 작업스케줄 등록
crontab: installing new crontab
---------------------------------------------
30 4 * * 0 tar zcvf /backup/home.tar.gz /home
---------------------------------------------

# crontab -l   - 작업스케줄 확인
30 4 * * 0 tar zcvf /backup/home.tar.gz /home

----------------------------------------------------------------------------------------------------------------------------------------------

15. rsync를 사용하여 매주 일요일 오전 4시에 /home 디렉토리와  /data 디렉토리가  /backup 디렉토리에 백업되도록 설정하시오.

# vi /etc/xinetd.d/rsync
------------------------------------------------------------------------
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
#       allows crc checksumming etc.
service rsync
{
        disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}
-------------------------------------------------------------------------

# vi /etc/rsyncd.conf   - rsyncd.conf파일을 생성해준다.
---------------------------------------------
[server3]
path=/
host allow = 10.10.33.1, 10.10.33.2, 10.10.33.100
host deny = 10.10.33.0, 255.255.0.0
uid=0
gid=0
---------------------------------------------

# crontab -e  - 작업스케줄 등록
crontab: installing new crontab
--------------------------------------------------------------------------------------------------
0 4 * * 0 rsync -avz 10.10.33.2::server2/home /backup
0 4 * * 0 rsync -avz 10.10.33.2::server2/data /backup
또는
00 4 * * 0 rsync -avz 10.10.33.3::server3/home /backup && rsync -avz 10.10.33.3::server3/data /backup
---------------------------------------------------------------------------------------------------

# crontab -l  - 작업스케줄 확인
0 4 * * 0 rsync -avz 10.10.33.2::server2/home /backup
0 4 * * 0 rsync -avz 10.10.33.2::server2/data /backup
 
----------------------------------------------------------------------------------------------------------------------------------------------

16. boot loader에 패스워드를 md5로 "리눅스"로 설정하시오.

# grub-md5-crypt
Password:
Retype password:
$1$T8t7n$C/ZFFMbcIcQrD0iUUzuQY1 - 암호화된 패스워드

# vi /etc/grub.conf
----------------------------------------------------------------------
# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd0,0)
#          kernel /vmlinuz-version ro root=/dev/sda2
#          initrd /initrd-version.img
#boot=/dev/sda
default=0
timeout=5
password --md5 $1$T8t7n$C/ZFFMbcIcQrD0iUUzuQY1
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-92.el5)
        root (hd0,0)
        kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb quiet
        initrd /initrd-2.6.18-92.el5.img
-----------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------

17. httpd-2.2.10 소스를 다운 받아 설치한 후 자동으로 구동되도록 설정한 후
로그파일이 일주일에 한번씩 4번 로테이트 되도록 설정하시오.


www.apche.org -> http server -> download -> ver.2.2.10.tar.gz  다운로드

#cd /root/Desktop - 파일을 다운 받은 폴더로 이동
#cp httpd-2.2.10.tar.gz /usr/local/src - /usr/local/src 폴더에 프로그램이 설치됨(대부분의 리눅스 시스템)
#tar -zxvf httpd-2.2.10.tar.gz - httpd-2.2.10.tar.gz 폴더를 압축해제
#cd httpd-2.2.10                  -압축이 풀린 폴더로 이동
#./configure      - 설치 기본 환경설정
#make              - 컴파일
#make install     - 설치
#cd /usr/local/apache2 - 기본적으로 설치되는 폴더
#cd bin                        - 실행파일이 있는 폴더
#./apachectl start          -아파치 서버 시작
// #./apachectl stop      -아파치 서버 종료 //

#cp apachectl /etc/rc.d/init.d/ - 실행파일 복사
#cd /etc/rc.d/init.d                            

#vi httpd
--------------- ------------------------------------------------------
  #!/bin/bash
  #
  # httpd        Startup script for the Apache HTTP Server
  #
  # chkconfig: - 35 85 15
  # description: Apache is a World Wide Web server.  It is used to serve \
  #              HTML files and CGI.
----------------------------------------------------------------------

#vi apachectl
- 전 단계에서 복사한 내용을 맨 위에 복사한다.
- 여기의 경로는 /etc/rc.d/init.d/apachectl

#chkconfig --add apachectl - 서비스를 추가한다.
#ntsysv                             - 서비스 항목에서 apachectl을 선택한다.
#reboot                              - 재부팅한다.

---------------------------------------------------------------------------------

아파치의 로그파일이 일주일에 한번씩 4번 로테이트 되도록 설정하는 방법

- 소스파일로 설치한 경우에는 설치 폴더 하위폴더로 logs폴더가 생긴다.
이것을 logrotate를 이용해 로그 파일을 백업한다.

#vi /etc/logrotate.conf  -logrotate.conf 내용에 추가한다.
------------------------------------------------------------
# system-specific logs may be also be configured here.
/usr/local/apache2/logs/*_log {     - apache2/logs의 하위에 있는 모든 로그파일들을 뜻함
    weekly
    rotate 4
}
------------------------------------------------------------------------------------------------------

# cd /usr/local/apache2/logs
# logrotate -f /etc/logrotate.conf - 제대로 백업이 되는지 확인하기 위해 logrotate을 강제로 실행
# ls
access_log    error_log    httpd.pid    httpd.pid.1.1    httpd.pid.1.2  httpd.pid.2.1
access_log.1  error_log.1  httpd.pid.1  httpd.pid.1.1.1  httpd.pid.2    httpd.pid.3

----------------------------------------------------------------------------------------------------------------------------------------------

18. 시스템이 runlrvel 3번으로 부팅하도록 설정하시오.

# vi /etc/inittab
---------------------------------------------------------------------------
# Default runlevel. The runlevels used by RHS are:
#     0 - halt (Do NOT set initdefault to this)
#     1 - Single user mode
#     2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#     3 - Full multiuser mode
#     4 - unused
#     5 - X11
#     6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:        - runlevel 을 3으로 바꿔준다.
---------------------------------------------------------------------------

----------------------------------------------------------------------------------------------------------------------------------------------

19. shin 사용자만 su 명령이 가능하게 설정하시오.

- SUID (Set User ID)에 관한 내용이다.

# whereis su   - su 명령어의 위치를 찾는다.
su: /bin/su /usr/share/man/man1/su.1.gz
# ls -l /bin/su  - su의 퍼미션을 확인한다.
-rwsr-xr-x 1 root root 24120  5월 25 00:19 /bin/su

# chmod 4750 /bin/su - 다른 사용자들의 접근을 막기 위해 Other 사용자를 제거한다.

# ls -ld /bin/su
-rwsr-x--- 1 root root 24120  5월 25 00:19 /bin/su

# chown root.shin /bin/su - shin사용자가 su 명령어를 사용할 수 있도록 그룹에 추가시켜준다.

# ls -ld /bin/su
-rwxr-x--- 1 root shin 24120  5월 25 00:19 /bin/su

# chmod 4750 /bin/su - SUID 퍼미션을 위해 퍼미션을 변경한다.

# ls -ld /bin/su
-rwsr-x--- 1 root shin 24120  5월 25 00:19 /bin/su