====== find 연습 ======
mksock aaa.sock
mknod sda b 8 1
mknod sdb b 8 2
mkfifo bbb
mknod tty1 c 2 1
find -type f -exec rm -f {} \;
find -type b -exec rm -f {} \;
find -type c -exec rm -fv {} \;
find -type s -exec rm -fv {} \;
find -type p -exec rm -fv {} \;
find -type d -exec rm -rfv {} \;
-user
-nouser
-group
-nogroup
-uid
-gid
# find /dev -group tty -ls | head
# find /dev -group disk -ls | head
# find /dev -user bin -ls | head
# find /dev -user root -ls | head
# find /dev -uid 0 -ls | head
# find /dev -gid 6 -ls | head
# for i in $(seq 5)
> do
> touch $i.txt
> done
# ls -l
total 20
-rw-r--r-- 1 root root 0 Mar 31 18:25 1.txt
-rw-r--r-- 1 root root 0 Mar 31 18:25 2.txt
-rw-r--r-- 1 root root 0 Mar 31 18:25 3.txt
-rw-r--r-- 1 root root 0 Mar 31 18:25 4.txt
-rw-r--r-- 1 root root 0 Mar 31 18:25 5.txt
# chown 1000 1.txt
# chown 2000 2.txt
# chgrp 5000 3.txt
# chgrp 4000 4.txt
# ls -l
total 20
-rw-r--r-- 1 1000 root 0 Mar 31 18:25 1.txt
-rw-r--r-- 1 2000 root 0 Mar 31 18:25 2.txt
-rw-r--r-- 1 root 5000 0 Mar 31 18:25 3.txt
-rw-r--r-- 1 root 4000 0 Mar 31 18:25 4.txt
-rw-r--r-- 1 root root 0 Mar 31 18:25 5.txt
# find -nouser -ls
229378 4 -rw-r--r-- 1 1000 root 0 Mar 31 18:25 ./1.txt
229379 4 -rw-r--r-- 1 2000 root 0 Mar 31 18:25 ./2.txt
# find -nogroup -ls
229381 4 -rw-r--r-- 1 root 4000 0 Mar 31 18:25 ./4.txt
229380 4 -rw-r--r-- 1 root 5000 0 Mar 31 18:25 ./3.txt
# ls -n
total 20
-rw-r--r-- 1 1000 0 0 Mar 31 18:25 1.txt
-rw-r--r-- 1 2000 0 0 Mar 31 18:25 2.txt
-rw-r--r-- 1 0 5000 0 Mar 31 18:25 3.txt
-rw-r--r-- 1 0 4000 0 Mar 31 18:25 4.txt
-rw-r--r-- 1 0 0 0 Mar 31 18:25 5.txt
# echo "ABC" > 1.txt
# echo "abc" >> 1.txt
# echo "AbC" >> 1.txt
# grep ABC 1.txt
ABC
# grep abc 1.txt
abc
# grep -i abc 1.txt
ABC
abc
AbC
# cat << END > 2.txt
> 1
> 2
> 3
> 4
> 5
> 6
> 7
> 8
> 9
> 10
> 11
> END
# grep 5 2.txt
5
# grep -A 3 5 2.txt
5
6
7
8
# grep -B 3 5 2.txt
2
3
4
5
grep egrep fgrep
파이프
0 stdin
1 stdout
2 stderr
# useradd unixuser
# passwd unixuser
Changing password for user unixuser.
New UNIX password:
BAD PASSWORD: it is too short
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
# passwd --stdin unixuser
Changing password for user unixuser.
898099
passwd: all authentication tokens updated successfully.
# echo 12345678
12345678
# echo 12345678 | passwd --stdin unixuser
Changing password for user unixuser.
passwd: all authentication tokens updated successfully.
#
리다이렉션
# 명령어 > 파일명
# 명령어 > 장치명
# ls > a.txt
# ls > /dev/null
# ls
1.txt 2.txt 3.txt 4.txt 5.txt
# ls > a.txt
# ls -l
total 36
-rw-r--r-- 1 1000 root 12 Mar 31 18:35 1.txt
-rw-r--r-- 1 2000 root 26 Mar 31 18:38 2.txt
-rw-r--r-- 1 root 5000 0 Mar 31 18:25 3.txt
-rw-r--r-- 1 root 4000 0 Mar 31 18:25 4.txt
-rw-r--r-- 1 root root 0 Mar 31 18:25 5.txt
-rw-r--r-- 1 root root 36 Mar 31 19:11 a.txt
# cat a.txt
1.txt
2.txt
3.txt
4.txt
5.txt
a.txt
# pwd >> a.txt
# cat a.txt
1.txt
2.txt
3.txt
4.txt
5.txt
a.txt
/root
# pwd > a.txt
# cat a.txt
/root
# pwd >> b.txt
# ls
1.txt 2.txt 3.txt 4.txt 5.txt a.txt b.txt
date 를 이용한 날짜구하기
# mkdir $(date +%Y%m%d)
# ls -ld 20140408
drwxr-xr-x 2 root root 4096 Apr 8 10:12 20140408
# rmdir -v `date +%Y%m%d`
rmdir: removing directory, 20140408
# echo $(date +%Y%m%d)
20140408
# rdate -s time.bora.net && clock -w
crontab -e <-- 스케줄작업에 대한 수정 옵션
확장된 파일접근 권한
acl <-- 확인
부트로더 종류
LILO : old
grub : new
/lib/iptables <-- 방화벽의 모듈이 들어있는 디렉토리
/lib
/usr/lib
- 파일의 형식
- 라이브러리는 object 들을 묶어놓은 아카이브 파일이다.
lib<라이러리명>.a
lib<라이러리명>.so
넷필터 : 커널안에 들어있는 방화벽
iptables : 넷필터를 제어하는 도구
===========================================================
LAB> 방화벽을 사용해서 ping 을 막아보자.
# iptables -F
# ping -c 3 localhost
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=1 ttl=64 time=0.156 ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=2 ttl=64 time=0.337 ms
64 bytes from localhost.localdomain (127.0.0.1): icmp_seq=3 ttl=64 time=0.157 ms
--- localhost.localdomain ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 0.156/0.216/0.337/0.086 ms
# iptables -A INPUT -p icmp -j DROP
# ping -c 3 localhost
PING localhost.localdomain (127.0.0.1) 56(84) bytes of data.
--- localhost.localdomain ping statistics ---
3 packets transmitted, 0 received, 100% packet loss, time 2002ms
다시 iptables -F (룰 설정 초기화) 입력하여 ping 막은거 풀어줌
===========================================================
===========================================================
LAB> 라이브러리를 만들어서 라이브러리가 무엇인지 이해해보자.
정적 라이브러리명 : libko.a
-- 작업순서 --
1. 소스파일 만들기
2. 소스파일 컴파일하기
3. 실행파일 실행하기
-- 작업순서 --
1. 소스파일 만들기
# vi hello.c
-- hello.c --
#include <stdio.h>
int main()
{
puts("Hello"); <-- puts c라이브러리
return 0;
}
-- hello.c --
2. 소스파일 컴파일하기
- hello.c 를 컴파일해서 hello 실행파일 만들기
# gcc -o hello hello.c
# ls -l hello
-rwxr-xr-x 1 root root 4937 Apr 8 10:36 hello*
3. 실행파일 실행하기
- 컴파일해서 나온 hello 를 실행하기
# ./hello
Hello
4. ko.c 파일 만들기
# vi ko.c
#include <stdio.h>
void myhello(void)
{
puts("myhello");
}
- 컴파일하기
# gcc -c ko.c
# ls -l ko.o
-rw-r--r-- 1 root root 848 Apr 8 10:38 ko.o
- myhello() 추가하기
# vi hello.c
-- hello.c --
#include <stdio.h>
void myhello(void); <-- 새로 추가된 함수
int main()
{
puts("Hello");
myhello(); <-- 새로 추가된 함수
return 0;
}
-- hello.c --
- hello.c 는 컴파일은 잘된다.
# gcc -c hello.c
# ls -l hello.o
-rw-r--r-- 1 root root 904 Apr 8 10:39 hello.o
- 하지만 myhello() 함수를 찾을 수 없어서 링킹과정에서 에러가 발생한다.
# gcc -o hello hello.o
hello.o: In function `main':
hello.c:(.text+0x1e): undefined reference to `myhello'
collect2: ld returned 1 exit status
- 실행파일 컴파일 (ko.o 를 포함시킨다.)
# gcc -o hello hello.o ko.o
# ./hello
Hello
myhello
- ko2.c 작성
# vi ko2.c
-- ko2.c --
#include <stdio.h>
void myhello2(void)
{
puts("myhello2");
}
-- ko2.c --
- ko2.c 컴파일
# gcc -c ko2.c
# ls -l ko2.o
-rw-r--r-- 1 root root 852 Apr 8 10:41 ko2.o
# vi hello.c
-- hello.c --
#include <stdio.h>
void myhello(void);
void myhello2(void); <-- 새롭게 추가
int main()
{
puts("Hello");
myhello();
myhello2(); <-- 새롭게 추가
return 0;
}
-- hello.c --
- 라이브러리로 컴파일한 것이 아닌 것
# gcc -c hello.c
# gcc -o hello hello.o ko.o ko2.o
# ./hello
Hello
myhello
myhello2
- 라이브러리 파일 만들기(libko.a)
- 라이브러리 파일은 오브젝트 파일들을 모아놓은 아카이브파일이다.
# ar r libko.a ko.o ko2.o
ar: creating libko.a
# ls -l libko.a
-rw-r--r-- 1 root root 1920 Apr 8 10:45 libko.a
# ar t libko.a
ko.o
ko2.o
- 라이브러리를 이용한 컴파일하기
- -l<라이브러리명> -L<라이브러리의 위치>
# gcc -o hello2 hello.o -lko -L .
# ./hello2
Hello
myhello
myhello2
===========================================================
/ (root)
- 마운트 되는 리눅스 파일 시스템이 있는 최상위 디렉토리
- 시스템의 근간을 이루는 가장 중요한 디렉토리
- 파티션 설정 시 반드시 존재하여야 함
- 절대경로의 기준이 되는 디렉토리
※ 절대경로 - / 디렉토리 기준 예) /usr/local
상대경로 - 현재 작업 디렉토리 기준 예) ./local
/bin
- 리눅스의 기본 명령어(binary)들이 들어있는 디렉토리
- 시스템을 운영하는데 기본적인 명령어들이 들어 있음.
/sbin
- 시스템 관리에 관련된 실행 명령어들이 들어있는 디렉토리
- 시스템 점검 및 복구 명령, 시스템 초기 및 종료 명령 등 시스템 관리에 관련된 실행파일들 존재.
/lib
- 프로그램들이 의존하고 있는 라이브러리 파일들 존재.
- /lib/modules : 커널 모듈 파일들 존재.
- 대부분의 라이브러리들은 링크로 연결되어 있음.
/proc
- 시스템에 대한 정보를 제공하는 가상 파일 시스템.
- 커널의 어떤 기능을 제어할 수 있는 역할을 가지고 있음.
- 대부분 읽기 전용이나, 일부 파일중에는 쓰기가 가능한 파일이 존재 하는데 이러한 파일들에 특정 값을 지정하면 커널 기능이 변하게 됨.
- 이 디렉토리 내에 있는 파일을 cat 명령을 이용하여 보면 시스템 정보를 확인 할 수 있음.
예) 인터럽트 정보 확인 ---> cat /proc/interrupts
/etc
- 시스템 환경 설정 파일이 있는 디렉토리
- 네트워크 관련 설정파일, 사용자 정보 및 암호정보, 파일 시스템 정보, 보안파일, 시스템 초기화 파일등 중요 설정 파일들의 위치한 디렉토리
- /etc/CORBA : Common Object Request Broker Architecture (COBRA)에 관한 파일이 들어있음.
- /etc/X11 : 엑스 윈도우 설정에 관련된 파일들이 있음.
- /etc/cron.d : crontab 명령의 설정파일이 있음.
- /etc/cron.daily : 매일 작동하게 하는 crontab 스크립트 파일이 존재.
- /etc/gnome : GTK+ 정의파일들이 있음.
- /etc/httpd : 아파치 웹 서버의 설정 및 로그파일이 있음.
- /etc/logrotate.d : logrotate 설정 파일들이 있음.
- /etc/mail : 센드메일과 관련된 파일이 있음.
- /etc/ppp : ppp 설정에 관련된 파일들이 있음.
- /etc/profile.d : 쉘 로그인 하여 프로파일의 실행되는 스크립트에 대한 정의가 있음.
- /etc/rc.d : 시스템 초기화와 관련된 스크립트가 존재.
- /etc/samba : 삼바에 관련된 파일들이 있음.
- /etc/security : 터미널 보안에 관련된 설정이 있음.
- /etc/skel : 새로운 사용자를 추가할 때 자동적으로 생성되는 디렉토리와 파일이 있음.
- /etc/squid : squid 프록시 서버에 관련된 파일이 있음.
- /etc/ssh : secure shell 설정 파일이 있음
- /etc/sysconfig : 시스템과 네트워크 설정을 담고 있음.
- /etc/xinetd.d : 슈퍼데몬 xinetd.d의 서비스 영역을 설정하는 디렉토리.
/var
- 가변 자료 저장 디렉토리
- 시스템 운영중에 시스템 자료 데이터가 변경될 때 변경된 자료들이 저장되는 곳.
- 주로 시스템 작동기록(log)들을 저장.
- /var/log : 시스템에 발생된 일들에 대한 기록 파일이 있음
- /var/named : 네임서버 설정 파일들 존재
- /var/spool/mail : 수신 메일을 사용자 명으로 기록하는 디렉토리
/usr
- 일반 사용자들을 위한 대부분의 프로그램 라이브러리 파일들이 위치.
- /usr/bin : 응용 프로그램의 실행 파일이 위치
- /usr/sbin : 주로 네트워크 관련 실행 명령어와 실행 데몬들을 많이 포함하고 있음.
- /usr/X11R6 : X-window 시스템에 관련된 파일 존재.
- /usr/include : 기본 C 라이브러리 헤더 파일과 각종 라이브러리 헤더파일들이 있음.
- /usr/lib : /usr/bin과 /usr/sbin에 있는 실행 바이너리를 실행하기 위한 라이브러리 존재.
- /usr/src : 프로그램소스 및 커널 소스들이 보관되어 있는 곳.
- /usr/man : 매뉴얼 페이지가 담겨있는곳.
- /usr/local : 새로운 프로그램들이 설치되는 곳 (windows의 Program Files 와 유사)
/mnt
- 다른 장치들을 마운트 할때 일반적으로 사용하는 디렉토리
- 다른 디렉토리를 사용하여도 됨.
/home
- 일반 사용자의 홈 디렉토리가 만들어 지는 디렉토리
- 사용자 계정을 만들면 게정과 같은 이름으로 새로운 사용자 디렉토리가 /home 디렉토리의 하위 디렉토리로 생성됨.
/boot
- 부팅에 핵심적인 커널 이미지와 부팅 정보 파일을 담고 있는 디렉토리
- /etc/lilo.conf에서 지정한 커널 부팅 이미지 파일이 들어 있으며 부팅시 매우 중요한 디렉토리
/root
- 슈퍼유저(root) 사용자의 홈 디렉토리.
- / 와 /root 디렉토리는 부르는 이름은 같지만 서로 다름.
# mkdir A
# mount /dev/cdrom A
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7103744 2190916 4546148 33% /
tmpfs 127492 0 127492 0% /dev/shm
/dev/hdc 3831642 3831642 0 100% /root/A
# umount A
# dd if=/dev/zero of=test.dd bs=1024 count=100000
# mke2fs -j test.dd
mke2fs 1.39 (29-May-2006)
test.dd is not a block special device.
Proceed anyway? (y,n) y
# mount -o loop test.dd A
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7103744 2291020 4446044 35% /
tmpfs 127492 0 127492 0% /dev/shm
/root/test.dd 96828 5664 86164 7% /root/A
- 장치를 사용하면 umount 가 안된다.
ex)
# cd A
# umount /root/A
umount: /root/A: device is busy
umount: /root/A: device is busy
# useradd linux
# su - linux
$ su -
Password:
su: incorrect password
$ su -
Password:
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7103744 2291044 4446020 35% /
tmpfs 127492 0 127492 0% /dev/shm
/root/test.dd 96828 5664 86164 7% /root/A
# umount /root/A
umount: /root/A: device is busy
umount: /root/A: device is busy
# su - linux
$ /sbin/ifconfig
# yum -y install mc > /dev/null 2>&1
# rpm -ql mc | grep bin
/usr/bin/mc
/usr/bin/mcedit
/usr/bin/mcmfmt
/usr/bin/mcview
:
:
- 가상터미널이 모여있는 디렉토리
!!! 사용자가 로그인을 하면 가상터미널이 하나씩 부여받는다. !!!
# ls /dev/pts -l
total 0
crw--w---- 1 root tty 136, 0 Apr 9 09:43 0
# ls /dev/pts -l (xshell로 로긴)
total 0
crw--w---- 1 root tty 136, 0 Apr 9 09:44 0
crw--w---- 1 root tty 136, 1 Apr 9 09:44 1
# ls /dev/pts -l (xshell로 하나 더 로긴)
total 0
crw--w---- 1 root tty 136, 0 Apr 9 09:44 0
crw--w---- 1 root tty 136, 1 Apr 9 09:44 1
crw--w---- 1 root tty 136, 2 Apr 9 09:44 2
- 가상콘솔의 권한으로 로그인여부 확인하기
!!! 리눅스는 기본적으로 6개의 가상콘솔을 제공한다. !!!
- 아무도 로그인하지 않았을때의 권한
# ls -l /dev/tty[1-6]
crw------- 1 root root 4, 1 Apr 9 09:50 /dev/tty1
crw------- 1 root root 4, 2 Apr 9 09:50 /dev/tty2
crw------- 1 root root 4, 3 Mar 31 09:08 /dev/tty3
crw------- 1 root root 4, 4 Mar 31 09:08 /dev/tty4
crw------- 1 root root 4, 5 Mar 31 09:08 /dev/tty5
crw------- 1 root root 4, 6 Mar 31 09:08 /dev/tty6
- 첫 번째 가상콘솔에 root 가 로그인했을때의 권한
# ls -l /dev/tty[1-6]
crw--w---- 1 root tty 4, 1 Apr 8 13:06 /dev/tty1
crw------- 1 root root 4, 2 Mar 31 09:08 /dev/tty2
crw------- 1 root root 4, 3 Mar 31 09:08 /dev/tty3
crw------- 1 root root 4, 4 Mar 31 09:08 /dev/tty4
crw------- 1 root root 4, 5 Mar 31 09:08 /dev/tty5
crw------- 1 root root 4, 6 Mar 31 09:08 /dev/tty6
- 첫 번째 가상콘솔에 root , 두 번째 가상콘솔에 testuser 가 로그인했을때의 권한
# ls -l /dev/tty[1-6]
crw--w---- 1 root tty 4, 1 Apr 9 09:49 /dev/tty1
crw--w---- 1 ksw tty 4, 2 Apr 9 09:50 /dev/tty2
crw------- 1 root root 4, 3 Mar 31 09:08 /dev/tty3
crw------- 1 root root 4, 4 Mar 31 09:08 /dev/tty4
crw------- 1 root root 4, 5 Mar 31 09:08 /dev/tty5
crw------- 1 root root 4, 6 Mar 31 09:08 /dev/tty6
# ls /dev/pts
0 1 2 3
# ls -ld /dev/pts
drwx--x--x 2 root root 0 Mar 31 09:06 /dev/pts/
# su - linux
$ ls -l /dev/pts
ls: /dev/pts: Permission denied
$ ls -l /dev/pts/0
crw--w---- 1 root tty 136, 0 Apr 9 10:11 /dev/pts/0
$ ls -l /dev/pts/1
crw--w---- 1 root tty 136, 1 Apr 9 09:44 /dev/pts/1
$ ls -l /dev/pts/2
crw--w---- 1 root tty 136, 2 Apr 9 09:47 /dev/pts/2
$ ls -l /dev/pts/3
crw--w---- 1 ksw tty 136, 3 Apr 9 09:46 /dev/pts/3
$ ls -l /dev/pts/4
ls: /dev/pts/4: No such file or directory
$ ls -l /dev/pts/5
ls: /dev/pts/5: No such file or directory
/etc/fstab : 부팅시 마운트되는 정보가 들어있다.
/etc/inittab : /sbin/init(PID 1)이 참고하는 설정파일
/tmp sticky bit 권한이 들어있다. rwxrwxrwt
/usr/local : 사용자가 직접 소스로 설치하면 이 디렉토리에 설치된다.
ext -> ext2 -> ext3 -> ext4
~~~~ ~~~~
4,5 CentOS 6
windows OS (일반유저)
dos -> windows 95 -> windows 98 -> windows me ->
windows xp -> windows vista -> windows 7 -> windows 8
windows server (서버)
windows NT -> windows 2000 -> windows 2003
->windows 2008 -> windows 2012
- 순서 -
1. HDD 추가 (파일로 생성)
2. 파티션분할 (fdisk)
3. 포맷 (파일시스템 생성, mkfs.ext2, mke2fs ...)
4. 디렉토리를 생성 (mkdir)
5. 디렉토리에 마운트 (mount)
6. 확인 (df, mount, cat /etc/mtab)
# dd if=/dev/zero of=ext2.dd bs=1024 count=100000
# dd if=/dev/zero of=ext3.dd bs=1024 count=100000
# dd if=/dev/zero of=fat32.dd bs=1024 count=100000
# mke2fs ext2.dd
# mke2fs -j ext3.dd
# mkfs.vfat fat32.dd
# mkdir A B C
# mount -o loop ext2.dd A
# mount -o loop ext3.dd B
# mount -o loop fat32.dd C
# df
# mount
# dd if=/dev/zero of=ext2-2.dd bs=1024 count=100000
# dd if=/dev/zero of=ext3-2.dd bs=1024 count=100000
# mkfs.ext2 ext2-2.dd
# yes | mkfs.ext3 ext3-2.dd
# mkdir D E; mount -o loop ext2-2.dd D \
> ; mount -o loop ext3-2.dd E
마운트 정보 : ext2-2.dd <-> D
마운트 정보 : ext3-2.dd <-> E
/etc/fstab
부팅시 자동으로 마운트하는 정보를 담고있는 파일
디 마파옵덤fs
디바이스명 마운트경로 파일시스템 옵션 덤프 파일시스템체크
- 시스템 재부팅
reboot
init 6
shutdown -r now
CTRL + ALT + DEL (콘솔에서 이용)
reset 버튼 누르기 X
magic sysrq 키를 이용 (구글에서 검색)
- 시스템 종료
halt
poweroff
init 0
shutdown -h now
전원버튼 누르기 X
======================================================
LAB> /etc/fstab 에 자동으로 마운트할 수 있게 설정하기
!!! mount -o remount,rw / !!!
마운트 정보 :
/root/filesystem/ext2.dd <-> /root/filesystem/A
/root/filesystem/ext2.dd ext3.dd <-> /root/filesystem/B
/root/filesystem/ext2.dd fat32.dd <-> /root/filesystem/C
/root/filesystem/ext2.dd ext2-2.dd <-> /root/filesystem/D
/root/filesystem/ext2.dd ext3-2.dd <-> /root/filesystem/E
-- 순서 --
1. /etc/fstab 에 마운트 정보를 넣는다.
2. 시스템 재부팅을 한다.
3. 자동마운트를 확인한다.
-- 순서 --
# vi /etc/fstab
-- /etc/fstab --
:
:
/root/filesystem/ext2.dd /root/filesystem/A ext2 defaults,loop 1 0
/root/filesystem/ext3.dd /root/filesystem/B ext3 defaults,loop 1 0
/root/filesystem/fat32.dd /root/filesystem/C vfat defaults,loop 1 0
/root/filesystem/ext2-2.dd /root/filesystem/D ext2 defaults,loop 1 0
/root/filesystem/ext3-2.dd /root/filesystem/E ext3 defaults,loop 1 0
-- /etc/fstab --
# reboot
부팅 후 ...
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7103744 3319688 3417376 50% /
tmpfs 127492 0 127492 0% /dev/shm
/root/filesystem/ext2.dd
96828 1550 90278 2% /root/filesystem/A
/root/filesystem/ext3.dd
96828 5664 86164 7% /root/filesystem/B
/root/filesystem/fat32.dd
99788 0 99788 0% /root/filesystem/C
/root/filesystem/ext2-2.dd
96828 1550 90278 2% /root/filesystem/D
/root/filesystem/ext3-2.dd
96828 5664 86164 7% /root/filesystem/E
# mount
/dev/sda1 on / type ext3 (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)
/root/filesystem/ext2.dd on /root/filesystem/A type ext2 (rw,loop=/dev/loop0)
/root/filesystem/ext3.dd on /root/filesystem/B type ext3 (rw,loop=/dev/loop1)
/root/filesystem/fat32.dd on /root/filesystem/C type vfat (rw,loop=/dev/loop2)
/root/filesystem/ext2-2.dd on /root/filesystem/D type ext2 (rw,loop=/dev/loop3)
/root/filesystem/ext3-2.dd on /root/filesystem/E type ext3 (rw,loop=/dev/loop4)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
======================================================
사용자가 rw 영역의 모든 공간을 파티션을 분할해서
그 장치에 대해서 noexec 을 해줘야 보안상 안전하다.
(설치시 귀찮아서 기본값으로 설치하는데 파티션을 나눠주자.)
1. 자신의 홈디렉토리 ( 파티션을 분할해서 아래와 같이 저장)
2. /var/tmp ( 파티션을 분할해서 아래와 같이 저장)
3. /tmp ( 파티션을 분할해서 아래와 같이 저장)
4. /dev/shm <-- umount /dev/shm
예)
LABEL=/ / ext3 defaults 1 1
LABEL=/home /home ext3 defaults,noexec 1 1
LABEL=/var /var ext3 defaults,noexec 1 1
LABEL=/tmp /tmp ext3 defaults,noexec 1 1
umount
!!! 주의사항은 umount 시 그 디렉토리에 들어가 있으면
!!! 안된다.
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7103744 3308556 3428508 50% /
/root/filesystem/ext2.dd
96828 1550 90278 2% /root/filesystem/A
/root/filesystem/ext3.dd
96828 5664 86164 7% /root/filesystem/B
/root/filesystem/fat32.dd
99788 0 99788 0% /root/filesystem/C
/root/filesystem/ext2-2.dd
96828 1550 90278 2% /root/filesystem/D
/root/filesystem/ext3-2.dd
96828 5664 86164 7% /root/filesystem/E
# umount /root/filesystem/ext2.dd
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7103744 3308556 3428508 50% /
/root/filesystem/ext3.dd
96828 5664 86164 7% /root/filesystem/B
/root/filesystem/fat32.dd
99788 0 99788 0% /root/filesystem/C
/root/filesystem/ext2-2.dd
96828 1550 90278 2% /root/filesystem/D
/root/filesystem/ext3-2.dd
96828 5664 86164 7% /root/filesystem/E
# umount /root/filesystem/B
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7103744 3308556 3428508 50% /
/root/filesystem/fat32.dd
99788 0 99788 0% /root/filesystem/C
/root/filesystem/ext2-2.dd
96828 1550 90278 2% /root/filesystem/D
/root/filesystem/ext3-2.dd
96828 5664 86164 7% /root/filesystem/E
# umount /root/filesystem/fat32.dd
# umount /root/filesystem/D
# umount /root/filesystem/ext3-2.dd
# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 7103744 3308556 3428508 50% /