'Study/CentOS'에 해당되는 글 40건

  1. 2015.03.28 [20] 분실된 root 비밀번호 재설정, grub 암호설정 ps, top, pstree, kill, who, write, wall, skill, inittab, uname, file
  2. 2015.03.28 [19] partition, mkfs, mount 실습
  3. 2015.03.28 [18] HDD & Partition, MBR, fdisk, mkfs, mount, umount
  4. 2015.03.28 [17] rpm(2), yum
  5. 2015.03.28 [16] rpm(1)
  6. 2015.03.28 [15] gzip, bzip2, tar, man
  7. 2015.03.28 [14] SETUID, SETGID, Stickybit, UMASK
  8. 2015.03.28 [13] 계정 복구, 계정 관련 Trouble Shooting, chown -R
  9. 2015.03.28 [12] 소유권, 허가권 실습, ftp 관련 권한
  10. 2015.03.28 [11] 허가권, 소유권, chmod, chown, chgrp

[20] 분실된 root 비밀번호 재설정, grub 암호설정 ps, top, pstree, kill, who, write, wall, skill, inittab, uname, file

|


- 2014.12.03




1. 분실된 root 비밀번호 재설정


1) 시스템 재부팅, 부팅시 VM logo 뜨면 아무 키나 누른다.

2) 최신 커널 선택 후 알파벳 e를 누른다.

3) kernel ... 을 선택한 후 알파벳 e를 누른다.

4) rhgb quiet 를 지우고 single 이라고 입력한다.

5) b를 통해 boot 시킨다.

6) passwd 통해 패스워드 변경

7) reboot 후 확인





2. grub에 암호 설정


1) 프롬프트 상태에서 grub를 입력한다.

2) grub> 에서 md5crypt를 입력한 후 password 를 넣는다.

3) 암호화된 패스워드를 복사 해둔다.

4) # vi /etc/grub.conf (=# vi /boot/grub/grub.conf)를 열어 주석 밑에

   password --md5 [복사한 암호화된 password]

5) 재부팅 통해 grub 모드 들어가 p 눌러 password 입력 되는지 확인한다.





3. ps


현재 동작하고 있는 프로세스들의 상황(스냅샷)을 보여줌 - 실시간이 아닌 그 때 그 상황


in Windows)

Ctrl + Shift + Ese : Process Management 실행 단축키

system idle process - 시스템 점유율 갖고 있다가 필요한 곳에 주는 녀석.


in Linux)

# ps -ef    명령어를 주로 사용.


UID : 사용자

PID : Process ID

PPID : Parent Process ID

C : CPU

STIME : Start Time

TTY : terminal

TIME : 작업시간

CMD : 명령어 (= PID)


즉, UID 사용자가 STIME 시간에 TTY(terminal)을 통해 CMD 명령어를 실행한 시간이 TIME 만큼이고 이 때 CPU 점유율은 C 만큼이다.





4. top


프로세스 실행 상황을 3초의 간격을 두고 새로고침하여 보여준다.

스페이스를 누르면 현재 프로세스 실행 상황을 보여준다.

꺽쇠 (< , >) 통해 화면 전환 가능하며 h 누르면 도움말, q 누르면 종료.

단, 프로세스가 어떻게 연결되어 있는지 잘 모른다.





5. pstree


프로세스를 트리 형식으로 보여준다.


# pstree -p : with PID

           -pn : with PID & 번호순





6. kill


프로세스 강제 종료 명령어.


# kill + PID : PID  프로세스 종료





7. who


현재 접속 중인 사용자 상황 조회

자세히보기 : # w





8. write


접속중인 사용자에게 메세지 전송


# write 사용자계정 pts/n (<- who 명령어 통해 알 수 있음)


연결 끊기 : Ctrl + C





9. wall


모든 사용자에게 메세지 전달. 즉 broadcast message 전달.


# wall 할말





10. skill


특정 사용자의 접속 끊기


# skill -KILL 사용자명





11. inittab


# vi /etc/inittab   에서 설정 변경 가능.


- runlevel. (init 숫자)

0 - halt

1 - Single Single user mode

2 - Multiuser, without NFS 

3- Full multiuser mode

4 - unused

5 - X11

6 - reboot





12. uname


시스템 정보를 출력


ex)

# uname

Linux

# uname -a

Linux localhost.localdomain 2.6.32-504.1.3.el6.x86_64 #1 SMP Tue Nov 11 17:57:25 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux

# uname -i

x86_64





13. file


리눅스의 파일 속성 확인 및 디스크 파티션 포맷 확인


1) 파일 속성 확인

# file [file_name]


2) 디스크 파티션 포맷 확인

# file -s /dev/sda1



And


[19] partition, mkfs, mount 실습

|


- 2014.12.02



[문제1]


본인이 마운트한 마운트들을 모두 해제합니다.

cd-rom을 마운트한후에 cd안에 있는 Packages에서 mysql*을 설치해보세요

단, /mdeia/CentOS_6.6_Final/packages/는 절대 사용하지 말고

본인이 직접 마운트해서 사용하세요.


# dh -f

# umount /dev/sda5

# umount /dev/sda1

# dh -f


# mkdir /Packages

# mount /dev/sr0 /Packages/

# cd /Packages/Packages/

# ll | grep mysql

rpm -ivh 통해 설치


빠진 것 없나 확인

# rpm -qa | grep mysql*

# ls ./mysql*




[문제2]


사마달 계정 정보 변경하세요 : /dev/sda1


# fdisk -l

# mount /dev/sda1 /linuxtest/

# ll /linuxtest/


# cd ~samadal

# cp ./.* /linuxtest/

cp: omitting directory `./.'

cp: omitting directory `./..'

cp: omitting directory `./.gnome2'

cp: omitting directory `./.mozilla'

# cp -r ./.gnome2 ./.mozilla /linuxtest/


# usermod -d /linuxtest/ samadal




[문제3]


기존에 마운트했던 파티션 모두 해제한 후 작업

partitin : sda1

mp : pm13

user : test1

이 때 samadal 계정도 반드시 활성화



samadal 홈 디렉터리 백업


# umount /linuxtest


파티션 삭제

# fdisk /dev/sda


Command (m for help): p


Disk /dev/sda: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x0f6516c0


   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          65      522081   83  Linux

/dev/sda2              66         130      522112+   5  Extended

/dev/sda5              66          91      208813+  83  Linux



Command (m for help): d

Partition number (1-5): 5


Command (m for help): d

Partition number (1-5): 2


Command (m for help): d

Selected partition 1


Command (m for help): p

...

   Device Boot      Start         End      Blocks   Id  System



파티션 생성

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-130, default 1):

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): +400M


Command (m for help): p

...

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          52      417658+  83  Linux


Command (m for help): w

The partition table has been altered!


파티션 포맷

# mkfs.ext4 /dev/sda1


# mkdir /pm13

# mount /dev/sda1 /pm13

# useradd -d /pm13/test1 test1

# usermod -d /pm13/samadal samadal




[문제4]


mp : /mp

user : test2

size : 300M (Extended and Ligical)



# fdisk /dev/sda

...

Command (m for help): p

...

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          52      417658+  83  Linux


Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

e

Partition number (1-4): 2

First cylinder (53-130, default 53):

Using default value 53

Last cylinder, +cylinders or +size{K,M,G} (53-130, default 130): +300M


Command (m for help): n

Command action

   l   logical (5 or over)

   p   primary partition (1-4)

l

First cylinder (53-91, default 53):

Using default value 53

Last cylinder, +cylinders or +size{K,M,G} (53-91, default 91):

Using default value 91


Command (m for help): p

...

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          52      417658+  83  Linux

/dev/sda2              53          91      313267+   5  Extended

/dev/sda5              53          91      313236   83  Linux


Command (m for help): w

The partition table has been altered!


Calling ioctl() to re-read partition table.


WARNING: Re-reading the partition table failed with error 16: 장치나 자원이 동작 중.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

Syncing disks.

# init 6

#

login as: root

root@192.168.1.142's password:

Last login: Tue Dec  2 13:49:56 2014 from 192.168.1.1

# mkfs.ext4 /dev/sda5

mke2fs 1.41.12 (17-May-2010)

/dev/sda5 is mounted; will not make a filesystem here!

=> 음? 이상하다?


# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda7       7.6G  266M  6.9G   4% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sda1       190M   26M  155M  15% /boot

/dev/sda6       190M   18M  163M  10% /home

/dev/sda2       5.7G  3.3G  2.2G  60% /usr

/dev/sda5       1.9G  176M  1.7G  10% /var

