'Study'에 해당되는 글 93건
- 2015.03.28 [27] auto mount, 응급복구, nfs(1)
- 2015.03.28 [26] vnc(2), vnc with ssh, ftp
- 2015.03.28 [25] vnc(1)
- 2015.03.28 [24] openSSH, system-config-firewall, scp, sftp
- 2015.03.28 [23] xinetd, telnet, krb5-telnet
- 2015.03.28 [22] SELinux(소개), NIC, route, netstat, arp, nslookup, dig
- 2015.03.28 [21] 이론 - ip, subnetmask, prefix
- 2015.03.28 [20] 분실된 root 비밀번호 재설정, grub 암호설정 ps, top, pstree, kill, who, write, wall, skill, inittab, uname, file
- 2015.03.28 [19] partition, mkfs, mount 실습
- 2015.03.28 [18] HDD & Partition, MBR, fdisk, mkfs, mount, umount
- 2014.12.12
1. auto mount
/etc/fstab : 중요파일, 백업 진행
# cp /etc/fstab /backup/
일반 mount 명령어는 다음과 같다.
# mount /dev/sda1 /mp
이 명령어를 분해해보면 /etc/fstab 안에 있는 내용도 쉽게 이해할 수 있다.
# vi /etc/fstab
13 UUID=8e73b72d-7801-4d6e-8050-3bd32ca6c0c6 /var ext4 defaults 1 2
14 UUID=1741a394-facf-4255-8708-a2b60775d79c swap swap defaults 0 0
UUID=8e73b72d-7801-4d6e-8050-3bd32ca6c0c6 : UUID=일련번호
/var : mount point
ext4 : 포맷형식
defaults : 옵션. p107 참조
0 : 가상메모리. 직접적으로 파일 만들 수 있는지 여부.
1 : 직접적으로 파일 만들 수 있다.
2 : 파일시스템 체크에 대한 여부. 부팅 할 순서라고 해도 된다.
0 : 가상메모리, 1 : 최상위, 2 : 나머지 디렉터리
[복구 실습]
# vi /etc/fstab
여기에 있는 UUID 로 시작하는 내용물 삭제 후 재부팅하면 부팅 안되고 오류 메세지를 출력한다.
Ctrl + Alt + Insert 누르고 VMware 로고 뜨자마자 F2를 눌러 CMOS 메뉴로 들어간다.
(Tip_CMOS 는 ROM에 있으며 메인보드에 ROM이 박혀있다.)
CMOS 메뉴 중 Boot로 이동.
CDROM에 놓고 +를 눌러서 CDROM 을 맨 위로 올린다.
Exit Saving Changes 로 저장 후 종료
CDROM 으로 부팅 되면 3번째인 Rescue installed system을 선택하여 진행한다.
언어 : English
키보드 : us
네트워크 : no
복구모두 시작 : continue
chroot /mnt/sysimage 명령어 기억하기
shell, fakd, reboot 중 shell 선택
그러면 bash 쉘로 쉘 입력 가능하다.
/etc/fstab 내용물 수정 위해 /etc/fstab 보자.
# vi /etc/fstab
하지만 이상하다. cd 부팅에 대한 정보인듯 하다.
아까 메모해둔 명령어를 쳐보자.
# chroot /mnt/sysimage
sh 쉘(복구 전용 쉘)로 변경되었다.
# cp /backup/fstab /etc
(혹은 /backup/fstab 에 있는 내용을 /etc/fstab 으로복사)
재부팅 하려고 하는데 재부팅에 관련된 명령어가 안된다. (sh 쉘은 복구 전용 쉘이기 때문)
다시 bash 쉘로 돌아가자.
# exit
[문제]
automount -> /etc/fstab
ex)
/dev/sda1 /mp ext4 defaults 1 2
- HDD(1G, IDE) : 100M, 200M, 200M, 300M, 200M
- mount point & users
100M : Clang & clang1, clang2
200M : Linux & linux1, linux2
200M : Ms & ms1, ms2
300M : Net & na, np
200M : Anon
각 파티션은 모두 auto mount 설정(반드시 재부팅할것)
모든 설정 완료 후 사용자 생성 후 정상 로그인 되는지 확인
VMware 전원 off한 상태에서 1G Hdd 추가한뒤 전원 on
# fdisk -l
# fdisk /dev/sda
primary partition으로 1~3번 만든 후 4번에는 Extended를, Logical partition을 5~6번에 생성한다.
Command (m for help): n
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): +100M
Command (m for help): n
p
Partition number (1-4): 2
First cylinder (14-130, default 14):
Using default value 14
Last cylinder, +cylinders or +size{K,M,G} (14-130, default 130): +200M
Command (m for help): n
p
Partition number (1-4): 3
First cylinder (39-130, default 39):
Using default value 39
Last cylinder, +cylinders or +size{K,M,G} (39-130, default 130): +200M
Command (m for help): n
e
Selected partition 4
First cylinder (64-130, default 64):
Using default value 64
Last cylinder, +cylinders or +size{K,M,G} (64-130, default 130):
Using default value 130
Command (m for help): n
First cylinder (65-130, default 65):
Using default value 65
Last cylinder, +cylinders or +size{K,M,G} (65-130, default 130): +300M
Command (m for help): n
First cylinder (104-130, default 104):
Using default value 104
Last cylinder, +cylinders or +size{K,M,G} (104-130, default 130):
Using default value 130
Command (m for help): p
Command (m for help): w
Mount point가 될 디렉터리 생성, 각각의 파티션 포맷.
# mkdir -p /Clang/home /Linux/home /Ms/home /Net/home /Anon
# mkfs.ext4 /dev/sda1
# mkfs.ext4 /dev/sda2
# mkfs.ext4 /dev/sda3
# mkfs.ext4 /dev/sda5
# mkfs.ext4 /dev/sda6
/etc/fstab 파일을 auto mount를 위해 추가한다.
# vi /etc/fstab
19 /dev/sda1 /Clang ext4 defaults 1 2
20 /dev/sda2 /Linux ext4 defaults 1 2
21 /dev/sda3 /Ms ext4 defaults 1 2
22 /dev/sda5 /Net ext4 defaults 1 2
23 /dev/sda6 /Anon ext4 defaults 1 2
(Tip - # blkid 명령어를 통해 UUID 명령어를 본 뒤 장치명에 UUID="장치의UUID" 를 넣어도 된다.)
# mount -a
# reboot
# useradd -d /Clang/home/clang1 clang1
# useradd -d /Clang/home/clang2 clang2
# useradd -d /Linux/home/linux1 linux1
# useradd -d /Linux/home/linux2 linux2
# useradd -d /Ms/home/ms1 ms1
# useradd -d /Ms/home/ms2 ms2
# useradd -d /Net/home/na na
# useradd -d /Net/home/np np
# passwd clang1
# passwd clang2
# passwd linux1
# passwd linux2
# passwd ms1
# passwd ms2
# passwd na
# passwd np
[Trouble Shooting]
/etc/fstab에 일련번호가 아닌 장치명으로 썼기 때문에 재부팅 시 부팅이 실패할 수도 있다.
복구모드에서 # chroot /mnt/sysimage 시 readonly로 뜰 때
bash쉘에서 /mnt/sysimage 를 언마운투 후 다시 마운트 하면 readonly가 풀린다.
# df -h
# umount /mnt/sysimage
# mount /dev/sdb7 /mnt/sysimage
다시 # chroot /mnt/sysimage 들어가서 복구 진행.
2. nfs
NFS : Network 를 통해 File System 빌려주는 것
File system(=partion)
runlevel 2 : multi user 지원하지만 nfs 지원 안하는 것.
썬 마이크로 시스템즈에서 파일시스템 공유와 서버 자원 공유를 위해 1980년대 후반에 NIS(Network Information Service)와 함께 개발되어졌다.
[장점]
분산되어 있는 데이터를 중앙 집중적으로 관리 가능 : 1개의 파일 서버에서 파일들을 관리할 수 있기 때문
투명성 확보 및 디스크 절약이 가능 : 관리자에 의해 파일이 관리되며, 공간을 쪼개어 사용하기 때문
자료의 일관성과 신뢰성 제공 : 모든 파일을 한 서버에서 관리하기 때문
[실습]
CD 안에 있는 nfs* PKG 설치
=> 실습 환경에는 설치 되어 있음.
CentOS6 오면서 portmap은 기본 설치 되어있음.
=> rpcbind 로 대체됨
구체적인 실습은 다음 시간에 진행.
'Study > CentOS' 카테고리의 다른 글
[29] autofs(2), su - 명령어 제한 (0) | 2015.04.04 |
---|---|
[28] nfs(2), nfs auto mount, autofs(1) (0) | 2015.04.04 |
[26] vnc(2), vnc with ssh, ftp (0) | 2015.03.28 |
[25] vnc(1) (0) | 2015.03.28 |
[24] openSSH, system-config-firewall, scp, sftp (0) | 2015.03.28 |
- 2014.12.11
1. vnc
[vnc 안될 때 대처 방법]
1) samadal(내가 사용하려는) 계정으로 로그인하여 vncpasswd 설정
2) /etc/sysconfig/vncserver 설정
18 # VNCSERVERS="2:myusername"
19 # VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"
20 VNCSERVERS="1:root 2:samadal"
21 VNCSERVERARGS[1]="-geometry 800x600"
22 VNCSERVERARGS[2]="-geometry 800x600"
3) /etc/rc.d/init.d/vncserver restart
그래도 안될 시 4) 후 다시 시도
4) # killall -9 Xvnc and # rm -rf /tmp/.X*(or # reboot)
[telnet, ssh, vnc 비교]
telnet ssh vnc
보안 취약 강함 취약
속도 빠름 빠름 느림
그래픽 X X O
환경 TUI CLI(=TUI) GUI
프로그램 os기본 Linux 기본 P/G 별도설치
2. vnc with ssh
(위 까지의 설정이 완료 됬다는 가정 하에 진행한다.)
위에서 설정한 vnc는 보안에 취약하다. 이 점을 극복하기 위해 ssh를 이용한 vnc를 설명하려고 한다.
아래 설명하는 방법은 ssh tunneling 이라는 기술이며 이 경우 말고도 ftp 등 다양한 방법으로도 사용될 수 있다.
A PC에서 B PC로의 원격 접속을 SSH로 연결할 때의 원리는 다음과 같다.
A와 B 사이의 SSH 통로
A PC 서비스 --------------------------------> B PC 서비스
1) A와 B 사이의 SSH 연결
Windows에서는 putty 등의 프로그램, Linux에서는 자체 ssh 명령어로 A와 B사이를 SSH로 연결해둔다.
이 때 주의할 것은 일반적인 연결이 아닌 옵션을 통한 연결을 해야한다는 것이다.
여기서 주는 옵션은 A PC의 특정 포트와 B PC의 특정 포트를 연결하는 것이다. 여기선 각각 (a포트, b포트라 하겠다.)
putty 혹은 자체 프로그램으로 이러한 옵션이 설정되있는 SSH를 실행하여 로그인 한다.
2) 프로그램 실행
A PC의 a포트와 B PC의 b 포트가 ssh로 연결되었다.
이제 A PC의 실행하려는 프로그램에서 목적지 주소를 localhost:a 로 주면 이미 만들어진 ssh 통로를 따라
데이터가 암호화 된 상태로 B PC의 b 포트에 도착, 암호화를 풀어 B PC에서 정상 작동하게 되는 것이다.
[in Windows]
대표적인 프로그램인 putty를 예로 들겠다.
Remote 될 PC의 연결 설정을 load 한다.
좌측 메뉴의
Connention - SSH - X11 - Enable X11 forwarding 체크
- Tunnels - Source port : localhost에 연결될 포트(a) 입력
- Destination : serverip:port
Session - Save
설정한 뒤 Open을 눌러 연결 해놓은 상태에서 vncviewer 프로그램 실행하여 serverip:포트(a) 를 입력하면 된다.
[in Linux]
# ssh -NfL 3020:localhost:5901 -N -f -l id 192.168.1.1
-Nf : SSH 연결 하지 않고 Background 에서만 연결 되어 있도록 설정. 원격 커맨드 명령을 진행하려면 # ssh id@ip 명령어 입력.
-L 3020:localhost : localhost 의 5901번 포트를 ssh로 열어두겠다는 뜻.
5901 : Remote 될 PC에서 사용중인 포트번호.
-l id : ssh 인증 위한 id
192.168.1.100(sshserver.mydomain.com) : Remote server ip
vncview program 실행하여 localhost:3020 으로 접속.
[trouble shooting]
1) -bash: ssh: command not found
openssh clients 설치가 안되서 그렇다. yum install -y openssh clients 진행.
3. ftp
ftp : File Transfer Protocol의 약자로 TCP/IP 환경에서의 파일 전송용 Application Protocal 이다.
[종류]
- 시스템에 등록되어 있는 사용자들을 위한 FTP Service
- 익명의 모든 사용자에게 개방하는 익명(Anomyous) FTP Service
[vsftpd 서버 설정]
아래 파일들이 핵심 파일들이다.
/etc/vsftpd/vsftpd.conf : vsftpd의 메인 환경 설정 파일
/usr/sbin/vsftpd : vsftpd의 실행파일
/etc/rc.d/init.d/vsftpd : vsftpd의 데몬파일
[/etc/vsftpd/vsftpd.conf]
vsftpd 설치가 우선이지만 내가 실습하는 환경에선 이미 설치되어있다.
실습 전에 백업하는 습관 갖기
# cp /etc/vsftpd/vsftpd.conf /backup/
* 익명연결
웹 브라우저에 ftp://자신의ip 혹은 alftp 로 익명연결하면 연결된다.
이 것은 아래에 것으로 설정 변경
12번줄 YES -> no
# vi /etc/vsftpd/vsftpd.conf
12 anonymous_enable=no
13 #
설정 변경 뒤에는 재시작 해야한다.
# /etc/rc.d/init.d/vsftpd restart
이젠 웹으로 시도 시 암호창을 띄우게 되고, alftp로는 접속이 안된다.
이젠 계정을 입력해서 접속하면 된다.
samadal 계정으로 접속 하면 업로드, 다운로드, 삭제 등이 가능하다.
* write 권한 no
ftp로 보는 것과 다운로드만 되고 쓰는 것(업로드 및 삭제, 수정)은 안되게 설정 변경
18번줄 YES -> no
# vi /etc/vsftpd/vsftpd.conf
18 write_enable=no
19 #
* 모든 유저 접속 막기
/etc/passwd 파일에 존재하는 사용자들의 접속을 막는 것 설정
15번줄 Yes -> no
# vi /etc/vsftpd/vsftpd.conf
15 local_enable=no
16 #
* 익명사용자 권한 부여
익명 접속자에게 업로드 및 디렉터리 생성을 가능하게 하는 설정 (삭제는 불가)
27, 31번줄 : 주석 해제
# vi /etc/vsftpd/vsftpd.conf
27 anon_upload_enable=YES
28 #
29 # Uncomment this if you want the anonymous FTP user to be able to create
30 # new directories.
31 anon_mkdir_write_enable=YES
하지만 역시나 실패. pub 디렉터리에 o+w 권한을 줘야할 것 같다.
아래처럼 권한을 줘가면서 테스트 해보자.
/var/ftp/ /var/ftp/pub/
755 755 - 접속 가능, 업로드 및 다운로드 불가
757 - 접속 가능, 업로드 및 다운로드 가능
757 755 - 접속 불가
757 - 접속 불가
익명의 ftp 서버에선 /var/ftp/ 가 최상위이다.
그런데 익명의 사용자에게 /vaf/ftp/ 에 7 권한을 준다는 것은 root 권한이나 마찬가지다.
그렇기 때문에 접속 자체를 막는 것이다.
일부 사용자의 경우 SELinux 때문에 실패 할 수도 있다. (나는 iptables 서비스를 꺼두었다. 미니멀에선 기본설정이다.)
그 때엔 아래 명령어로 해결 가능할 수도 있다.
# setsebool -P ftp_home_dir=1
# setsebool -P allow_ftpd_full_access on
# setsebool -P ftp_home_dir on
* umask
업로드 및 다운로드 시 파일에 대한 권한 설정 - umask
21 # if your users expect that (022 is used by most other ftpd's)
22 local_umask=022
23 #
* 접속 메세지
ftp 접속 시 메세지를 띄울 때 사용. 로그인하는 계정의 $HOME 에 .message 로 문서파일 만들면 됨
Alftp 의 경우 환경설정에서 알림창에 관한 설정 해줘야 함
35 dirmessage_enable=YES
36 #
* Active/Passive Mode 설정
ftp 서버는 별도의 데이터 전송 포트를 이용하는데 이 때 사용할 포트번호를 지정하는 옵션
42 connect_from_port_20=YES
43 #
Active : Client가 접속하고 싶은 포트로 접속
Passive : Server에서 지정해주는 포트로 접속하라고 알려줌
* log 기록 남기기(xferlog)
기본 저장 위치는 /var/log/xferlog 이고 저장되는 파일 명 변경 원할 때 설정
51 # WARNING - changing this filename affects /etc/logrotate.d/vsftpd.log
52 #xferlog_file=/var/log/xferlog
53 #
[log 기록 분석 실습]
(p287 ~ 288 참조)
dvd/Packages/mysql* -> ~samadal/ 로 복사
Alftp 로 d: 에다가 다운로드
~samadal 안에 있는 mysql* 삭제
다시 d:에 있는 mysql*을 ~samadal로 업로드
# vi /var/log/xferlog
Thu Dec 11 14:29:03 2014 1 192.168.1.1 9221512 /export/home/samadal/mysql-server-5.1.73-3.el6_5.i686.rpm b _ o r samadal ftp 0 * c
Thu Dec 11 14:29:03 : 접근시간
1 : 작업시간
192.168.1.1 : 접속 ip
9221512 : 용량
/export/ho~ : 파일명
b:바이너리파일
일반 문서파일: a(아스키)
o:outgoing(=downlod)
i: incoming(=upload)
r samadal : /etc/passwd 에 있는 samadal 로 접속
a ? : 익명연결
ftp : ftp로 접속
0 : 인증방식, None (1 = rfc931)
(rfc : 접속하는 방법들을 문서화, 931 : 일련번호)
c : complete(성공)
i : incomplete(실패)
* vsftpd 방식 log
기본(xferlog)방식 : upload & download 만보여짐
xferfog 표준 포맷은 사용자의 로그인, 디렉터리 생성 등의 로그를 남기지 않지만 vsftpd 로그 기록 방식은 이를 포함한 보다 상세한 로그를 남길 수 있다.
56 xferlog_std_format=YES
57 #
no 로 바꾸고 재시작, 업로드 및 다운로드 진행
# vi /var/log/vsftpd.log
Thu Dec 11 14:47:16 2014 [pid 7515] [samadal] OK DELETE: Client "192.168.1.1", "/export/home/samadal/mysql-server-5.1.73-3.el6_5.i686.rpm"
=> vsftp 방식으로 로그 기록 남김
* idle_session_timeout
사용자가 ftp 접속 후 일정 시간 동안 아무런 작업을 하지 않으면 자동으로 접속을 끊게 되는데 이때 설정하는 시간. 단위는 초
58 # You may change the default value for timing out an idle session.
59 #idle_session_timeout=600
* date_connection_timeout
ftp 서버로부터 데이터 전송이 끝난 후에 또 다른 데이터의 전송이 이루어지지 않을 경우의 종료 대기시간. 단위는 초
61 # You may change the default value for timing out a data connection.
62 #data_connection_timeout=120
* 최상위로의 폴더 탐색 금지, 접근한 곳 외에 대한 접근 금지
접속하면 최상위로 접근하여 어디든 갈 수 있다.
거기에 /etc/passwd 파일 등의 것을 다운로드 가능하다. - 보안상 취약
접근한 곳 외에 접근 금지하게끔 하는 것, vsftpd 서버 설정 중 가장 먼저 해야 할 것이다.
96번줄 : 주석 풀기
95 # users to NOT chroot().
96 #chroot_local_user=YES
97 #chroot_list_enable=YES
98 # (default follows)
99 #chroot_list_file=/etc/vsftpd/chroot_list
100 #
하지만 가끔은 필요한 계정도 필요할것.
97과 99가 한 쌍으로 움직여 해당 기능 실행한다.
[실습]
위 설정 파일에서 97, 99번줄 주석 해제
user1 계정 생성
아직 데몬 재시작 안했다. alftp 통해 user1 으로 접속해보자
하지만 접속이 안되는데, 그 이유를 보니 chroot_list 를 읽을수 없다고 뜬다.
# cat > /etc/vsftpd/chroot_list
samadal
으로 samadal 을 해당 리스트에 올리니 samadal 로 접속 시 최상위까지 다 보인다.
user1으로 해보니 역시 자기 홈 디렉터리뿐이 보이지 않는다.
* ftp를 xinetd(슈퍼 데몬) 관리 하에 두기
110번 줄을 no 로 바꾸면 xinetd 를 거쳐 접속하게 된다.
110 listen=YES
111 #
* 접근 금지 host 목록
# vi /etc/hosts.deny
데몬명:ip:allow(혹은 deny)
ex)
vsftpd:192.168.1.*:deny
all:all:deny <- 모든 프로그램에 대하여 거절, putty도 사용 불가
# vi /etc/hosts.allow 가 존재하며, 접근 허용하는 목록도 작성 가능하다.
기본적으로 막는 것이 우선 이지만 같은 ip를 allow나 deny 2군데 모두 쓰면 allow가 되어버린다. 그러니 deny 만 건드리는 것이 좋다.
[문제]
기본으로는 root의 ftp 접속이 막혀있다.
교재 참조하여 root의 ftp 접속을 허용해보자.
# vi /etc/vsftpd/user_list
# vi /etc/vsftpd/ftpusers
에서 root 앞에 주석 붙이면 된다.
거기에 root이니 모든 디렉터리 접근 가능하게 설정하자.
# vi /etc/vsftpd/chroot_list
루트가 구지 ftp 서버를 이용할 필요는 없으니 실습 후에는 루트에게 허락한 권한 모두 수거.
[vsftpd 추가 옵션]
* 익명 사용자 최대 전송 속도 제한
익명 계정 접근 시 다운로드할 수 있는 최대 전송속도. 0은 제한 없음이며 단위는 bps
anon_max_rate=0
* 로컬 사용자 최대 전송 속도 제한
로컬 계정 접근 시 다운로드할 수 있는 최대 전송속도. 0은 제한 없음이며 단위는 bps
local_max_rate=0
* 최대 접속자수 제한
최대 접속자수 지정 옵션, 접속할 수 있는 최대 client 수 제한
max_clicnets=0
* 접속 최대 횟수 제한
client 호스트당 접속할 수 있는 최대 회수 제한
max_per_ip=0
* 익명 사용자가 사용할 홈 디렉터리 지정
anon_root=/var/ftp
'Study > CentOS' 카테고리의 다른 글
[28] nfs(2), nfs auto mount, autofs(1) (0) | 2015.04.04 |
---|---|
[27] auto mount, 응급복구, nfs(1) (0) | 2015.03.28 |
[25] vnc(1) (0) | 2015.03.28 |
[24] openSSH, system-config-firewall, scp, sftp (0) | 2015.03.28 |
[23] xinetd, telnet, krb5-telnet (0) | 2015.03.28 |
2014.12.10
[복습1]
수엽용 VMware 압축 새로 1개 더 풀기
기존 서버
/tmp/testfile
root 권한 막혀있음
samadal 계정
새 서버
/test/ssh /test/scp /test/sftp
root 권한 막기
samadal 계정 삭제
test 계정 생성
새 서버에 기존 서버의 testfile 을 각각 디렉터리에 넣기.
*
single 모드로 루트 진입
inittab 으로 GUI 진입, ip설정
samadal 삭제, test 생성
root가 ssh 접근 못하도록 생성
putty 통해 test로 접속
su - 통해 root 로 로그인하여 /test/ssh /test/scp /test/sftp 생성
권한문제 해결 위해 # chmod -R o+r /test/
[ Client 가 받아오기 ]
1) ssh
[test@samadal ~]$ ssh samadal@192.168.1.135
[samadal@samadal ~]$ scp /tmp/testfile test@192.168.1.136:/test/ssh
[samadal@samadal ~]$ logout
2) scp
[test@samadal ~]$ scp samadal@192.168.1.135:/tmp/testfile /test/scp/
3) sftp
[test@samadal ~]$ cd /test/sftp
[test@samadal sftp]$ sftp samadal@192.168.1.135
sftp> cd /tmp
sftp> get testfile
(= sftp> get testfile /test/sftp) - 윈도우는 수신측 경로 지정이 안되지만 여긴 된다.
=> Server 에서 주는 것도 비슷.
[복습2]
ssh 관련 모든 설정 초기화
samadal 관련 모든 정보 삭제 후 아래와 같이 samadal 계정 생성
-작업-
$HOME : /export/home
shell : ksh
skel : /skelsam
uid : 1200
gid : samg(1200)
comment : tiger
auto creating directory : public_html
auto creating file : jal_jom_haeyo
위와 같이 설정한 후 samadal 계정이 정상 로그인 되는지 확인
# vi /etc/ssh/sshd_conf
Root 로그인 관련 사항 주석처리
배너 사항 주석 처리 (<= /backup/ 에 백업해 둔것을 복사해도 됨)
새로운 putty 창으로 root로 로그인
samadal 계정 삭제
# userdel -r samadal
새로운 skelsam 디렉터리 생성, 복사, 추가 파일 생성
# mkdir /skelsam
# cp /etc/skel/.* /skelsam
# cp -r /etc/skel/.gnome2 /etc/skel/.mozilla /skelsam
# mkdir /skelsam/public_html
# touch /skelsam/jal_jom_haeyo
samadal home 디렉터리 생성 및 samq 그룹을 1200 GID 로 생성
# mkdir -p /export/home
# groupadd -g 1200 samg
대망의 useradd
# useradd -d /export/home/samadal -s bin/ksh -m -k /skelsam -u 1200 -g samg -c tiger samadal
# passwd samadal
1. vnc
vnc : Virtual Network Computing 의 약자로서 리모트에 있는 시스템에 원격으로 접속하여 관리할 수 있는 프로그램
원래 AT&T의 프로젝트였지만 지금은 http://www.realvnc.co 에서 개발이 진행되고 있음
오픈 소스인 VNC는 윈도우 기반의 터미널 서비스와 유사한 기능을 가진 프로그램이지만 플랫폼을 가리지 않는다는 특징이 있다.
1) vnc 특징 및 장점
설치가 간편하며 특별한 설정 없이 이용 가능
원격 접속이 아닌 내 앞에 시스템이 있는 것과 같은 해상도 제공
대부분의 운영체제에서 사용이 가능
2) vnc 설치
dvd 마운트
# rpm -ivh tigervnc-1.1.0-16.el6.i686.rpm
클라이언트용
# rpm -ivh tigervnc-server-1.1.0-16.el6.i686.rpm
서버용
3) vcn 설정
# vncserver
최초 실행 시 패스워드 설정
vncserver 실행 때마다 섹션번호가 1개씩 늘어난다.
# ll /root/.vnc/
합계 16
-rw------- 1 root root 8 2014-12-10 21:02 passwd
-rw-r--r-- 1 root root 2776 2014-12-10 21:03 samadal.madalgyo:1.log
---- ---
섹션번호 로그기록
-rw-r--r-- 1 root root 6 2014-12-10 21:03 samadal.madalgyo:1.pid
---
실행되는 프로그램의 PID 정보
-rwxr-xr-x 1 root root 654 2014-12-10 21:03 xstartup
=> 환경설정 실행 파일
# vncpasswd
패스워드 분실 시 사용
원격접속 - GUI 환경에서..
# vncviewer 192.168.1.142:2
=> 접속하려는ip:최근의 섹션번호
[문제]
윈도우에서 VNC-Viewer 으로 접속하려 했으나 실패, 그 원인 해결하시오
접속할 섹션번호가 사용할 프로그램의 PID를 안 후 그에 해당하는 포트를 열어줘야 한다.
# cat /root/.vnc/*.pid 에서 접속할 섹션번호의 PID 확인
# netstal -lntup | grep vnc
위 명령어로 vnc 에서 사용하는 프로그램의 포트 확인 후
# system-config-firewall
여기 접속하여 해당 포트들을 열어주면 된다. 5900번대와 6000번대, 2개가 발견 되지만 지금은 일단 5900번대만 열어도 된다.
하지만 깜빡거리면서 안된다..?
일단 Xvnc 관련 것 죽이고 디렉터리 재생성 위해 지운다.
# killall -9 Xvnc
# rm -rf /root/.vnc/
vncserver의 설정파일을 연 뒤 18, 19를 복사해서 아래처럼 해본다.
# vi /etc/sysconfig/vncservers
18 # VNCSERVERS="2:myusername"
19 # VNCSERVERARGS[2]="-geometry 800x600 -nolisten tcp -localhost"
20
21 VNCSERVERS="1:root"
22 VNCSERVERARGS[1]="-geometry 800x600"
# /etc/rc.d/init.d/vncserver restart
실패한다면 아래 명령어 통해 패스워드 설정.
# vncpasswd
# rm -rf /tmp/.X*
통해서 해결되기도 함. 해결 완료 후에는 항상 리스타트(# /etc/rc.d/init.d/vncserver restart) 해야함
자세한 기타 설정은 다음 시간에 계속.
'Study > CentOS' 카테고리의 다른 글
[27] auto mount, 응급복구, nfs(1) (0) | 2015.03.28 |
---|---|
[26] vnc(2), vnc with ssh, ftp (0) | 2015.03.28 |
[24] openSSH, system-config-firewall, scp, sftp (0) | 2015.03.28 |
[23] xinetd, telnet, krb5-telnet (0) | 2015.03.28 |
[22] SELinux(소개), NIC, route, netstat, arp, nslookup, dig (0) | 2015.03.28 |
- 2014.12.09
1. openSSH
시스템을 침입하거나 네트워크를 통해 전송되는 패킷을 가로채는(Sniffing) 기술은 날로 증가하고 있으며 그 발전속도 또한 매우 빠르다.
리모트 시스템에 접속 시 편리함을 이유로 rlogin, rsh, telnet과 같은 프로그램을 많이 이용한다. 하지만 이러한 프로그램들은 데이터 전송시 평문으로 데이터들이 전송된다는 큰 단점이 있다. 이러한 문제점을 보완하기 위한 서비스가 SSH(Secrue Shell)이다.
1) SSH (Secure Shell)
SSH 서비스는 패킷이 암호화 되어 전송되기 때문에 Telnet과 같은 비 암호화 프로그램들을 대체하여 사용할 수 있으며, 또 패킷을 암호화시켜 전송하기 때문에 제 3자에 의해서 패킷이 도청(Sniffing)된다고 하더라도 암호화된 패킷을 해독할 수 있는 해독키가 없으므로 내용을 파악 하는 것은 매우 어렵다.
[실습]
DVD1 마운트 하여 openssh* PKG 설치
-> 설치되어 있음, CentOS 는 기본적으로 SSH 를 사용한다.
ssh 설정 파일 백업 후 진행
# cp /etc/ssh/sshd_config /backup/
# vi /etc/ssh/sshd_config
12
13 #Port 22
14 #AddressFamily any
15 #ListenAddress 0.0.0.0
13번 주석 삭제 후 포트 번호 바꾸면 SSH 접속 포트 변경 가능.
# /etc/rc.d/init.d/sshd restart
sshd 를 정지 중: [ OK ]
sshd (을)를 시작 중: [ OK ]
# netstat -lntup | grep sshd
tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 2739/sshd
tcp 0 0 :::2222 :::* LISTEN 2739/sshd
2222번으로 바뀐것 확인. 하지만 푸티로 다시 접속이 되지 않는다. 바로 방화벽에서 막고 있기 때문.
네트워크 신호는 아래의 단계를 거쳐(아래에서 위로) 접속된다.
우리는 port 까진 설정 했지만 방화벽은 아직 열지 않은 것이다.
OS(방화벽)
port
IP
MAC
전기
# system-config-firewall
사용자 설정 - 다음 - 다음 - eth0 꺼주고 다시 이전으로 들어와
2222 포트, tcp 프로토콜 추가 한 뒤 종료한다.
# vi /etc/ssh/sshd_config
13 Port 2222
14 #AddressFamily any
15 #ListenAddress 0.0.0.0
16 ListenAddress 192.168.1.134
17 #ListenAddress ::
15번 줄을 16번 줄에 백업 시킨 후 현재 서버의 ip를 입력한다.
그리고 CentOS의 ip를 변경 후 변경된 ip로 putty를 접속하면 실패한다.
ListenAddress 는 접속하는 클라이언트의 ip 가 아니라 서버의 ip 이다.
시스템에 여러 ip가 존재 할 경우 서비스할 특정 ip를 지정하는 기능이다.
21 # activation of protocol 1
22 Protocol 2
22번 줄의 SSH 서비스 시 이용할 버전을 선택하는 것으로 보안상의 이유로 Protocol2 을 사용한다.
30 # Lifetime and size of ephemeral version 1 server key
31 #KeyRegenerationInterval 1h
32 #ServerKeyBits 1024
31번 줄 : 자동으로 생성된 키의 유효시간 지정
32번 줄 : 서버의 암호키 생성시 사용하는 bit 수 지정, 최소값은 512.
42 #LoginGraceTime 2m
43 #PermitRootLogin yes
44 PermitRootLogin no
45 #StrictModes yes
42번 줄 : 로그인 안하고 대기중인 시간
43번 줄 : (44번으로 백업 해놓음) 루트 권한 접속 금지
=> 루트의 다이렉트 접속 금지, 서버 구축 시 2번째로 해야 할 보안 사항. (1번째는 grub 암호 설정)
이렇게 되면 일반 사용자로 로그인, su - 로 관리자 권한 얻어야 한다.
45 #StrictModes yes
46 #MaxAuthTries 6
47 #MaxSessions 10
46번 줄 : 시도 6번
130 # no default banner path
131 #Banner none
132
131번 줄 : 배너 설정. ex) /ban/a 처럼 디렉터리 형식으로 문서 파일을 지정한다.
[ssh 접속 방법]
1) ssh servier_ip
접속 되어 있는 계정으로 접속
2) ssh -l 계정명 server_ip
3) 과 같음
3) ssh 계정명@server_ip
기본적으로 Windows 에서는 기본적으로 SSH를 제공하지 않는다.
따라서 무료인 PuTTY 나 유료인 SecureCRT 를 많이 쓴다.
2. scp
scp(Secure Copy) : 원격지의 데이터 복사하기
scp [-op] [s] [s] ... [t]
ex) p155
host:10, /tmp/A
host:20, /test/B
1) # scp 192.168.1.10:/tmp/A /test/
=> # scp samadal@192.168.1.10:/tmp/A /test/
2) # scp /tmp/A 192.168.1.20:/test/
=> # scp /tmp/A samadal@192.168.1.20:/test/
1) 의 경우는 root(나)가 samadal 계정으로 접속하여 복사해오는 것. 성공
=> download의 개념
# scp samadal@192.168.1.10:/tmp/A /test/
rwx------ rwxrwxrwt rwxr-xr-x
1 2 43
2) 의 경우는 samadal 정으로 로그인된 것으로 /test/ 에다 /tmp/A 를 복사하는 것.
이 경우에는 이미 /test/A 가 있기 때문에 덮어쓸 때에 /test/A 파일을 덮어 쓸 권한이 없어 실패.
하지만 chmod 646 /test/A 처리를 한 뒤면 samadal 계정도 해당 파일에 대한 w 권한이 있기 때문에 성공한다.
만약 /test/A 파일이 존재하지 않았다면 /test/ 디렉터리에 o+w 권한이 필요.
=> upload의 개념
# scp /tmp/A samadal@192.168.1.20:/test/
rwxrwxrwt rwx------ rwxr-xr-x
1 2 43
3. sftp
sftp : Secure FTP
일반적인 FTP 서비스는 암호화된 통신을 하지 않으므로 서비스 이용 시 안정성을 보장 받지 못한다.
sftp 서비스는 SSH 서비스와 함께 동작하는 서비스로, 데이터 전송 시 암호화된 데이터로 안정성을 보장받을 수 있다.
[명령어]
1) sftp server_ip : 현재 자신의 계정으로 접속
2) sftp 계정명@servier_ip
[사용법]
1) 작업하려는 디렉터리로 이동
2) put, get 으로 업로드 및 다운로드 진행
3) 종료는 quit, exit, Ctrl+Z 등 다양한 방법으로 가능
[문제]
(host:10)
/tmp/testfile 을 아래 3개의 디렉터리명의 방법으로 각각 복사.
(host:20)
1) /test/ssh/
2) /test/sftp/
3) /test/scp/
# chmod -R o+w /test/
1)
# ssh samadal@192.168.1.134
[samadal@samadal ~]$ scp samadal@192.168.1.134:/tmp/testfile /test/ssh/
2)
# cd /tmp/
# sftp samadal@192.168.1.134
sftp> cd /test/sftp
sftp> put testfile
3)
# scp /tmp/testfile samadal@192.168.1.134:/test/scp
'Study > CentOS' 카테고리의 다른 글
[26] vnc(2), vnc with ssh, ftp (0) | 2015.03.28 |
---|---|
[25] vnc(1) (0) | 2015.03.28 |
[23] xinetd, telnet, krb5-telnet (0) | 2015.03.28 |
[22] SELinux(소개), NIC, route, netstat, arp, nslookup, dig (0) | 2015.03.28 |
[21] 이론 - ip, subnetmask, prefix (0) | 2015.03.28 |
- 2014.12.08
1. xinetd
inet 서비스 데몬은 네트워크 슈퍼 데몬이라고 부른다. 이 방식은 inet 서버가 네트워크 관련 작업을 대리하도록 한다.
즉 네트워크 접속이 정상적으로 이루어진 뒤에는, 실제 서비스를 하는 프로그램에게 넘겨준다.
ex) 놀이공원 관객 수를 조절하는 매표소 역할
1) 장점
개발자의 경우 inet 규격에 맞게만 프로그래밍을 하면 socket 네트워크에 관련된 부분은 만들지 않아도 된다.
일반 사용자의 경우 관리하기 편하고 서비스를 사용하지 않을 때는 자원을 아낄 수 있다.
2) 단점
inet 서비스가 특정 서버 프로그램 대신 네트워크 접속을 만들고 나중에 프로그램을 실행시켜주기 때문에 약간의 시간차가 발생할 수 있다.
* inet은 취약점이 많아 현재 사용되지 않고 있으며 이 후 확장된 버전인 xinetd를 사용한다.
3) 서비스 설정
# service [데몬명] start/stop/restart
=> Linux 전용 명령어
# /etc/rc.d/init.d/데몬명 start/stop/restart
= Linux, Unix, Solaris 호환 명령어
* 데몬
원본 서비스를 구동시키기 위해 중간에서 활동하는 역할
2. telnet
[실습]
dvd1 vmware 넣고 dvd1을 마운트 한다.
Packages 에서 telnet* PKG 설치
# mkdir /dvd1/
# mount /dev/sr0 /dvd1
mount: block device /dev/sr0 is write-protected, mounting read-only
# cd /dvd1/Packages/
# ll |grep telnet
-r--r--r-- 2 root root 58120 2014-07-10 17:29 telnet-0.17-48.el6.i686.rpm
-r--r--r-- 2 root root 37384 2014-07-10 17:29 telnet-server-0.17-48.el6.i686.rpm
# rpm -ivh xinetd-2.3.14-39.el6_4.i686.rpm
# rpm -ivh telnet-0.17-48.el6.i686.rpm
# rpm -ivh telnet-server-0.17-48.el6.i686.rpm
설치 완료된 것 확인
# rpm -qa |grep telnet
telnet-server-0.17-48.el6.i686
telnet-0.17-48.el6.i686
텔넷 접속 위해 콘솔창 cmd 에서 telnet [linux_ip] 로 접속하려 했으나 23번 포트 거부당함
리눅스 안에 23번 포트 되는지 알아보려 했으나
# netstat -lntup | grep 23
#
아무것도 없다.
슈퍼데몬인 xinetd 서비스 시작 하자.
# /etc/rc.d/init.d/xinetd start
xinetd (을)를 시작 중: [ OK ]
새로 시작했지만 cmd 콘솔창에서의 접속 실패.
# netstat -lntup | grep xinetd
#
확인 해보니 여전히 xinetd 이 구동중이 아니다.
환경 설정 확인해보자.
보통 관리자용 명령어 및 중요 파일은 /etc/ 에 있으니 확인해보자.
# ll /etc/xinetd.d
합계 52
-rw------- 1 root root 1157 2013-10-08 02:34 chargen-dgram
-rw------- 1 root root 1159 2013-10-08 02:34 chargen-stream
-rw------- 1 root root 1157 2013-10-08 02:34 daytime-dgram
-rw------- 1 root root 1159 2013-10-08 02:34 daytime-stream
-rw------- 1 root root 1157 2013-10-08 02:34 discard-dgram
-rw------- 1 root root 1159 2013-10-08 02:34 discard-stream
-rw------- 1 root root 1148 2013-10-08 02:34 echo-dgram
-rw------- 1 root root 1150 2013-10-08 02:34 echo-stream
-rw-r--r--. 1 root root 332 2014-03-28 19:54 rsync
-rw------- 1 root root 1212 2013-10-08 02:34 tcpmux-server
-rw-r--r-- 1 root root 305 2014-05-05 20:22 telnet
-rw------- 1 root root 1149 2013-10-08 02:34 time-dgram
-rw------- 1 root root 1150 2013-10-08 02:34 time-stream
텔넷 관련 문서 있다. 확인해보자.
# vi /etc/xinetd.d/telnet
flags : 소켓이 작동될 때 사용하는 정보
= REUSE : 패킷 정보를 재사용하지 않도록 설정
(프로그램 종료 후 다시 실행 시 로그인 안됨)
socket_type : telnet 서비스의 소켓 적용 정보
= stream : tcp 소켓을 사용 (기본값)
= dgram : udp 소켓을 사용
wait : 대기 시간을 제공할 것인지의 여부
= no : 접속 시 프로세스를 추가하여 제공 (기본값)
(여러명 접속 가능)
= yes : 1개의 프로세스만 제공하여 1개만 연결 가능
(한버에 1명만 접속)
user = root : 서비스를 시작하는 권한자 (기본값)
server = /usr/sbin/in.telnetd : 서비스를 처리할 프로그램의 위치
(실행파일 명)
log_on_failure += USERID
: 로그인 실패에 대한 기록에서 USERID 부분을 추가로 기록
disable = yes : 서비스를 제공하지 않을 것인지 여부 (기본값)
= no : 서비스 사용 할 것이다.
마지막 disable 가 yes로 되어 있어서 접속이 안되었다. no 로 변경
# /etc/rc.d/init.d/xinetd restart
xinetd 를 정지 중: [ OK ]
xinetd (을)를 시작 중: [ OK ]
# netstat -lntup | grep xinetd
tcp 0 0 :::23 :::* LISTEN 30284/xinetd
작동 되는 것 확인 후 텔넷 접속 했지만 root 로는 접속 실패. samadal 로는 접속 성공
=> 보안이 약하기 때문에 root 접속 막았다고 한다.
하지만 텔넷은 패킷 탈취가 쉽기 때문에 사용하지 않는 것이 좋다.
실제 패킷 모니터링 프로그램인 WireShark 를 통해 보면 id 및 pw 전송이 그대로 노출되는 것 확인 가능하다.
이에 리눅스에서 자체적으로 보안을 강화시킨 krb5-telnet 이 있다.
물론 이 역시 보안이 많이 취약하여 사용하지 않길 권하지만 이와 연동되는 프로그램이 많아 한번 설치 해보려 한다.
[실습]
기존에 설치한 telnet* PKG 삭제 후 krb5* PKG 설치
# rpm -e telnet
# rpm -ed telnet-server
경고: /etc/xinetd.d/telnet(이)가 /etc/xinetd.d/telnet.rpmsave(으)로 저장되었습니다
=> 변경 된 환경설정이 있다면 자동으로 백업한다. 필요 없다면 삭제 해도 무방.
역시나 환경설정 들어가서 disable 항목을 변경해줘야 한다.
# vi /etc/xinetd.d/krb5-telnet
재시작 하여 텔넷 접속
# /etc/rc.d/init.d/xinetd restart
xinetd 를 정지 중: [ OK ]
xinetd (을)를 시작 중: [ OK ]
이제 cmd 콘솔 창에 들어가서 텔넷 들어가면 된다.
* Tip
일반 사용자로 접속 후 관리자 권한 얻기 위해선 su - 를 입력하여 접속한다.
su 로도 접속 가능하긴 하지만 최초 텔넷 로그인한 계정의 정보를 갖고 root로의 계정 전환으로 진행되기 때문에 정상 작동이 되지 않는다.
[문제]
p147, 148, 149 표 공부 후 다음 조건을 만족하도록 telnet server 구성
- 접근 허용할 주소 : 192.168.x.x
- 접근을 허용할 시간 - AM 09 ~ PM 10
- 총 접속 허용 수 : 100개
- Dos 공격에 대비하여 1초에 2회 이상의 접속 발생 시 60초 동안 새로운 접속 차단
- 접근 허용하지 않을 주소 : 192.168.1.10
# vi /etc/xinetd.conf
25 # max_load = 0
26 cps = 2 60 // 변경
27 instances = 100 // 변경
28 per_source = 10
=> /etc/xinetd.d/krb5-telnet 에 해당 사항을 추가 기재해도 된다.
=> xinetd.conf 를 변경시키면 xinetd와 관련된 모든 프로그램에 적용됨
# vi /etc/xinetd.d/krb5-telnet
11 log_on_failure += USERID
12 disable = no
13 only_from = 192.168.0.0/16 // 추가
# 192.168.1.0/24 (네트워크 구간)
# 192.168.1.10/255.255.255.0 (호스트구간)
# 네트워크 구간, 호스트 구간에 따라 netmask 표시 방법이 다름.
14 no_access = 192.168.1.10/255.255.255.0 // 추가
15 access_times = 9:00-22:00 // 추가
16 }
# /etc/rc.d/init.d/xinetd restart
* xinet.conf 설정
# vi /etc/xinet.conf
log_type = SYSLOG daemon info
: syslog 데몬에 의해서 /var/log 디렉터리에 로그를 기록
log_on_failure : login 실패 시 로그에 기록할 정보
= HOST
log_on_success = PID : processID HOST : 호스트정보(Domain or IP)
DURATION : 접속유지시간 EXIT : 접속 종료 시간
cps : 접속 횟수의 속도 제한
= 50 : 초당 연결 제한 수
10 : 서비스 이용제한이 걸린 뒤 재시작까지의 인터벌 (단위:초)
instances = 100 : 최대 서비스 갯수 설정(UNLIMITED : 무제한)
per_source = 10
: ip별 가질 수 있는 최고 프로세스 제한수 (UNLIMITED : 무제한)
includedir /etc/xinetd.d : xinetd 로 동작되는 서비스들이 정의된 경로
'Study > CentOS' 카테고리의 다른 글
[25] vnc(1) (0) | 2015.03.28 |
---|---|
[24] openSSH, system-config-firewall, scp, sftp (0) | 2015.03.28 |
[22] SELinux(소개), NIC, route, netstat, arp, nslookup, dig (0) | 2015.03.28 |
[21] 이론 - ip, subnetmask, prefix (0) | 2015.03.28 |
[20] 분실된 root 비밀번호 재설정, grub 암호설정 ps, top, pstree, kill, who, write, wall, skill, inittab, uname, file (0) | 2015.03.28 |
- 2014.12.05
1. SELinux
과거엔 리눅스는 소스코드가 공개되어 보안에 취약하다는 인식이 있었지만
SELinux라는 새로운 보안 모델이 나오면서 보안이 많이 향상되었다.
단, 보안과 편의성은 반비례 한다는 사실을 알아야 한다.
1) 설정 변경 문서
# vi /etc/sysconfig/selinux
disabled 등으로 변경 시 리부팅 해야 적용됨
2. NIC
NIC = Network Interface Card
NIC 설정 문서 파일
# vi /etc/sysconfig/network-scripts/ifcfg-장치명
장치 활성화 및 비활성화
# ifconfig eth2 up
# ifconfig eth2 down
IP주소 변경
# ifconfig eth2 192.168.1.144
IP, B/d, Subnetmask 변경
# ifconfig eth2 10.10.10.10 netmask 255.255.255.0 broadcast 10.10.10.255
장치 down 후 up 하면 원상복귀 된다.
즉, 일시적인 변경을 위한 명령어이다.
영구 변경 되는 네트워크 설정 위한 쉬운 명령어가 있다. (minimal엔 없음)
# system-config-network
# setup
(setup 의 경우 전반적인 셋팅 가능)
3. route
ex)
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 1 0 0 eth2
default 192.168.1.2 0.0.0.0 UG 0 0 0 eth2
Destination : 목적지 주소를 가르킴
Gateway : 외부로 패킷을 포워딩 하기 위한 장치의 IP Address
Genmask : 라우팅 항목의 넷마스크
Flags : U - 인터페이스가 Up인 상태
H - 라우팅 경로를 통해 호스트로의 연결
G - 게이트웨이의 라우트
D - 라우트가 재지정되어 동적으로 생성
M - 라우팅 경로가 ICMP 리다이렉트 메시지를 통해 수정되었을 경우
Metric : 다음 라우트와의 거리
Ref : 라우터에 대한 참조수
Use : 라우트를 찾아본 횟수
Iface : 목적지로 패킷을 보낼 때 사용할 장치
명령어 설명
# route add [ -net | -host ] target [netmask <nm>] [gw <nm>] dev <i/f>
# route del [ -net | -host ] target [netmask <nm>] [gw <nm>] dev <i/f>
게이트웨이 설정
# route add default gw <gw> dev <i/f>
# route del default gw <gw> dev <i/f>
[실습]
1번대 컴퓨터인 나에게 10번대 컴퓨터인 친구가 들어온다고 한다.
나가는, 들어오는 문 지정을 해줘야 한다.
# route add -net 192.168.10.0 netmask 255.255.255.0 dev eth2
=> 친구 ip를 정확히 모르기 때문에 네트워크 아이디를 전체(192.168.10.0)을 넣어준다.
(게이트웨이는 다른 명령어를 통해 설정할 것)
하지만 들어온 친구가 다시 나갈 순 없다. 나가는 문도 만들어주자.
# route add default gw 192.168.10.2 dev eth2
Metric 값(나로부터 떨어진 거리)도 수동으로 설정 해줘야 한다.
# route add default gw 192.168.10.2 dev eth2 metric 2
=> 기존 것에 추가 되는 것이 아닌 새로 추가가 됨. 지정할 땐 한번에 명령어 내리는 것 필요
# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 * 255.255.255.0 U 1 0 0 eth2
192.168.10.0 * 255.255.255.0 U 0 0 0 eth2
default 192.168.10.2 0.0.0.0 UG 0 0 0 eth2
default 192.168.1.2 0.0.0.0 UG 0 0 0 eth2
default 192.168.10.2 0.0.0.0 UG 2 0 0 eth2
# route del default gw 192.168.10.2 dev eth2
=> 가장 가까운 metric 값인 0 부터 지운다.
지정한 10번대 지우기
# route del -net 192.168.10.0 (metric 2 dev eth2)
# route del -net 192.168.10.0 netmask 255.255.255.0 (dev eth2)
4. netstat
네트워크 관련 정보를 보는데 일반적으로 사용하는 범용 유틸리티. 옵션 없이 netstat만 사용할 경우, 현재 열려 있는 모든 소켓의 연결 상태를 보여준다.
# netstat -nA inet 항목 설명
Proto : 사용 중인 프로토콜
udp : 전송 속도는 빠르나 오류 검출 없다. 한번 보내면 장땡일 때 주로 사용 ex)radio, tv 등
tcp : 오류 검출
3 hand shake (C -> S) // 가져갈게요. 응 가져가. (확인 후)가져갔어요 다음것 주세요.
Recv-Q : 수신 소켓 버퍼에 존재하는 바이트 수
Send-Q : 송신 소켓 버퍼에 존재하는 바이트 수. 반대편 peer socket에 전송되지 못한 것
Local Address : 로컬 쪽 주소
Foreign Address : 상대편 주소
State
LISTEN : 열려있음
CLOSED : 닫혀있음
ESTABLISHED : 연결 완료
SYN-SENT : 연결을 요청한 상태
SYN-RECEIVED : 연결 요구에 의한 응답을 준 후 확인메시지를 기다리고 있는 상태
FIN-WAIT, CLOSE-WAIT, FIN-WAIT2 : 연결 종료를 위해 종료 요청을 받은 후의 종료 과정
출처 : 구글 어딘가..
[명령어 옵션]
-a : all 정보 출력
-n : full format 형식으로 출력
-l : listen 상태 출력
-t : tcp 방식 출력
-u : udp 방식 출력
-r : route 테이블 출력
-p : program 을 함께 출력
-s : system log 출력 - 트래픽 량 확인 가능
ex) # netstat -s > /backup/20141205_netlog
ex)
# netstat -lntup | grep 포트, 프로그램...
# netstat -lntup | grep ssh
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1813/sshd
tcp 0 0 :::22 :::* LISTEN 1813/sshd
네트워크 안될 때 netstat 명령어 통해서 내가 접속하려는 프로그램 및 포트가 열려있는지 확인한다.
5. ping
ping은 상대 호스트가 응답할 수 있는지 확인하는 프로그램으로, 상대 호스트가 살아 있는지 확인하거나 네트워크 구간에서 패킷 손실을 확인하는 용도로 사용한다.
icmp 프로토콜 이용하며 TTL 에 따른 상대편 OS는 아래와 같이 확인할 수 있다.
TTL : 64, 128 -> Unix, Solaris, Linux
250~ -> Windows
[명령어 옵션]
-c number : 패킷 보낼 횟수
-i number : 일반 사용자는 0.2초가 가장 빠르며 그 이하는 root 권한 필요
-s number : 패킷 사이즈
ex)
# ping -c 5 -i 0.2 -s 1000 192.168.1.134
PING 192.168.1.134 (192.168.1.134) 1000(1028) bytes of data.
1008 bytes from 192.168.1.134: icmp_seq=1 ttl=64 time=0.256 ms
1008 bytes from 192.168.1.134: icmp_seq=2 ttl=64 time=0.080 ms
1008 bytes from 192.168.1.134: icmp_seq=3 ttl=64 time=0.080 ms
1008 bytes from 192.168.1.134: icmp_seq=4 ttl=64 time=0.078 ms
1008 bytes from 192.168.1.134: icmp_seq=5 ttl=64 time=0.078 ms
--- 192.168.1.134 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 802ms
rtt min/avg/max/mdev = 0.078/0.114/0.256/0.071 ms
=> size 1000으로 했는데 1008 이 된 이유 : 헤더값 8byte이기 때문
6. traceroute
상대 호스트까지 도달하는 경로를 확인하는 프로그램
udp, icmp 프로토콜 이용
in Windows) tracert google.com
1) 명령어 옵션
-m number : 추적 횟수
-n : 결과는 숫자만 보여주세요
7. arp
ARP = Adress Resolution Protocal
ARP는 IP주소와 하드웨어주소인 MAC 주소를 매칭시켜 주는 테이블이며 네트워크에서 통신하기 위해서는 MAC 주소를 사용한다.
=> 실제. 이것 이용하여 비번 걸려있는 AP 사용하는 방법이 있다.
ex)
# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.1 ether 00:50:56:c0:00:08 C eth2
192.168.1.2 ether 00:50:56:e6:c8:78 C eth2
임의의 IP주소와 MAC 주소를 매칭시켜보자.
# arp -s 192.168.1.10 00:11:22:33:44:55
# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.254 ether 00:50:56:eb:7d:53 C eth2
192.168.1.1 ether 00:50:56:c0:00:08 C eth2
192.168.1.2 ether 00:50:56:e6:c8:78 C eth2
192.168.1.10 ether 00:11:22:33:44:55 CM eth2
삭제
# arp -d 192.168.1.10
# arp
Address HWtype HWaddress Flags Mask Iface
192.168.1.254 ether 00:50:56:eb:7d:53 C eth2
192.168.1.1 ether 00:50:56:c0:00:08 C eth2
192.168.1.2 ether 00:50:56:e6:c8:78 C eth2
192.168.1.10 (incomplete) eth2
=> 삭제되는데 조금의 시간인 필요
8. nslookup
DNS Server 통해 도메인 - ip 확인 할 수 있음.
# yum install -y bind-utils
명령어를 통해 nslookup 명령어 설치 가능
in windows)
nslookup google.com
set type=ns : 네임서버의 설정 값 볼 수 있음
set type=any : 모든 정보
set type=a : 기본 설정
9. dig
리눅스 전용 명령어. nslookup 보다 더 자세히 보여준다.
하지만 nslookup 을 더 많이 쓴다.
10. host
nslookup 과 비슷하지만 간단하게 보여주는 명령어
'Study > CentOS' 카테고리의 다른 글
[24] openSSH, system-config-firewall, scp, sftp (0) | 2015.03.28 |
---|---|
[23] xinetd, telnet, krb5-telnet (0) | 2015.03.28 |
[21] 이론 - ip, subnetmask, prefix (0) | 2015.03.28 |
[20] 분실된 root 비밀번호 재설정, grub 암호설정 ps, top, pstree, kill, who, write, wall, skill, inittab, uname, file (0) | 2015.03.28 |
[19] partition, mkfs, mount 실습 (0) | 2015.03.28 |
- 2014.12.04
[복습]
1) root 비밀번호 바꾸기
2) GUI 환경으로 부팅 설정
3) grub 비밀번호 설정
4) putty 접속
5) samadal 계정 정보 변경
1) single 모드 접속하여 패스워드 변경 진행
2) vi /etc/inittab 수정
3) grub -> md5crypt 로 암호화된 패스워드 생성,
vi /boot/grub/gurb.conf 주석 밑에 password --md5 [암호화된패스워드] 입력
4) 인터넷 자동연결 설정, ip 확인하여 putty 접속
5)
# mkdir -p /export/home/
# mv /home/samadal/ /export/home/
# usermod -d /export/home/samadal samadal
1. IP
(교재 p130 필기)
IP (IPv4 = 4x8bit = 32 bit)
000.000.000.000
옥텟(8bit) 구분자
2. Static vs DHCP
3. Subneting
[문제]
회사에서 ip 10.20.30.x/24 를 구매했습니다.
사무실에 PC 갯수는 16대가 있습니다.
서브네팅해서 5번째 구간을 구해보세요.
'Study > CentOS' 카테고리의 다른 글
[23] xinetd, telnet, krb5-telnet (0) | 2015.03.28 |
---|---|
[22] SELinux(소개), NIC, route, netstat, arp, nslookup, dig (0) | 2015.03.28 |
[20] 분실된 root 비밀번호 재설정, grub 암호설정 ps, top, pstree, kill, who, write, wall, skill, inittab, uname, file (0) | 2015.03.28 |
[19] partition, mkfs, mount 실습 (0) | 2015.03.28 |
[18] HDD & Partition, MBR, fdisk, mkfs, mount, umount (0) | 2015.03.28 |
[20] 분실된 root 비밀번호 재설정, grub 암호설정 ps, top, pstree, kill, who, write, wall, skill, inittab, uname, file
| Study/CentOS 2015. 3. 28. 14:07- 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
'Study > CentOS' 카테고리의 다른 글
[22] SELinux(소개), NIC, route, netstat, arp, nslookup, dig (0) | 2015.03.28 |
---|---|
[21] 이론 - ip, subnetmask, prefix (0) | 2015.03.28 |
[19] partition, mkfs, mount 실습 (0) | 2015.03.28 |
[18] HDD & Partition, MBR, fdisk, mkfs, mount, umount (0) | 2015.03.28 |
[17] rpm(2), yum (0) | 2015.03.28 |
- 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 사용자명
'Study > CentOS' 카테고리의 다른 글
[21] 이론 - ip, subnetmask, prefix (0) | 2015.03.28 |
---|---|
[20] 분실된 root 비밀번호 재설정, grub 암호설정 ps, top, pstree, kill, who, write, wall, skill, inittab, uname, file (0) | 2015.03.28 |
[18] HDD & Partition, MBR, fdisk, mkfs, mount, umount (0) | 2015.03.28 |
[17] rpm(2), yum (0) | 2015.03.28 |
[16] rpm(1) (0) | 2015.03.28 |
- 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
'Study > CentOS' 카테고리의 다른 글
[20] 분실된 root 비밀번호 재설정, grub 암호설정 ps, top, pstree, kill, who, write, wall, skill, inittab, uname, file (0) | 2015.03.28 |
---|---|
[19] partition, mkfs, mount 실습 (0) | 2015.03.28 |
[17] rpm(2), yum (0) | 2015.03.28 |
[16] rpm(1) (0) | 2015.03.28 |
[15] gzip, bzip2, tar, man (0) | 2015.03.28 |