Xming(OR Cygwin)으로 X 서버에 연결하기
앞에서 알아본 X와 X-ming 등을 정리하자면
∎ X, X Window, X.org, X-11 등은 텍스트 화면의 클라이언트가 그래픽 화면의 서버에 접속해서 그래픽 화면을 받는 기법으로 서버-클라이언트 구조이고
∎ Xnest는 X와 유사한데 서버-클라이언트가 서로 바뀔 수 있는 구조이며
∎ Xming도 X와 유사한데 서버-클라이언트 구조로써 클라이언트에 없는 서버 프로그램을 클라이언트에서 실행되게 하므로 매우 유용하다. 작업 결과는 서버에 저장된다.
GNOME 데스크 탑에 다양한 X Window 프로그램이 있으므로 몇 가지만 알아보자. 이들은 CentOS 화면 좌측상단 Applications 탭 아래 다음과 같은 메뉴 안에 들어있다.
∎ Accessories에 Archive Manager, Calculator, Character Map, Dictionary, gedit Text Editor, Gnote, Passwords and Encryption Keys, 그리고 Take Screenshot가 있고,
∎ Graphics에 gThumb Image Viewer, 그리고 LibreOffice Draw가 있으며,
∎ Internet에 firefox Web Browser, IP Telephony, VoIP and Video Conferencing, 그리고 Pidgin Internet Messenger가 있다.
∎ Office에 Evolution Mail and calendar, LibreOffice Calc, LibreOffice Draw, Libre Office Impress, 그리고 LibreOffice Writer가 있고,
∎ Sound & Video에 Audio CD Extractor, Brasero Disc Burner, Cheese Webcam Booth, Movie Player, 그리고 Ryhthmbox Music Player가 있으며,
∎ System Tools에 Automatic Bug Reporting Tool, CD/DVD Creator, Disk Usage Analyzer, Disk Utility, File Browser, System Monitor, 그리고 Terminal이 있다.
=>도구들
파일 브라우저와 CD/DVD 굽기 - nautilus와 brasero
웹 브라우저 - firefox
메일 클라이언트와 메신저 - evolution과 Pidgin
멀티미디어 - rhythmbox와 totem
문서 편집기 - gedit와 evince
그래픽 도구 - GIMP와 gThumb
오피스 도구 - LibreOffice
Linux는 FHS(Filesystem Hierarchy System)라는 파일구조에 관한 표준 구조를 정해놓고 있으므로 많은 Linux 배포판이 이를 따라서 파일을 조직한다. 다음그림에서 보는 것처럼 모든 파일은 /로 부터 파생되어져 나아간다. 디폴트 디렉터리 외에도 SELinux 등에서 사용하는 디렉터리도 있고 사용자가 필요에 의해서 /backup과 같은 디렉터리를 따로 생성해서 사용하기도 한다.
디렉터리 설명
/root 시스템 관리자인 root의 홈 디렉터리
/home 일반 사용자들의 홈 디렉터리로써 사용자들이 생성되면 사용자들의 디폴트 작업 디렉터 리가 되는데 paul이라는 사용자가 생성되면 /home/paul이 paul 사용자의 홈 디렉 터리가 된다. 홈 디렉터리는 사용자가 파일 등을 작업 한 뒤 별도로 저장장소를 지정 하지 않고 저장하면 자동으로 저장되는 곳이다. 그리고 외부에서 연결하면 자동으로 연결되는 지점이기도 하다.
/bin 시스템을 운영하기 위한 쉘과 명령어 도구들의 들어있는 곳으로써 시스템 관리자나 일 반 사용자가 실행할 수 있는 명령어들이 주로 들어있는데 cat, chmod, date, env, ls, mkdir, rm, touch, vi, ... 등이다.
/sbin 시스템을 운영하기 위한 명령어 관리 도구들이 들어있는 곳으로써 백업과 복원 등 시 스템 관리 명령어들이 들어있으므로 일반 사용자들이 접근하지 못하게 해 둘 필요가 있다. 여기에는 ifconfig, reboot, shutdown, mount, fsck, mkfs, iptables, ...같은 명령어들이 들어있다.
/lib 프로그램들이 사용하는 재사용 가능한 프로그램 모듈들이 들어있는 곳으로써 시스템에 있는 프로그램을 실행할 때 필요로 하는 공유 라이브러리가 들어 있는 곳이다. 예를 들어 mysql과 PHP를 연동할 때 사용되는 sql_connector와 같은 라이브러리 파일 이 들어있다.
/usr 여러 시스템과 공유되는 프로그램, 구성 설정, 라이브러리와 헬프 파일들이 들어있는 곳으로써 일반 사용자들을 위한 대부분의 프로그램들이 들어 있는데 /usr/bin(여러 유틸리티와 응용 프로그램들, 명령어), /usr/include(C언어의 헤더파일), /usr/lib(/usb/sbin의 실행파일들을 위한 라이브러리, 여러 프로그램에 종속되어 사용되는 재사용 가능한 시스템 라이브러리들), /usr/local(소스로 패키지를 설치 하는 곳), /usr/sbin(여러 시스템 관리 도구들), /usr/share/man(각종 패키지 설명), /usr/src(대부분 RPM과 소스파일), /usr/X11R6(그래픽 관련 파일), ... 등이다.
/var 로그와 웹이나 FTP 등 외부에서 인터넷으로 접속할 수 있는 지점으로 데이터베이스, 메일, 스풀(spool) 디렉터리와 같은 데이터들이 들어있다. 수시로 업데이트되는 파 일, 그리고 log나 웹에 관련된 html이나, php, ftp 디렉터리 등을 생성해 두는데 /var/log, /var/www/html, /var/ftp, ...등이 있다.
/boot 시스템 부팅에 필요한 커널, 초기 RAM 디스크, 그리고 grub(2)와 같은 부트로더가 들어있는 곳
/etc 전반적인 시스템 구성 파일들이 들어있는 곳으로써 시스템이나 각종 프로그램들의 환경 설정 파일들이 들어 있으므로 매우 중요한 곳이다. 시스템을 관리할 때 이곳을 백업해 두고 수정해서 사용하는 일이 많은데 /etc/mtab, /etc/group, /etc/fstab, /etc/inittab, /etc/passwd, /etc/ services, /etc/shadow, /etc/sysconfig/network-scripts/ifcfg-eth0, /etc/sysconfig/ iptables, /etc/issue, ... 등이 있다.
/lost+found 시스템 크래시(crash)나 전원 문제로 갑자기 시스템이 셧 다운되었을 때 시스템 체커에 의해 복원된 파일들이 들어 있는 곳이다. 부팅 시 파일에 문제가 있어서 fsck 명령어로 복구할 때 사용되는 곳이기도 하다. 각 파티션마다 하나씩 존재한다. 지우지 말고 일반 용도로도 사용하지 않는 것이 좋다.
/media CD/DVD나 USB 등 이동식 저장장치가 자동으로 마운트되는 디렉터리로써 USB나 외부 장치들이 시스템에 연결되면 자동으로 마운트되는 곳이다. 물론 별도로 /usb와 같은 디렉터리를 생성해서 마운트해도 된다.
/misc NFS 디렉터리가 마운트되는 디렉터리
/src web, ftp나 cvs와 같은 서비스를 제공하는 시스템 데이터들이 들어있는 곳
/mnt NFS나 Samba와 같은 원격 디렉터리와 CD/DVD, USB와 같은 이동용 드라이브의 일 시적 마운트에 사용되는 디렉터리로써 주로 Windows와 파일이나 디렉터리 호환을 위 한 공유 디렉터리 장소로 사용된다.
/opt 써드파티 어플리케이션들이 들어있는 곳으로써 주로 사용자가 추가 소프트웨어를 설치 할 때 다운받아놓고 압축을 풀고 설치할 때 사용되는 곳이다.
/proc 커널 설정을 가지고 있는 특수 파일로써 메모리에 저장된다. 가상 파일시스템으로 부 르는데 실행중인 프로 세스와 각 설정 값들을 CPU가 빠르게 참조해서 시스템이 적용시 킬 수 있다. 보안에서 매우 중시하는 곳으로 /proc/sys/net/ipv4/ip_forward=1식으로 해서 패킷을 포워드시키는 등 여러 설정을 매우 빠르게 변경해서 적용할 수 있다.
cat /proc/cpuinfo 해서 CPU의 정보를 읽거나,
cat /proc/partitions 해서 파티션의 정보를 읽을 수 있다. 여기에는 /proc/cupinfo, /proc/meminfo, /proc/devices, /proc/dma, /proc/filesystems, /proc/stat, /proc/interrupts, /proc/ ioports, /proc/loadavg, /proc/modules, /proc/uptime, /proc/version, ... 등의 파일과 bus, driver, netm irq, scsi, tty 등 의 디렉터리가 있다.
/dev 커널이 제공하는 가상 장치나 시스템에 있는 하드웨어 장치 파일들이 들어있는 곳으로 써 시스템에서 인식한 블록 장치들이 들어있는데 각 장치는 파일로 인식되고 /dev/hda OR /dev/sda(첫 번째 HDD), /dev/sdb(두 번째 HDD나 USB), /dev/cdrom OR /dev/sr0(DVD), /dev/tty0(첫 번째 콘솔), /dev/pts0(첫 번째 가상 터미널), ... 등이다.
/selinux SELinux 세팅을 변경하거나 표시하는데 사용되는 특수 파일이 들어있는 가상 파일 시스템. Linux의 접속 보안레벨을 규정해 둔 곳
/sys 핫 플러그인한 장치들을 변경하거나 표시하는데 사용되는 특수 파일이 들어있는 가상 파일시스템. 이 디렉터리에는 시스템이 필요로 하는 파일들이 들어있으므로 특별한 경 우가 아니라면 수정하지 않는 것이 좋다.
/tmp 시스템에 의해 주기적으로 삭제되는 임시 파일과 폴더들이 저장되는 곳으로써 임시로 파일을 만들고 삭제하는 곳이다. Sticky bit 권한이 설정되어 있어서 root가 생성 한 파일도 일반 사용자가 볼 수 있다. 따라서 보안이 매우 취약한 곳으로 잘 관리해 둘 필요가 있다.
/dev/tty0(첫 번째 콘솔: CLI에서의 콘솔),
/dev/pts0(첫 번째 가상 터미널: GUI에서의 콘솔 에뮬레이터)
파일시스템은 운영체제마다 독특하게 가지고 있는데 Windows는 FAT32, NTFS 등을 사용하고 Linux는 ext3, ext4, XFS 등을 사용하고 DOS에서 사용하는 FAT16과 호환된다. Linux에서 지원하는 파일시스템은 매우 많다.
Linux filesystem
파일시스템 설명
minix 이 시스템은 Linux에서 처음 사용한 파일시스템이고 64MB를 지원한다.
ext2 이 시스템은 2GB의 파일과 4TB의 HDD를 지원한다. fsck 등으로 디스크 를 검사하는 동안 다른 작업을 할 수 없다.
ext3 이 시스템은 커널 2.4부터 지원했는데 ext2에 저널링(journaling) 기 능을 추가했다. 저널링 기능이 있는 ext3은 매우 안정적이어서 디스크 쿼 타나 부팅 시스템에서는 아직도 차기 버전인 ext4보다 더 안정적으로 보기 도 한다.
저널링이란 시스템의 전원 등이 갑자기 나가도 디스크의 무결성을 유지시키 는 기법으로 시스템 로그에 있는 메타데이터(metadata: 데이터들의 정보 를 가지고 있는 데이터)를 사용해서 저장하지 못했던 데이터를 복원해준다( 아래 한글에서도 이런 기능이 있다).
ext4 이 시스템은 커널 2.6부터 탑재되었고 16TB의 파일을 지원하고 1EB의 HDD를 지원한다. 64비트의 기억 공간 제한을 없애고 ext3의 성능을 향상 시키면서도 하위 버전과 호환성이 있게 한 확장 버전이다.
VFAT,
FAT16, FAT32,
NTFS, 그리고
CIFS
이 시스템들은 전통적으로 Windows 운영체제에서 채택하고 있는 파일시스 템이다.
■ vfat는 Linux에서 인식한 DOS(FAT16)이다.
■ FAT는 FAT16으로써 Windows 95에서 사용되었고,
■ FAT32는 Windows 98/ME 등에서 사용되었으며,
■ NTFS는 Windows NT4.0 서버와 워크스테이션에서 사용되었는데 Linux에서 Windows 하드디스크를 인식하고 하드디스크에 압축과 암호를 걸 수 있는 파일시스템으로 Windows 2000 서버나 Windows XP 이후부터는 NT5.0으로 불리기도 한다.
■ CIFS는 Linux에서 인식하는 Windows 폴더의 파일시스템으로 Samba가 이를 사용한다.
iso9660 이 시스템은 Linux가 인식하는 CD/DVD-ROM의 표준 파일시스템이다.
BTRFS와 XFS BTRFS((BetTeR File System) 파일시스템들은 CentOS 7부터 디폴트 로 사용되는 파일시스템인 XFS(Extended File System)과 더불어 안 정성, 속도, 최대 16EB 지원 등을 장점으로 하고 있다.
/etc/fstab에는 자동 마운트 정보가 있다.
UUID(장치식별자)는 해당 장치를 시스템이 인식해주는 고유 번호이다.
/etc/fstab 해보면
UUID=2d865048-3d79-4f8b-8b18-b9da1974b189 /boot xfs defaults 0 0
장치 식별자 / 마운트포인트 / 포맷(파일시스템) / 마운트 옵션(auto, noauto, ro, rw) / 0(백업 수행(1), 안 함(0)) 0(fsck로 장치 검사후 로딩: 검사 안 함(0), / 만 검사(1), / 이외도 검사함(2))
=>/dev/sdb1 /boot xfs defaults 0 0
uuidgen ens33 해서 나온 UUID 값과
cat /etc/sysconfig/network-script/ifcfg-ens33 해서 확인한 UUID 값이 다를 수 있다.
=>일반적으로 사용자가 인식시켜 주는 것보다 시스템이 인식한 것으로 써주는 것이 더 좋다!!!
Linux가 부팅될 때
■ /etc/inittab(런레벨),
■ /etc/fstab(자동 마운트),
■ /etc/rc.local(부팅 직전 작업),
■ /etc/grub(2).conf(부팅 관련) 파일이 중요한 역할을 하게 된다.
ls -(d)l 하면 디렉터리/파일의 속성이 보이는데
d rwx r-x r-x. 2 centos centos 6 Dec 27 14:20 Desktop/
종류 permission inode user group size created date
- rw- r-- r--. 1 root root 217 Dec 27 16:16 names.txt
d는 디렉터리, -는 파일, rwx(read-write-execute: -는 없는 권한), inode는 다른 파일과의 연결(링크) 수(이 숫자가 클수록 중요 파일)
=>inode를 좀 더 설명하자면
inode는 전통적인 유닉스 계통 파일 시스템에서 사용하는 자료 구조이다. 파일 시스템 내에서 파일/디렉토리는 고유한 inode를 가지고 있으며 inode 번호를 통해서 서로 구분이 가능하다. 사용자가 파일 또는 파일과 관련된 정보(퍼미션, 링크_수, 소유자_명, 그룹_명, 파일_크기, 파일_주소, 액세스_정보)에 액세스하려고 파일_이름을 사용하면, 내부적으로 파일_이름을 먼저 디렉터리 테이블에 저장된 inode 번호로 매핑한 뒤, 그 inode 번호를 통해 해당 파일에 액세스하게 된다. 해당 파일/디렉터리에 대해서 내부적으로 시스템이 인식하고 있는 번호 정도로 생각하면 된다.
파일 종류에는
- 파일 / d 디렉터리 / l 심볼릭링크 / b 블록장치(HDD, USB, DVD) /
c 문자 장치(tty, pts) / s 소켓장치 / p 파이프(|)가 있다.
절대경로와 상대경로
절대경로는 / 로부터의 경로 <= 무조건 /로 시작된다.
상대경로는 현재 위치로부터의 경로
어느 명령어에 대한 설명을 보려면 man ls, man fdisk식으로 하면 되는데
LS(1), FDISK(8)식으로 보인다. (1), (8)을 카테고리라고 하는데
1 User Commands, 2 System Calls, 3 C Library Functions,
4 Devices and Special Files, 5 File Formats and Conventions,
6 Games etc, 7 Miscellanea, 그리고 8 System Administration tools and Daemons가 있다.
여러 명령어들을 연속으로 실행할 때 ;와 &&를 사용할 수 있는데
;는 명령어 나열로 좌측에 오류가 있으면 그냥 넘어가서 우측을 실행한다.
&&는 좌측을 실행한 뒤 우측을 실행하는 것으로 좌측에 오류가 있으면 넘어가지 못해서 우측이 실행되지 않는다.
Linux에 설치된 일반적인 어플에 대한 문서는 /usr/share/doc 디렉터리에서 찾을 수 있다.
'$대문자'는 대부분 시스템 환경변수이다.
이런 환경변수의 내용은 echo $HOSTNAME식으로 확인 가능하다.
.파일 혹은 .디렉터리 하면 숨김 파일/디렉터리가 된다.
alias는 명령어(옴션 포함)의 별명이다.
파일/디렉터리 선택에서 *(any), ?(one)의 의미이다. 이들을 wild card라고 부르는데
C, C++, Python, Oracle, Java, ....등 거의 모든 프로그램에 들어있는 정규표현식(regular expression)의 일부이다.
centos/root 사용자에서 ls -a 하면 숨김파일 등이 보이는데, 그 중에서
.bash_history : 입력했었던 명령어들이 저장
.bash_profile : 시스템에 로그인했을 때 보이는 환경 저장
.bashrc : 새 터미널이 실행될 때마다 보이는 환경 저장, alias 정보도 있다.
.bash_logout : 로그아웃 정보를 저장
파일을 복사할 때 cp 사용 - 옵션은 arfp를 사용
'cp -arp 원본1, 원본2, ... 사본' 구문이다.
cp -f /dev/null 대상_파일 하면 빈 파일로 크기는 0이되고 내용은 없어진다.
cp -f /dev/zero 대상_파일 하면 현재 크기를 유지한 채 0으로 덮어써서 내용이 없어진다.
=>shred 명령어와 같다.
파일/빈 디렉터리를 삭제할 때 rm 파일, rmdir 디렉터리 사용
내용이 있는 디렉터리는 rm r 디렉터리 사용
===>내용이 있던 없던, 파이/디렉터리 모두 rm -rf 파일/디렉터리 사용
디렉터리 이동에 대한 cd, pushd-popd
cd는 디렉터리 이동,
pushd는 현재 디렉터리를 잠시 메모리에 이동해두고, 다른 디렉터리에서 작업한 뒤, 다시 현재 디렉터리로 올 때 cd 해서 이동하지 않고 popd를 사용하면 바로 이동된다.
디렉터리 생성은 mkdir
m은 주면 퍼미션 지정으로 생성,
p를 주면 하위 디렉터리까지 새로 생성
파일/디렉터리 이동은 mv, 확장자 변경 rename
mv - 같은 디렉터리 내에서는 이름변경
다른 디렉터리로 갈 때에는 이동/이름변경이 된다.
표준 입출력 지시어인 리다이렉션 - >, < 와 >>, <<
Linux의 기본 입력장치는 키보드이고 기본 출력장치는 모니터인데 이 리다이렉션을 사용하면 파일을 입출력 장치로 사용할 수 있다. >는 좌측의 실행결과가 우측의 파일로 만들어지고, <는 우측 파일이 좌측에 입력된다는 의미이며, >>나 <<는 기존의 파일에 내용이 추가된다는 의미이다.
∎ > 는 표준 출력이다. >>는 추가한다는 의미이다. 주의할 것은 >를 기존 출력파일에 대해서 적용하면 겹쳐 쓰므로 주의한다. >>이나 <<는 < 이나 >과 사용법이 같지만 기존 파일에 내용을 추가한다는 면에서 다르다.
◾ < 는 표준 입력인데 키보드로부터 입력받는 것이 아니라 < 우측에 있는 어느 파일로 부터 입력을 받는다. << 는 추가해서 입력된다.
descriptor에는
0> std input
1> std output
2> std error이 있으므로 에러가 많을 때 콘솔에서 에러를 보지 않고 파일로 저장해서 나중에 천천히 검토해볼 수 있다.
링크
링크 원본 파일을 복제하는데 어느 곳에서라도 변경이 있으면 모두 변경이 반영된다.
=>따라서 여러 곳에 분산되는 중요한 파일에 링크를 걸어서 분산시켜두면 한 곳에서의 변경이 모든 파일에 반영되어 변경되게 된다!!!!
그리고 경로를 지정할 때에는 절대경로로 해주어야 한다.
■ 심볼릭 링크(소프트 링크) : ln -s 원본 복사본
<=일종의 단축키와 같다. 보안상 취약하다!!! Linux에서는 대부분 소프트 링크를 사용한다.
■ 하드 링크 : ln 원본 복사본
<=복사와 유사하지만 변경이 반영되는 점에서 복사와 다르다.
readlink는 링크된 원본을 보인다.
cat -n 파일은 파일을 줄 번호를 붙여서 읽고
cat > 파일 하면 이제부터 입력하는 내용을 파일에 쓴다.
cat >> 기존_파일 하면 기존 파일에 이제부터 입력하는 내용을 파일에 쓴다.
clear는 화면을 정리해준다.
file은 파일의 종류를 보인다.
Linux