=> 기존에 있던 하드가 sdb 에서 sda 로 바뀌었다.

=> 하마터면 /var 에 있는 것을 포맷할 뻔했다.


다시 확인

# fdisk -l

...

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1   *           1          26      204800   83  Linux

Partition 1 does not end on cylinder boundary.

/dev/sda2              26         791     6144000   83  Linux

Partition 2 does not end on cylinder boundary.

/dev/sda3             791        1313     4194304   82  Linux swap / Solaris

/dev/sda4            1313        2611    10427392    5  Extended

/dev/sda5            1313        1568     2048000   83  Linux

/dev/sda6            1568        1594      204800   83  Linux

/dev/sda7            1594        2611     8171520   83  Linux

...

   Device Boot      Start         End      Blocks   Id  System

/dev/sdb1               1          52      417658+  83  Linux

/dev/sdb2              53          91      313267+   5  Extended

/dev/sdb5              53          91      313236   83  Linux

=> 신규로 만든 하드가 sdb로 바뀐 것 확인함.


test1 과 samadal 이 있는 홈 디렉터리 재설정 위해 pm13에 sdb1 을 다시 마운트

# mount /dev/sdb1 /pm13


새로 만든 파티션 포맷

# mkfs.ext4 /dev/sdb5

...

Writing inode tables: done

Creating journal (8192 blocks): done

Writing superblocks and filesystem accounting information: done


This filesystem will be automatically checked every 30 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.


mp 디렉터리 생성하여 마운트 함

# mkdir /mp

# mount /dev/sdb5 /mp


test2 계정 생성

# useradd -d /mp/test2 test2

# passwd test2





[문제5]


mp: / mp

user : test2, test3

size : 400M


t2 홈디렉터리 백업

logical, extended 파티션 삭제

새로운 primary 파티션 생성

재부팅

(# umount 로 사용 중인 하드 내 마운트를 모두 해제한뒤 작업하면 재부팅 필요 없음)


다시 mp 잡아주고

test3 생성하면 됨




[문제6]


mp : /ho

user : test4

size : 200M



기존 마운트 제거

(# umount /pm13 /mp)

extended & logical 파티션 생성

포맷

/ho 디렉터리 생성

기존 파티션 마운트 및 새로운 파티션 마운트

# useradd -d /ho/test4 test4

# passwd test4




[문제7]


기존 사용자 모두 제거하고 아래와 같이 설정하세요.


partition       type            m.p             user

500M            logical         /linux          samadal

200M            Primary         /mp             user1

200M            logical         /mnt/cdrom      user2, user3

100M            Primary         /hp             user4



* 기존 사용자 모두 삭제 : # userdel -r 사용자명

파티션 생성

        Primary 1 : Extended 700M - sda1

                        Logical 500M - sda5 / Logical 200M - sda6

        Primary 2 : 200M - sda2

        Primary 3 : 100M(나머지) - sda3


차례대로 포맷한 뒤 마운트

# useradd -d 홈디렉터리 사용자명

# passwd 사용자명




And


[18] HDD & Partition, MBR, fdisk, mkfs, mount, umount

|


- 2014.12.01



1. HDD & partition


[Partition]


파티션에는 크게 3종류가 있다.


1) Primary partition

        주 파티션 : 최대 4개까지 가능

2) Extended partition

        확장 파티션 : 주 파티션 1개를 빌려와 확장시켜주는 역할. (과일바구니의 바구니 역할)

3) Logical partition

        논리 파티션 : 확장 파티션 안에 구성되는 파티션. 무한개로 생성 가능하다.


ex) 파티션 6개가 필요한 경우

주 파티션 3개를 만들고 나머지 파티션 전체를 확장 파티션으로 만든다. 그 뒤 확장 파티션에 필요한 만큼 논리 파티션으로 만든다.




[HDD Type]


1) IDE(병렬)

        hd + 문자 : hda, hdb, hdc, hdd ...

                                     -----> CD-Rom

2) SCSI(직렬)

        sd + 문자 : sda, sdb, sdc, sdd ...




[Partition Type]


1) IDE(병렬)

        hd + 문자 + 숫자 : hda1, hde4, hdf7 ...


2) SCSI(직렬)

        sd + 문자 + 숫자 : sda3, sde5, sdc6 ...



ex)

sde 1 | 2 | 3 | 4

hdb 1 | 2 | 3 | 4(E) - 5(L)

sdf 1 | 2(E) - 5(L) | 2(E) - 6(L) | 2(E) - 7(L)

※ Logical Partition은 5번부터 시작한다.





2. MBR


모든 파티션에는 BR(Boot Record)가 있어 파티션 내의 정보들을 담고 있다.

특별히 OS 에는 MBR이 있어 파티션이 OS가 없는 파티션의 BR과 정보를 공유하는 역할을 한다.


ex)

USB를 꽂으면 USB 파티션의 BR 이 OS 의 MBR과 정보 교환이 일어나 OS에 있는 프로그램을 이용하여 USB 내의 파일을 읽을 수 있다.


MBR은 512kb 의 용량을 갖고 있으며 grub 로 설정 변경이 가능하다.





3. HDD 추가 및 설정


1) VM 에서 HDD 추가


2) 추가된 HDD 확인


# fdisk -l

=> VM에서 추가한 HDD를 확인한다. 나의 경우에는 sda 이다.


# fdisk /dev/sda

=> sda 하드에 대한 fdisk 메뉴 접근

Command (m for help): m

Command action

   a   toggle a bootable flag

   b   edit bsd disklabel

   c   toggle the dos compatibility flag

   d   delete a partition               -> 삭제

   l   list known partition types

   m   print this menu                  -> 도움말

   n   add a new partition              -> 생성

   o   create a new empty DOS partition table

   p   print the partition table        -> 확인

   q   quit without saving changes      -> 저장 하지 않고 종료

   s   create a new empty Sun disklabel

   t   change a partition's system id

   u   change display/entry units

   v   verify the partition table

   w   write table to disk and exit     -> 저장하고 종료

   x   extra functionality (experts only)


Command (m for help): p


Disk /dev/sda: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x1f71f85f


   Device Boot      Start         End      Blocks   Id  System


=> 새로 추가된 하드이기 때문에 어떠한 파티션도 나타나지 않는다.




3) 새로운 파티션 생성


Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-130, default 1):

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): +500M

=> default 값인 1부터 몇개의 실린더를 사용할지 적어도 되지만

   +와 단위를 붙여 사이즈 크기로 잡을 수도 있다.


Command (m for help): p


Disk /dev/sda: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x1f71f85f


   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          65      522081   83  Linux

=> 약 500M로 파티션이 나눠진 것을 확인 할 수 있다.


Command (m for help): w

The partition table has been altered!


Calling ioctl() to re-read partition table.

Syncing disks.

# fdisk -l /dev/sda


Disk /dev/sda: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x1f71f85f


   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          65      522081   83  Linux

=> 약 500M의 파티션이 생성된 것 확인




4) 파일 시스템 생성


mkfs : make file system


Cent5.x : # mkfs.ext3 /dev/hda1 (or) mkfs -t ext3 /dev/hda1

Cent6.x : # mkfs.ext4 /dev/sda1 (or) mkfs -t ext4 /dev/sda1




[포맷 실습]


# mkfs.ext4 /dev/sda1

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=1024 (log=0)

Fragment size=1024 (log=0)

Stride=0 blocks, Stripe width=0 blocks

130560 inodes, 522080 blocks

26104 blocks (5.00%) reserved for the super user

First data block=1

Maximum filesystem blocks=67633152

64 block groups

8192 blocks per group, 8192 fragments per group

2040 inodes per group

Superblock backups stored on blocks:

        8193, 24577, 40961, 57345, 73729, 204801, 221185, 401409


Writing inode tables: done

Creating journal (8192 blocks): done

Writing superblocks and filesystem accounting information: done


This filesystem will be automatically checked every 20 mounts or

180 days, whichever comes first.  Use tune2fs -c or -i to override.

=> 3번의 done 이 나오면 포맷 성공





4. 마운트


어떤 파일 시스템을 디렉터리 일부에 넣어서 이용가능하게 하는 작업.

하나의 파티션을 하위 디렉터리처럼 쓰는 것을 마운트라 한다.


# mount /dev/sda1 /m.p(mount point)

# unmout /dev/sda1 or /m.p




[실습]


# mkdir /mnt/cdrom/ /linuxtest/

/mnt/cdrom/ 에는 testfile1 을, /linuxtest/ 에는 testfile2 를 생성

# touch /mnt/cdrom/testfile1 /linuxtest/testfile2


VMware 프로그램에서 CD-ROM에 이미지 삽입

# ls -l /dev/hd*

ls: cannot access /dev/hd*: 그런 파일이나 디렉터리가 없습니다

=> 원래는 hd3 가 cdrom 전용 하드였는데 CentOS 6 으로 올라오면서 hd 는 없어졌다.


# ls -l /dev/cdrom

lrwxrwxrwx 1 root root 3 2014-12-01 13:38 /dev/cdrom -> sr0

=> /dev/cdrom 에 보니 sr0 으로 심볼릭 링크 되어있는 것 확인할 수 있다.


# mount /dev/cdrom /mnt/cdrom

mount: block device /dev/sr0 is write-protected, mounting read-only

=> #mount /dev/sr0 과 같은 명령어이며 /mnt/cdrom 디렉터리에 읽기 전용으로 마운트 되었다.




- 교재 108p, 마운트 되어 있는 상태 보여주는 명령어


# mount

/dev/sdb7 on / type ext4 (rw)

proc on /proc type proc (rw)

sysfs on /sys type sysfs (rw)

devpts on /dev/pts type devpts (rw,gid=5,mode=620)

tmpfs on /dev/shm type tmpfs (rw)

/dev/sdb1 on /boot type ext4 (rw)

/dev/sdb6 on /home type ext4 (rw)

/dev/sdb2 on /usr type ext4 (rw)

/dev/sdb5 on /var type ext4 (rw)

none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)

vmware-vmblock on /var/run/vmblock-fuse type fuse.vmware-vmblock (rw,nosuid,nodev,default_permissions,allow_other)

/dev/sr0 on /mnt/cdrom type iso9660 (ro)

=> 하지만 보기 불편하다.


보기 좋은 다른 명령어

# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

/dev/sr0        3.8G  3.8G     0 100% /mnt/cdrom



# ls -l /mnt/cdrom

합계 562

-r--r--r-- 2 root root     14 2014-10-24 22:59 CentOS_BuildTag

-r--r--r-- 2 root root    212 2013-11-27 18:36 EULA

-r--r--r-- 2 root root  18009 2013-11-27 18:36 GPL

dr-xr-xr-x 2 root root 534528 2014-10-24 23:16 Packages

-r--r--r-- 2 root root   1354 2014-10-20 00:59 RELEASE-NOTES-en-US.html

-r--r--r-- 2 root root   1706 2013-11-27 18:36 RPM-GPG-KEY-CentOS-6

-r--r--r-- 2 root root   1730 2013-11-27 18:36 RPM-GPG-KEY-CentOS-Debug-6

-r--r--r-- 2 root root   1730 2013-11-27 18:36 RPM-GPG-KEY-CentOS-Security-6

-r--r--r-- 2 root root   1734 2013-11-27 18:36 RPM-GPG-KEY-CentOS-Testing-6

-r--r--r-- 1 root root   3165 2014-10-24 23:17 TRANS.TBL

dr-xr-xr-x 3 root root   2048 2014-10-24 23:17 images

dr-xr-xr-x 2 root root   2048 2014-10-24 23:12 isolinux

dr-xr-xr-x 2 root root   4096 2014-10-24 23:17 repodata

=> 마운트 했기 때문에 아까 생성한 testfile1 이 보이질 않는다. 언마운트 하면 다시 보인다.



# umount /dev/sr0

=> 혹은 # umount /mnt/cdrom


# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

# ll /mnt/cdrom

합계 0

-rw-r--r-- 1 root root 0 2014-12-01 14:17 testfile1

=> 언마운트 하니 다시 tesetfile1 이 보여지는 것을 확인할 수 있다.




[실습]


내가 만든 파티션을 /mnt/cdrom에 마운트


# fdisk -l /dev/sda

Disk /dev/sda: 1073 MB, 1073741824 bytes

255 heads, 63 sectors/track, 130 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x1f71f85f


   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          65      522081   83  Linux


# mount /dev/sda1 /mnt/cdrom

# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

/dev/sda1       486M  2.3M  458M   1% /mnt/cdrom


/mnt/cdrom/ 에 testfile3 를 생성한뒤 언마운트 하여 이 파일이 정확히 어디에 생성되는지 확인

# touch /mnt/cdrom/testfile3

# umount /dev/sda1

# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

=> 언마운트 된 것 확인


해당 파티션을 /linuxtest 에 재 마운트 시켜 testfile3 의 존재를 확인

# ll /linuxtest

합계 0

-rw-r--r-- 1 root root 0 2014-12-01 14:17 testfile2

# mount /dev/sda1 /linuxtest

# ll /linuxtest/

합계 12

drwx------ 2 root root 12288 2014-12-01 14:07 lost+found

-rw-r--r-- 1 root root     0 2014-12-01 14:37 testfile3

=> 파티션에 testfile3 에 있는걸 확인가능



동시에 2곳에 마운트 시키기

# mount /dev/sda1 /mnt/cdrom

# ll /mnt/cdrom

합계 12

drwx------ 2 root root 12288 2014-12-01 14:07 lost+found

-rw-r--r-- 1 root root     0 2014-12-01 14:37 testfile3


새로운 testfile4 생성

# touch /mnt/cdrom/testfile4

# ll /linuxtest/

합계 12

drwx------ 2 root root 12288 2014-12-01 14:07 lost+found

-rw-r--r-- 1 root root     0 2014-12-01 14:37 testfile3

-rw-r--r-- 1 root root     0 2014-12-01 14:40 testfile4

=> /mnt/cdrom/ 에 만든 파일이 /linuxtest/ 에도 있다. 같은 파티션을 다른 곳에 마운트 시키면 공유된다.

   하지만 잘 사용하지 않는다.




[실습]


Extened partition 및 logical partition 만들기


# fdisk /dev/sda

...

Command (m for help): p

...

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

e

Partition number (1-4): 2

First cylinder (66-130, default 66):

Using default value 66

Last cylinder, +cylinders or +size{K,M,G} (66-130, default 130): +300M


Command (m for help): n

Command action

   l   logical (5 or over)

   p   primary partition (1-4)

l

First cylinder (66-104, default 66):

Using default value 66

Last cylinder, +cylinders or +size{K,M,G} (66-104, default 104):

=> 남은 용량을 모두 쓸 맨 마지막 파티션은 사이즈를 적지 말고 그냥 엔터를 누른다.

Using default value 104


Command (m for help):w

The partition table has been altered!


Calling ioctl() to re-read partition table.


WARNING: Re-reading the partition table failed with error 16: 장치나 자원이 동작 중.

The kernel still uses the old table. The new table will be used at

the next reboot or after you run partprobe(8) or kpartx(8)

Syncing disks.

=> The new table will be used at the next reboot : 재시작 해야 적용됨

=> 이 메세지가 나오면 재시작 필요.


포맷 명령어가 안되는 것을 확인할 수 있다.

# mkfs.ext4 /dev/sda5

mke2fs 1.41.12 (17-May-2010)

Could not stat /dev/sda5 --- 그런 파일이나 디렉터리가 없습니다

The device apparently does not exist; did you specify it correctly?


재부팅

# init 6


# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  176M  1.7G  10% /var

=> 마운트 된 것이 없어졌다. 즉 mount 명령어를 통한 마운트는 필요할 때 잠깐 쓰는 방법.


# mount /dev/sda1 /mnt/cdrom

# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

/dev/sda1       486M  2.3M  458M   1% /mnt/cdrom


# mount /dev/sda5 /linuxtest/

mount: you must specify the filesystem type

=> sda1은 마운트 되지만 sda5는 운트 안됨. 포맷 되지 않았다(filesystem type을 결정하라)는 에러


# mkfs.ext4 /dev/sda5

...

# mount /dev/sda5 /linuxtest/

# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

/dev/sda1       486M  2.3M  458M   1% /mnt/cdrom

/dev/sda5       289M  2.1M  271M   1% /linuxtest

=> 정상적으로 마운트 된 것을 확인할 수 있다.




* mount시 유의사항


1. mount point 는 임의의 디렉터리여야 한다.

사용자 및 시스템과 관련된 디렉터리를 mount point로 지정해서는 절대 안된다.

2. umount 명령 시 경로는 현재 마운트된 디렉터리만 아니면 어떤 곳이든 상관 없다.

3. 한개의 파티션은 반드시 한개의 mount point 만 사용한다.

4. 마운트시 작업할 대상은 반드시 파티션(Primary, Logical)만 대상이 된다.

하드디스크와 확장파티션(Extended)은 작업대상이 될 수 없다.


ex 2)

# cd /mnt/cdrom

# umount /mnt/cdrom

umount: /mnt/cdrom: device is busy.

        (In some cases useful info about processes that use

         the device is found by lsof(8) or fuser(1))

=> 마운트된 디렉터리에선 umount가 되지 않는다.




[문제]


기존에 작업했던 mp 및 하드를 제거하고

새롭게 ide 하드와 mp를 만들어서

방금 전에 했던 작업을 해보세요

primary 500M -> /linuxtext

logical 200M -> /mnt/cdrom



시스템 종료, 기존 하드디스크 삭제 및 새로운 하드디스크 추가

부팅


현재 마운트 된 것이 없는 것 확인

# df -h


새롭게 잘 추가 되었나 확인

# fdisk -l


# fdisk /dev/sda

...

Command (m for help): p

...

Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

p

Partition number (1-4): 1

First cylinder (1-130, default 1):

Using default value 1

Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): +500M

=> Primary partition 생성 완료


Command (m for help): n

Command action

   e   extended

   p   primary partition (1-4)

e

Partition number (1-4): 2

First cylinder (66-130, default 66):

Using default value 66

Last cylinder, +cylinders or +size{K,M,G} (66-130, default 130):

Using default value 130

=> 2번에 남은 용량 모두를 Extended partition으로 생성 완료


Command (m for help): n

Command action

   l   logical (5 or over)

   p   primary partition (1-4)

l

First cylinder (66-130, default 66):

Using default value 66

Last cylinder, +cylinders or +size{K,M,G} (66-130, default 130): +200M

=> Extended partition 중 200M를 Logical partition으로 생성 완료


Command (m for help): p

...

   Device Boot      Start         End      Blocks   Id  System

/dev/sda1               1          65      522081   83  Linux

/dev/sda2              66         130      522112+   5  Extended

/dev/sda5              66          91      208813+  83  Linux


Command (m for help): w

The partition table has been altered!


# mkfs.ext4 /dev/sda1

# mkfs.ext4 /dev/sda5

# mount /dev/sda1 /linuxtest

# mount /dev/sda5 /mnt/cdrom

# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sdb7       7.6G  316M  6.9G   5% /

tmpfs           504M   72K  504M   1% /dev/shm

/dev/sdb1       190M   26M  155M  15% /boot

/dev/sdb6       190M   18M  163M  10% /home

/dev/sdb2       5.7G  3.1G  2.3G  58% /usr

/dev/sdb5       1.9G  175M  1.7G  10% /var

/dev/sda1       486M  2.3M  458M   1% /linuxtest

/dev/sda5       194M  1.8M  182M   1% /mnt/cdrom




And


[17] rpm(2), yum

|


- 2014.11.28



* cmd - ftp


ftp> ?   : 도움말

ftp> prompt   : 대화 끄기

ftp> mput   : 여러개 동시에 올리기




1. rpm(2)


[실습]


mysql-connector-java-5.1.17-6.el6.noarch  설치 이어서 하기

(사실은 아키텍처가 noarch 이기 때문에 --nodeps 해서 설치해도 무관하지만 진행 해본다.)


*

geronimo-specs-compat 설치.

jaf => classpathx-jaf ... 로 대체

javamail => classpathx-mail ... 로 대체


*

java-gcj 의존성 문제

java-1.5.0-gcj, java_cup, sinjdoc 3개 다운받아 동시에 설치




[실습]


# rpm -qa | grep mysql

해서 나오는 모든 mysql 프로그램 삭제


php* 로 시작하는 모든 프로그램 설치


#rpm -qa | grep php

해서 나오는 모든 php 프로그램 삭제





2. YUM = Yellowdog Updater, Modified


본 실습용 os 에는 /etc/yum_samadal 로 명령어가 바뀌어있다.

(원본 위치는 /usr/bin/yum 이다)

-> # find / -name "yum*"

하지만 인터넷 되지 않는 곳에선 쓰지 못한다는 단점이 있다.

(특히 관공서는 인터넷 사용이 되지 않는다.)




1) Update


# yum (-y) update




2) Install


yum (-y) install name(*)

현재 위치에 있는 .rpm부터 설치한다.




3) Remove


yum (-y) remove name(*)

의존성 관련 pkg 삭제하는 도중 시스템이 마비될 수도 있다.

삭제는 yum으로 하는 것은 좋지 않다.




* Tip


우분투, 데비안 등에서의 yum 명령어

yum = apt-get




'Study > CentOS' 카테고리의 다른 글

[19] partition, mkfs, mount 실습  (0) 2015.03.28
[18] HDD & Partition, MBR, fdisk, mkfs, mount, umount  (0) 2015.03.28
[16] rpm(1)  (0) 2015.03.28
[15] gzip, bzip2, tar, man  (0) 2015.03.28
[14] SETUID, SETGID, Stickybit, UMASK  (0) 2015.03.28
And


[16] rpm(1)

|


- 2014.11.27


교재 p118 ~



1. rpm : Red Hat Package Manager


centos.org 접속

get centos 7 now -> dvd click

상위 메뉴 중 Mirror list - Asia, kaist 클릭 ....

(http://ftp.kaist.ac.kr/CentOS/6.6/os/i386/Packages/)

설치 가능한 rpm 의 목록들이다.



1) RPM 패키지 파일의 구성


① 패키지명


② 버전

major : 프로그램 자체가 완전 변경 - 그랜저 XG vs TG

minor : 치명적인 버그 수정

patch : 심각한 문제는 아니지만 불편한 것 수정

release : 패치된 것에서 조금의 수정


③ 아키텍쳐

[32bit]

i386 = 80386

- intel, cup 386, 486

i586 : P 1 ~ 3

i686 : P 4 ~ 7


[64bit]

x86_64 : AMD, intel


noarch : 플랫폼에 상관 없음


sparc : SunMicro System 의 스팍 계열 CPU


ppc : Power PC CPU - MAC용 CPU




2) RPM 옵션


-i rpm_file - install, 패키지 설치 되어 있으면 설치 안함

-U rpm_file - Upgrade, 업그레이드

-e rpm_file - 패키지 삭제

-v : verbose - 설치 내용 출력

-h : 설치 작업 상황 그래픽으로 보여줌

--nodeps : 패키지 의존성 검사 안함, 의존성 강제로 끊음



* 작업 전 확인할 것

# rpm -qa | grep 패키지명

(ls -l *ab* = ls -l | grep ab)



설치

# rpm -ivh 패키지명.rpm


삭제

# rpm -e 패키지명




[실습]


vi 설치되어있는지 확인


# vi

# rpm -qa | grep vim

vim-minimal-7.2.411-1.8.el6.i686

vim-enhanced-7.2.411-1.8.el6.i686

vim-common-7.2.411-1.8.el6.i686



* rpm 작업 공식(유의사항)

1. 모든 작업은 반드시 동일한 버전이어야 한다.

2. 의존성 오류(Failed dependencies)를 절대 무시하지 말자.

3. 의존성을 제기한 패키지를 먼저 작업한다.

4. 가급적 의존성 무시(--nodeps)를 사용하지 말자.

5. 'lib'으로 시작하고 중간에 'so'가 있는 경우는 무시해도 된다.

6. 디렉터리로 시작하는 거들(/usr/bin/)은 패키지가 아니므로 무시한다.

7. 대표 패키지부터 작업한다.

8. 나머지는 화면에 보이는 순서대로 작업한다.




vi 삭제

# rpm -e vim-minimal

오류: Failed dependencies:

        vim-minimal is needed by (installed) cvs-1.11.23-16.el6.i686

        vim-minimal is needed by (installed) sudo-1.8.6p3-15.el6.i686

=> 삭제 실패


의존성 오류 뜬 것을 차례대로 삭제하다보면 서로 의존된 것 삭제가 필요한 때가 온다.

그 때에는 2개를 동시에 삭제하면 된다.

# rpm -e redhat-lsb

오류: Failed dependencies:

        redhat-lsb(x86-32) = 4.0-7.el6.centos is needed by (installed) redhat-l

# rpm -e redhat-lsb-compat

오류: Failed dependencies:

        redhat-lsb-compat(x86-32) = 4.0-7.el6.centos is needed by (installed) r

# rpm -e redhat-lsb redhat-lsb-compat


이 뒤부터는 차례대로 위로 올라가며 삭제 진행하면 된다.

vim-minimal 삭제 전체 과정

# rpm -e redhat-lsb redhat-lsb-compat

# rpm -e redhat-lsb-printing

# rpm -e redhat-lsb-graphics

# rpm -e redhat-lsb-core

/var/tmp/rpm-tmp.dAbYuy: line 1: lsb_release: command not found

=> 무시해도 상관 없음


# rpm -e gettext

# rpm -e cvs

# rpm -e sudo

# rpm -e vim-minimal


vim 관련 나머지도 삭제

# rpm -e vim-enhanced

# rpm -e vim-common

# rpm -qa | grep vim

=> 검색 결과가 없다.


# vi

-ksh: vi: not found [그런 파일이나 디렉터리가 없습니다]

=> vi 가 삭제되어 실행되지 않는 것을 볼 수 있다.




[문제1]


http://ftp.kaist.ac.kr/CentOS/6.6/os/i386/Packages/

위의 사이트에서 vim* 으로 시작하는 package를 다운로드 및

linux로 업로드 하신 후 설치해보세요


필요 rpm 파일 다운로드 및 리눅스로의 업로드 후의 작업

# rpm -ivh ./vim-X11-7.2.411-1.8.el6.i686.rpm ./vim-common-7.2.411-1.8.el6.i686.rpm ./vim-enhanced-7.2.411-1.8.el6.i686.rpm ./vim-minimal-7.2.411-1.8.el6.i686.rpm

(혹은   # rpm -ivh ./vim*)




[문제2]


http://ftp.kaist.ac.kr/CentOS/6.6/os/i386/Packages/

위의 사이트에서 mysql* 으로 시작하는 package를 다운로드 및

linux로 업로드 하신 후 설치해보세요


*

perl(DBI) => perl-DBI-

(, ), :: => - (각각의 특수문자들은 - 로 봐도 무방하다.)


*

mysql-connector-java... 를 설치하다 보면 jta 설치하라고 하는데 못찾는다.

일단 해당 패키지는 넘어간다. => 내일 진행


*

lib으로 시작하며 중간에 so 가 들어가는 것을 모두 만족시키는 것만 설치하지 않아도 된다.


*

openssl 설치 도중 버전차이로 설치가 안되는 경우가 발생한다.

설치 되어있는 것을 삭제하려고 하면 너무 많은 것과 충돌하기 때문에

일단 --nodeps 옵션으로 강제 삭제 후 다시 설치한다.




And


[15] gzip, bzip2, tar, man

|


- 2014.11.26


/backup/ 에 있는 grub.conf, inittab, login.defs 파일을 현재 위치로 복사한 뒤 실습을 시작한다.




1. gzip


gzip option source

: 압축

-d : 압축 해제


gzip 압축

# gzip ./grub.conf

# ll

합계 12

-rw------- 1 root root  476 2014-11-26 12:58 grub.conf.gz

-rw-r--r-- 1 root root  884 2014-11-26 12:58 inittab

-rw-r--r-- 1 root root 1816 2014-11-26 12:58 login.defs

=> 원본 파일이 없어진 것 확인 할 수 있다.


gzip 압축해제

# gzip -d ./grub.conf.gz

           -- decompress

# ll

합계 12

-rw------- 1 root root  739 2014-11-26 12:58 grub.conf

-rw-r--r-- 1 root root  884 2014-11-26 12:58 inittab

-rw-r--r-- 1 root root 1816 2014-11-26 12:58 login.defs

=> 역시 원본 압축 파일 없어짐


여러 파일 압축

# gzip ./*

# ll

합계 12

-rw------- 1 root root  476 2014-11-26 12:58 grub.conf.gz

-rw-r--r-- 1 root root  884 2014-11-26 12:58 inittab.gz

-rw-r--r-- 1 root root 1816 2014-11-26 12:58 login.defs.gz

=> 동시에 묶이진 않고 각자 개별 파일로만 압축이 된다.





2. bzip2


# bzip2 option source

: 압축

-d : 압축 해제



bzip2 압축

# bzip2 ./grub.conf

# ll

합계 12

-rw------- 1 root root  542 2014-11-26 12:58 grub.conf.bz2

-rw-r--r-- 1 root root  884 2014-11-26 12:58 inittab

-rw-r--r-- 1 root root 1816 2014-11-26 12:58 login.defs

=> 원본 파일 없어짐


bzip2 압축 해제

# bzip2 -d ./grub.conf.bz2

# ll

합계 12

-rw------- 1 root root  739 2014-11-26 12:58 grub.conf

-rw-r--r-- 1 root root  884 2014-11-26 12:58 inittab

-rw-r--r-- 1 root root 1816 2014-11-26 12:58 login.defs

=> 원본 압축 파일 없어짐


* bzip2 역시 gzip과 마찬가지로 동시에 여러개 압축이 되지 않는다.





3. tar = tape Archive


tar option Archiving_file_name source

c - 보관하겠다.

x - 보관을 풀겠다.

v - verboss(보여주세요)

f - file

z - gzip 으로 압축 또는 해제

j - bzip2 으로 압축 또는 해제

-C path : path 에다 해당 작업 진행



cvf(생성), xvf(해제) 이 2가지 방식만 기억하면 된다



*Tip

tar 로 압축할 때엔 뒤에 .tar 를 붙여 tar 파일인 것을 남기는 습관이 좋다.



# tar cvf ./gc ./grub.conf

./grub.conf

# ll

합계 24

-rw-r--r-- 1 root root 10240 2014-11-26 13:33 gc

-rw------- 1 root root   739 2014-11-26 12:58 grub.conf

-rw-r--r-- 1 root root   884 2014-11-26 12:58 inittab

-rw-r--r-- 1 root root  1816 2014-11-26 12:58 login.defs

=> 이렇게 되면 gc라는 파일이 tar 파일인지 육안으로 확인하기 쉽지 않음

=> 카세트 테잎이나 CD처럼 안에 내용물이 얼마 들어가든 상관 없이 일정 공간이 생성된다.



# tar cvf ./gc.tar ./grub.conf

./grub.conf

# ll

합계 36

-rw-r--r-- 1 root root 10240 2014-11-26 13:33 gc

-rw-r--r-- 1 root root 10240 2014-11-26 13:34 gc.tar

-rw------- 1 root root   739 2014-11-26 12:58 grub.conf

-rw-r--r-- 1 root root   884 2014-11-26 12:58 inittab

-rw-r--r-- 1 root root  1816 2014-11-26 12:58 login.defs

=> tar 파일 확인 쉬움




[실습]


grub.conf 를 일단 지우고 tar 풀어보자


# rm ./grub.conf

# tar xvf ./gc.tar

./grub.conf

# ll

합계 36

-rw-r--r-- 1 root root 10240 2014-11-26 13:33 gc

-rw-r--r-- 1 root root 10240 2014-11-26 13:34 gc.tar

-rw------- 1 root root   739 2014-11-26 12:58 grub.conf

-rw-r--r-- 1 root root   884 2014-11-26 12:58 inittab

-rw-r--r-- 1 root root  1816 2014-11-26 12:58 login.defs

=> 압축 명령어들과 다르게 tar는 파일이 그대로 있는 것을 확인할 수 있다.




[문제]


현재 디렉터리에 있는 파일(grub.conf, inittab, login.defs)을 gil.tar 로 보관시켜보세요


# tar cvf gil.tar ./grub.conf ./inittab ./login.defs


tar 파일을 gzip 으로 압축

# gzip ./gil.tar

# ll

합계 4

-rw-r--r-- 1 root root 1953 2014-11-26 13:37 gil.tar.gz


이 압축된 파일을 /backup/ 에 압축 푸세요

# gzip -d ./gil.tar.gz

# tar xvf ./gil.tar

# mv ./grub.conf ./inittab ./login.defs /backup/



* Tip

tar 로 해제할 떄엔 현재 자신이 위치한 곳에 풀린다.




[실습 - 교재]


# tar cvf ./xinetd.tar /etc/xinetd.d/

tar: Removing leading `/' from member names

/etc/xinetd.d/

/etc/xinetd.d/rsync

# ll

합계 12

-rw-r--r-- 1 root root 10240 2014-11-26 13:53 xinetd.tar


# tar xvf ./xinetd.tar

etc/xinetd.d/

etc/xinetd.d/rsync


# ll

합계 16

drwxr-xr-x 3 root root  4096 2014-11-26 13:54 etc

-rw-r--r-- 1 root root 10240 2014-11-26 13:53 xinetd.tar

# ll ./etc/

합계 4

drwxr-xr-x 2 root root 4096 2014-10-30 01:57 xinetd.d

# ll ./etc/xinetd.d/

합계 4

-rw-r--r-- 1 root root 332 2014-03-28 19:54 rsync


=> tar는 내가 지정해준 디렉터리 까지, 경로 자체를 보관한다.

=> 또한 풀 때에는 내가 있는 경로 기준으로 풀린다.




[문제]


/bin 디렉터리의 모든 파일을 gzip 압축 및 tar 로 묶어서

/home 디렉터리 안에 binlist.tar.gz 라는 파일로 생성


# tar cvf /home/binlist.tar /bin/

tar: Removing leading `/' from member names

/bin

        ...

/bin/zcat

# ll

합계 8696

-rw-r--r-- 1 root root 8888320 2014-11-26 13:58 binlist.tar

drwxr-xr-x 3 root root    4096 2014-11-26 13:54 etc

-rw-r--r-- 1 root root   10240 2014-11-26 13:53 xinetd.tar


# gzip /home/binlist.tar

# ll /home

합계 4019

drwx------  4 badnom badnom    1024 2014-11-25 15:01 badnom

-rw-r--r--  1 root   root   4100186 2014-11-26 13:58 binlist.tar.gz

drwx------. 2 root   root     12288 2014-10-30 01:51 lost+found



* # gzip /bin/* 해서 /bin/ 것이 다 날라간 경우

백업 해놓은 gzip 명령 파일을 일반 계정으로 ftp 통해 업로드한다.

하지만 업로드 한 압축파일은 실행파일이 아니기 때문에 GUI 환경 통해 해당 파일을 실행파일로 속성 변경이 필요하다.

만약 GUI로 고칠 수 없는 상황이면 복구가 불가능하다. (가장 기초적인 명령어들이 bin 에 있기 때문)

# ./gzip -d /bin/*

=> /bin 에 .gz 로 개별적으로 묶여있던 파일들이 압축 해제된다. */



위의 문제를 bzip2 로 똑같이 진행

# tar cvf /home/binlist.tar /bin/

tar: Removing leading `/' from member names

/bin/

...

/bin/rnano

# bzip2 /home/binlist.tar

# ll /home/

합계 7611

drwx------  4 badnom badnom    1024 2014-11-25 15:01 badnom

-rw-r--r--  1 root   root   3677201 2014-11-26 14:22 binlist.tar.bz2

-rw-r--r--  1 root   root   4100186 2014-11-26 13:58 binlist.tar.gz

drwx------. 2 root   root     12288 2014-10-30 01:51 lost+found




[정리]


- gzip, bzip2 (압축)

1. 용량 작아짐

2. 원본 삭제

3. 단일 파일만 가능

4. 큰 파일의 압축 효율은 bzip2가 더 좋다.


- tar (보관)

1. 용량 커짐

2. 원본 유지

3. 다중파일 가능




4. tar + 압축


tar로 묶으면서 동시에 압축하기

# tar cvfz filename.tar.gz source

# tar cvfj filename.tar.bz2 source


압축 해제까지 한꺼번에 하기

# tar xvfz filename.tar.gz

# tar xvfj filename.tar.bz2



2가지 방법으로 /bin/ 디렉터리를 압축하세요


# tar cvfz ./binlist.tar.gz /bin/

# tar cvfj ./binlist.tar.bz2 /bin/


# ll

합계 7688

-rw-r--r-- 1 root    root    3677201 2014-11-26 14:38 binlist.tar.bz2

-rw-r--r-- 1 root    root    4103268 2014-11-26 14:37 binlist.tar.gz

drwxr-xr-x 3 root    root       4096 2014-11-26 13:54 etc

-rwxr-xr-x 1 samadal samadal   67500 2014-11-26 14:11 gzip

-rw-r--r-- 1 root    root      10240 2014-11-26 13:53 xinetd.tar




[문제]


현재 디렉터리에 있는 binlist.tar.xx 파일을 경로이동 하지 말고

/home/ 디렉터리에 풀어보세요



# tar xvfzC ./binlist.tar.gz /home/

# tar xvfj ./binlist.tar.bz2 -C /home/

아래 방식이 햇갈리지 않고 편리한 것 같다.


* 도움말 보기

# tar --help

# man tar




'Study > CentOS' 카테고리의 다른 글

[17] rpm(2), yum  (0) 2015.03.28
[16] rpm(1)  (0) 2015.03.28
[14] SETUID, SETGID, Stickybit, UMASK  (0) 2015.03.28
[13] 계정 복구, 계정 관련 Trouble Shooting, chown -R  (0) 2015.03.28
[12] 소유권, 허가권 실습, ftp 관련 권한  (0) 2015.03.28
And


[14] SETUID, SETGID, Stickybit, UMASK

|


- 2014.11.25




p74


원래 소유주에게 권한을 빌려와서 실행할 때만 소유권을 가짐


SETUID          4777    r w s   r w x   r w x

SETGID          2777    r w x   r w s   r w x

Sticky bit         1777    r w x   r w x   r w t


S,s / T,t  : x 권한의 유무에 따라 없으면 S(대문자), 있으면 s(소문자) 이다.




1. Sticky bit


[실습]


# mkdir /sb/

# useradd badnom


samadal 계정으로 /sb/ 디렉터리에 testfile 생성 위해 757 권한 부여

# chmod 757 /sb/

[samadal@samadal ~]$ touch /sb/testfile


badnom 이 해당 파일 삭제

[badnom@samadal ~]$ rm /sb/testfile

rm: remove write-protected 일반 빈 파일 `/sb/testfile'? y


관리자가 해당 사태를 보고 Sticky bit 를 진행.

# chmod 1777 /sb/

# ll -d /sb/

drwxrwxrwt 2 root root 4096 2014-11-25 13:06 /sb/


samadal 이 한번 더 올린다.

[samadal@samadal ~]$ touch /sb/testfile


badnom 이 한번 더 삭제를 시도하지만 실패

[badnom@samadal ~]$ rm /sb/testfile

rm: remove write-protected 일반 빈 파일 `/sb/testfile'? y

rm: cannot remove `/sb/testfile': 명령을 허용하지 않음


즉, Sticky bit 는 소유자만 삭제하게 할 수 있다. 공유폴더에 많이 쓰는 권한.



samadal로는 지워진다.

[samadal@samadal ~]$ rm /sb/testfile

[samadal@samadal ~]$ ll /sb/

합계 0



* /tmp/ 디렉터리가 대표적인 Sticky bit 를 사용하는 예





2. SetUID


[실습]


find 명령어 활용하여 오늘 쓴 명령어 중 SetUID 적용된 명령어 찾기


ex)

# find / -name chmod


passwd에 SetUID가 설정된 것을 확인

# find / -name passwd -exec ls -l {} \;

-rwsr-xr-x. 1 root root 25980 2012-02-22 20:44 /usr/bin/passwd

-rw-r--r--. 1 root root 1666 2014-11-25 12:57 /etc/passwd

-rw-r--r--. 1 root root 146 2012-02-22 20:44 /etc/pam.d/passwd



이 passwd 명령어에 SetUID 빼고 samadal로 passwd 변경을 다시 시도 해보자.


/usr/bin/passwd         명령어실행     p/w변경

4755

rwsr-xr-x               O               O


755

rwxr-xr-x              O               X


4750

rwsr-x---           X               X


*

other의 실행 권한이 0이면 실행 자체도 안된다. 일반적으로 서버에서는 보안상 4750 권한을 준다.


*

/usr/bin/passwd 명령어 소스파일 자체 안에 root만 변경 가능하도록 되어있다.

(x 권한은 컴파일, 링커를 거쳐야지만 생성됨. 즉 일반 파일의 Max 권한은 666이라 할 수 있다.)





3. SetGID


[실습]


# cd ~samadal

# mkdir ./testdir/

# touch ./testdir/test


# chown .samadal ./testdir/

# ll

합계 4

-rwsr--r-- 1 root root       0 2014-11-25 12:53 test

drwxr-xr-x 2 root samadal 4096 2014-11-25 13:59 testdir


그룹 소유권이 samadal인 디렉터리에 test2 생성

# touch ./testdir/test1

# ll ./testdir

합계 0

-rw-r--r-- 1 root root 0 2014-11-25 13:59 test

-rw-r--r-- 1 root root 0 2014-11-25 13:59 test1

=> dir의 GID가 samadal이라 해도 파일을 생성하면 소유권은 root:root 이다.


SetGID 설정

# chmod 2755 ./testdir/

# ll

합계 4

-rwsr--r-- 1 root root       0 2014-11-25 12:53 test

drwxr-sr-x 2 root samadal 4096 2014-11-25 13:59 testdir


SetGID 설정 된 디렉터리에 test2 생성

# touch ./testdir/test2

# ll ./testdir/

합계 0

-rw-r--r-- 1 root root    0 2014-11-25 13:59 test

-rw-r--r-- 1 root root    0 2014-11-25 13:59 test1

-rw-r--r-- 1 root samadal 0 2014-11-25 14:00 test2

=> test2 그룹 소유자가 SetGID 디렉터리의 소유주를 따라감



SetGID : 해당 권한이 있는 디렉터리 안에 파일이나 디렉터리 생성되면 해당 소유주를 따라 소유주가 자동 변경.




[실습]


./testdir/ 을 4755 로 권한 변경


# chmod 4755 ./testdir/

# ll

합계 4

-rwsr--r-- 1 root root       0 2014-11-25 12:53 test

drwsr-sr-x 2 root samadal 4096 2014-11-25 14:00 testdir

=> GID의 s가 chmod 4755 명령어로는 바뀌지 않는다.


# chmod g-s ./testdir/

# ll

합계 4

-rwsr--r-- 1 root root    0 2014-11-25 12:53 test

drwsr-xr-x 2 root root 4096 2014-11-25 14:00 testdir

=> 변경 완료




[문제]


옵션을 찾아서 아래의 설명에 필요한 대로 각 한번의 명령어로 디렉터리를 생성한다.

1) /tmp/test/test1/test2/ 디렉터리 생성

2) /tmp/test 디렉터리는 Sticky bit, 모든 사용자가 모든 권한 가짐

3) /tmp/test/test1 디렉터리 소유자는 모든 권한을, 그룹은 읽기 및 실행권한, 다른 유저는 실행권한을 가진다.

4) /tmp/test/test1/test2/ 디렉터리는 소유자는 모든 권한을, 그룹은 읽기 권한을, 다른 유저는 아무런 권한 없음


# mkdir -p /tmp/test/test1/test2/

# chmod 1777 /tmp/test/

# chmod 751 /tmp/test/test1/

# chmod g-x,o-rx /tmp/test/test1/test2/





* SetUID 위험성


특정 소스파일을 실행 시 자동으로 root 권한 획득하는 프로그램 심어두고 해킹에 악용될 수 있다.

그렇기 때문에 서버관리자는 SetUID 적용된 리스트를 잘 관리해야 한다.


SetUID 적용된 파일 오류 제외하고 출력하라는 명령어

# find / -user root -perm +4000 2> /dev/null





4. UMASK


파일 및 디렉터리가 만들어질 때 기본적으로 설정될 사용권한을 결정

UMASK

Directory         관리자  d1      755     777 - 755 = 022

Max : 777       사용자  d2      775     777 - 775 = 002


File                 관리자  f1      644     666 - 644 = 022

Max : 666       사용자  f2      664     666 - 664 = 002




1) UMASK 사용 예


# vi /etc/login.defs

57 # the permission mask will be initialized to 022.

58 UMASK           077

59




2) umask 확인


# umask

0022


[samadal@samadal ~]$ umask

0002




[umask 실습]


# umask 000

# umask

0000

# mkdir ./t1/

# touch ./t2

# ll

합계 7

drwxrwxrwx 2 root    root    4096 2014-11-25 14:45 t1

-rw-rw-rw- 1 root    root       0 2014-11-25 14:45 t2

=> t1과 t2의 권한이 최대로 되어있다.


# umask 123

# mkdir ./t3/

# ll

합계 11

drwxrwxrwx 2 root    root    4096 2014-11-25 14:45 t1

-rw-rw-rw- 1 root    root       0 2014-11-25 14:45 t2

drw-r-xr-- 2 root    root    4096 2014-11-25 14:46 t3

=> 하지만 이렇게 변경된 umask 는 현재 열려있는 터미널에서만 먹힌다.(1회성)


이곳의 설정 값을 바꾸면 영구적인 변경이 가능하다.

# vi /etc/profile

58 # By default, we want umask to get set. This sets it for login shell

59 # Current threshold for system reserved uid/gids is 200

60 # You could check uidgid reservation validity in

61 # /usr/share/doc/setup-*/uidgid file

62 if [ $UID -gt 199 ] && [ "`id -gn`" = "`id -un`" ]; then

63     umask 002

64 else

65     umask 022




[문제]


473 이라는 허가권을 갖는 d3와 f3를 만들기 위한 umask 값은?

=> 304


256 이라는 허가권을 갖는 d4와 f4를 만들기 위한 umask 값은?

=> 521




And


[13] 계정 복구, 계정 관련 Trouble Shooting, chown -R

|


- 2014.11.24




[문제]


사마달 계정 삭제 뒤 /samadal/ 을 만들고 이 디렉터리를 /export/home/samadal 로 이동하여

이동한 위치를 홈 디렉터리로 하는 samadal 계정을 다시 만드세요.


# userdel -r samadal


# mkdir /samadal/

# mkdir -p /export/home/

# mv /samadal/ /export/home/


# useradd -d /export/home/samadal samadal

useradd: 경고: 홈디렉터리가 이미 있습니다.

skel 디렉터리에서 파일을 복사하지 않습니다.

# cp /etc/skel/.* /export/home/samadal/

cp: omitting directory `/etc/skel/.'

cp: omitting directory `/etc/skel/..'

cp: omitting directory `/etc/skel/.gnome2'

cp: omitting directory `/etc/skel/.mozilla'

# cp -r /etc/skel/.gnome2 /etc/skel/.mozilla /export/home/samadal/


# chmod 700 /export/home/samadal/

# chown -R samadal. /export/home/samadal/





[Trouble Shooting 예제]


# rm -rf ./samadal/

samadal 계정 원상복귀 시키기


# mkdir ./samadal/

# cp /etc/skel/.* /export/home/samadal/

cp: omitting directory `/etc/skel/.'

cp: omitting directory `/etc/skel/..'

cp: omitting directory `/etc/skel/.gnome2'

cp: omitting directory `/etc/skel/.mozilla'

# cd /export/home/

# cp -r /etc/skel/.gnome2 /etc/skel/.mozilla ./samadal

# chmod 700 ./samadal

# chown -R samadal. ./samadal/





*

로그인 안되면 /etc/passwd 와 홈 디렉터리 존재 유무 확인

ftp 업로드 안되면 w 권한 있는지 확인




And


[12] 소유권, 허가권 실습, ftp 관련 권한

|


- 2014.11.21



1. 소유권 허가권 규칙 실습



1) 권한 부여의 우선순위 : user > group > other


2) 허가권 570 : user는 w권한 없지만 group은 w권한이 있다.


3) samadal:root = samadal:samadal 일 수밖에 없다.



*

허가권 other에 권한이 있다면 소유권이 root:root 로 되어있다 하더라도

samadal 계정으로 주어진 권한 행사가 가능하다.

(심지어 001, 005 처럼 user 및 group에 권한이 0이라 하더라도)





2. ftp 관련 권한


ftp를 이용하여 파일을 업로드 할 때에는 r 권한이 없이

w, x 권한만 있어도 해당 디렉터리에 접근 및 업로드가 가능하다.




And


[11] 허가권, 소유권, chmod, chown, chgrp

|


- 2014.11.20



1. 허가권


ls -l 로 봤을때 맨 앞에 있는 것 : 허가권


                 Owner           Group           Other

           -    r  w  x          r  w  x         r  w  x

       파일     4  2  1         4  2  1         4  2  1             // 각각은 2진수로 2^2, 2^1, 2^0  을 뜻한다.

                        7                7                 7                 // 각 자리의 합을 모두 더해서 나온 숫자

                   x100 = 700      x10 = 70        x1 = 7

           d

    디렉터리


rEAD : 읽기

wRITE : 쓰기

ExECUTE : 실행, 접근


* 741 : Owner은 rwx, Group은 r,  Other은 x 의 권한이 있다는 뜻.



1) x 의 의미


파일 : x가 없다 -> 문서파일, x가 있다 -> 실행파일

디렉터리 : 접근. -> 디렉터리의 경우 디렉터리에 접근(x)을 해야 읽거나(r) 쓸수(w)있다.




2) 파일에서의 권한


r : cat, more, vim, cp 등과 같은 파일의 내용을 읽어 들이는 것과 관련이 있다.

w : cat, echo, vim 등과 같은 파일의 내용을 수정, 변경하는 것과 관련이 있다.

    vim 같은 경우는 :wq!로 저장이 가능하지만 소유주가 변한다.

x : 실행 여부와 관련이 있다.




3) 디렉터리에서의 권한


r : ls, dir 등과 같은 디렉터리 내부 내용을 읽어 들이는 것과 관련이 있다.

w : mkdir, touch, rm, mv 등과 같은 디렉터리 내부에 생성, 삭제와 관련이 있다.

x : 디렉터리의 접근과 관련이 있다. x가 없다는 것은 대부분의 명령어를 이용할 수 없게 된다.




4) 권한 부여


권한을 부여하는 방법은 크게 2가지가 있다.


- numeric method

ex)

# chmod 456 file_dir


- symbolic method

Owner : u / Group : g / Other : o

ex)

# chmod g+r file_dir

# chmod o-x file_dir

# chmod g+r_x,o+w file_dir



ex)

# touch ./test

# ll

합계 0

-rw-r--r-- 1 root root 0 2014-11-20 13:08 test

   6  4  4 의 권한이 부여되어 있음.


예제를 위해 모든 권한 제거

# chmod 000 ./test

# ll

합계 0

---------- 1 root root 0 2014-11-20 13:08 test


그룹에 읽기, 실행 권한 주기

# chmod g+rx ./test

# ll

합계 0

----r-x--- 1 root root 0 2014-11-20 13:08 test


Other 에게 읽기, 쓰기, 실행 권한 주기

# chmod o+xrw ./test

# ll

합계 0

----r-xrwx 1 root root 0 2014-11-20 13:08 test




[문제1]


/backup/inittab 파일을 현재디렉토리(/export/home/samadal/)에 복사후 변경


numeric method 방법으로 변경    ->  r w - - w - - w x

symbolic method 방법으로 변경   ->  - w x r - x r w -

numberic method 방법으로 변경  ->  r - x - w - r w -


# cp /backup/inittab ./


nemeric method

# chmod 623 ./inittab

# ll

합계 4

-rw--w--wx 1 root root 884 2014-11-20 13:14 inittab

----r-xrwx 1 root root   0 2014-11-20 13:08 test


symbolic method

# chmod u+x-r ./inittab

# chmod g+rx-w ./inittab

# chmod o+r-x ./inittab

(= chmod u+x-r,g+rx-w,o+r-x ./inittab  // 콤마(,)에 띄어쓰기 금지)


numberic method

# chmod 526 ./inittab

# ll

합계 4

-r-x-w-rw- 1 root root 884 2014-11-20 13:14 inittab

----r-xrwx 1 root root   0 2014-11-20 13:08 test




[문제]


internet explorer 실행시킨 후 자신의 linux ip를 입력 후 화면 출력  -> 아파치가 깔려있는 경우 아파치 기본 화면 로딩

d드라이브에 있는 index.html을 linux로 업로드를 하세요.           -> 기본 index 파일 생성 후 진행

업로드가 되면 putty로 가셔서 index.html 파일을 /var/www/html/ 디렉터리로 이동시킨 후

internet explorer 를 F5 눌러보세요.


윈도우 cmd, ftp 를 이용하여 업로드 후

# mv ./index.html /var/www/html/ 한 뒤 internet explorer 에서 F5 누르면 됨




[추가]


/val/www/html/ 디렉터리에 있는 index.html 의 권한을 변경하면서

변경시마다 internet explorer 에서 F5를 눌러서 변경사항이 있는지 확인


r w - r - - r - -

        # chmod 644 /var/www/html/index.html

        -> 보여짐


- w - r - - r - -

        # chmod 244 /var/www/html/index.html

        -> 보여짐


r - - r - - r - -

        # chmod u+r-w /var/www/html/index.html

        -> 보여짐


r w - - - - r - -

        # chmod u+w,g-r /var/www/html/index.html

        -> 보여짐


r w - r - - - - -

        # chmod g+r,o-r /var/www/html/index.html

        -> 안보여짐 (Forbidden error)


=> Other의 r  권한이 없기 때문에 index.html 파일을 열 수가 없다.




[문제]


/var/www/디렉터리에 있는 html/ 디렉터리의 권한을 변경하면서

변경시마다 internet explorer에서 F5를 눌러서 변경사항이 있는지 확인하세요


r w x r - x r - x

        # chmod 755 /var/www/html/

        -> 보여짐


- w x r - x r - x

        # chmod 355 /var/www/html

        -> 보여짐


r - x r - x r - x

        # chmod 555 /var/www/html/

        -> 보여짐


r w - r - x r - x

        # chmod 655 /var/www/html/

        -> 보여짐


r w x - - x r - x

        # chmod u+x,g-r /var/www/html/

        -> 보여짐


r w x r - - r - x

        # chmod g+r-x /var/www/html/

        -> 보여짐


r w x r - x - - x

        # chmod g+x,o-r /var/www/html/

        -> 보여짐, 단 Other 권한으로 html 디렉터리 안을 볼 수 없음


r w x r - x r - -

        # chmod o+r-x /var/www/html/

        -> 아파치 기본 화면 보여짐


=> html 디렉터리의 경우 x 권한이 없는 경우 index.html 파일을  불러올 수 없음.





[문제]


※ user 홈 디렉터리는 700 권한이다.

홈디렉터리에 000 ~ 700 권한 변경 하면서 ftp 접속은 되는지, 파일 업로드는 되는지 해보세요


000 : FTP 로그인 실패

100 : FTP 로그인 성공, 업로드 실패, 목록 보기 실패

200 : FTP 로그인 실패

300 : FTP 로그인 성공, 업로드 성공, 목록 보기 실패

400 : FTP 로그인 실패

500 : FTP 로그인 성공, 업로드 실패, 목록 보기 성공

600 : FTP 로그인 실패

700 : FTP 로그인 성공, 업로드 성공, 목록 보기 성공




[결론]


x 권한이 있어야지만 FTP 접속 성공 (100, 300, 500, 700)

x,w 권한이 있어야 FTP 접속 후 업로드 가능 (300, 700)

        300 vs 700 : 목록 보기 가/불가 여부





2. 소유권


소유권 변경 : chown


현재 HOME 디렉터리에 있는 파일 모두 삭제 후 /backup/ 의 3개 파일 모두 복사해온다.


# rm ./*

# cp /backup/* ./

# ll

합계 12

-rw------- 1 root root  739 2014-11-20 14:54 grub.conf

-rw-r--r-- 1 root root  884 2014-11-20 14:54 inittab

-rw-r--r-- 1 root root 1816 2014-11-20 14:54 login.defs




1) 소유자 변경


grup.conf 의 소유자를 samadal로 변경

# chown samadal ./grub.conf

# ll

합계 12

-rw------- 1 samadal root  739 2014-11-20 14:54 grub.conf

-rw-r--r-- 1 root    root  884 2014-11-20 14:54 inittab

-rw-r--r-- 1 root    root 1816 2014-11-20 14:54 login.defs



2) 소유자 + 그릅소유권한 변경


inittab 파일의 소유자와 그룹소유권한을 samadal로 변경

# chown samadal:samadal ./inittab

# ll

합계 12

-rw------- 1 samadal root     739 2014-11-20 14:54 grub.conf

-rw-r--r-- 1 samadal samadal  884 2014-11-20 14:54 inittab

-rw-r--r-- 1 root    root    1816 2014-11-20 14:54 login.defs


login.defs 파일의 소유자는 samadal로, 그룹소유권한은 user1로 변경

# chown samadal:user1 ./login.defs

# ll

합계 12

-rw------- 1 samadal root     739 2014-11-20 14:54 grub.conf

-rw-r--r-- 1 samadal samadal  884 2014-11-20 14:54 inittab

-rw-r--r-- 1 samadal user1   1816 2014-11-20 14:54 login.defs



*

chown 을 통해 소유권 변경 시 UID 및 GID는 각각 /etc/passwd, /etc/group 에서 정보를 얻어 변경한다.

(: 대신 . 으로도 사용 가능하다.)




3) 소유자 & 그룹 동시 변경


# chown root. ./inittab

# ll

합계 12

-rw------- 1 root    samadal  739 2014-11-20 14:54 grub.conf

-rw-r--r-- 1 root    root     884 2014-11-20 14:54 inittab

-rw-r--r-- 1 samadal user1   1816 2014-11-20 14:54 login.defs




4) 그룹만 변경


# chown .root ./login.defs    ( = chgrp samadal ./inittab)

# ll

합계 12

-rw------- 1 root    samadal  739 2014-11-20 14:54 grub.conf

-rw-r--r-- 1 root    root     884 2014-11-20 14:54 inittab

-rw-r--r-- 1 samadal root    1816 2014-11-20 14:54 login.defs




And


prev | 1 | 2 | 3 | 4 | next