본문으로 바로가기

Linux 기초 1

category 잡동사니 2015. 6. 24. 23:04

Windows : client위주의 운영체제.(약 99.9%)

서버라는 개념에서의 리눅스를 배웁시다.
서버 : 클라이언트에게 일종의 비용을 가지고 어떤 것을 제공해주는 것

서버 : 절반 - 유닉스 . 30% - 리눅스 . 20% - 윈도우(비용발생)
리눅스 : 오픈소스. 무료. 약 2백가지
Red hat 계열(Redhat enterprize,Fedora.대학수업시간.개발용.실제보안쪽에선 거의 안 씀,CentOS.현장에서 제일 많이 사용.무료6.5) 

Devian 계열 (ubuntu,Suse)


유닉스 -> 리눅스가 파생되어 나온 것. 리눅스를 먼저 배우면 배우기가 쉽다.




/        : 200mb - 리눅스 상에 존재하는 모든 파일과 디렉토리의 최상위에 위치하는 최상위 디렉토리.

/boot  : 200mb - 리눅스 커널의 메모리 이미지와 부팅과정에서 필요한 정보 파일들이 있다.
/usr   : 6000mb - 루트 파일 시스템과 구조는 유사하고 용량이 크고 자주 사용되지 않는 파일들이 있다 (C\:Program File과 유사)
/var   : 2000mb - /var/log나 /var/adm과 같이 자주 변경되는 시스템 파일들을 가지고 있다
/swap : 4096mb 
/home : 200mb - 관리자 이외의 사용자의 홈 디렉토리가 생성되는 위치이다. 

desktop : GUI (그림 지원)
minimal : CLI (글자만 지원)

http://realnew.tistory.com/43에 설명 자세히 나와 있음. 똑같이 실행하면 된다. 

lvm , raid : 하드를 여러개 묶어서 하나로 사용하는 것




바탕화면 우클릭 - open in terminal

ipconfig -> ifconfig

loopback : 가상의 인터페이스. 외부로 나갈수 없다.

putty -> loagin as : root
비밀번호 

putty 설정

글꼴 consolas
특성 알트엔터
변환 utf-8

putty 명령어

uname : 시스템 정보출력
 -a : 시스템에 대한 모든 정보 출력
 -i : 시스템아키텍쳐를 출력

man / --help
메뉴얼의 약자 / 도움말
man [command]  : 상세 도움말
[command] --help : 상세 옵션 확인

clear : 스크롤을 다 위로 올려서 깨끗하게 해버림

prompt : 명령어를 입력할수 있는 상태.
윈도우 prompt (Dos) : 드라이브명: 경로>_ (커서)
유닉스 (Ksh) : #_ (관리자) or $_ (사용자)
리눅스 (bash) : 접속한 계정명@서버명(호스트명 앞에거) 경로(홈디렉토리) 계정상의 상태 : #(관리자계정),$(일반사용자계정)
                       [계정명@서버명 경로]계정상태 _ 

ls : 주요 디렉토리 


command [option][sub option][file or dir]
                    -             --          
1
1+2,1+3,1+4 

주요 폴더 역할 정리 --




cd(change directory)
usage : cd [dir]

pwd : 경로 확인. (절대 경로)


ls(list) : 디렉터리 안의 목록 출력
usage : ls [option][dir]

ls -l (자세히 보기) 
: 맨앞이 'd' - directory
            '-' - file
 나머지 기호 : 허가권을 나타낸다.

링크수 : file : 연결된 file 수
            폴더 : 하위 dir 수(하위 폴더 포함 x)
UID : 유저 아이디
GID : 그룹 아이디

허가권 + 소유권 = 권한

크기 : file - 용량 (byte)
        폴더 - 블록 사이즈 (굳이 볼 필요 x)

생성 시간 / 최근 수정된 시간 / 이름

directory : 안내책자 - 파일이 들어가는게 아니라 파일에 대한 정보가 저장되어진다.(meta - data) - CLI에서 많이 사용
folder : file(서류)철 - GUI에서 많이 사용

리눅스에서 파일 맨 앞에 .이 있으면 숨김 파일 / 숨김 디렉토리
-l : 자세히 보기
-a : 숨김file, 숨김dir까지 출력.

-la, -al 식으로 사용가능
-d : 내가 지정한 디렉토리의 정보 출력
-R : 하위 디렉토리의 정보까지 출력
-F : 이름 끝에 파일 형식을 기호로 출력 ( / : directory, 공백 : Text 파일.문서 파일, * : execute file. 실행 파일, -> : symbolic link file. 바로가기.8자리 맨 앞에'l'로 표시)

mkdir : 디렉터리 생성
usage : mkdir [option] dir
 - 대소문자가 구별 된다. (a,A폴더 별개) -리눅스의 특징

리눅스의 특징 
1. 대소문자 구분
2. 확장자 개념이 없다
3. 허가권과 소유권이라는 권한을 갖는다.
4. multi tasking
   multi user
단점
5. 사용가능한 응용프로그램이 없다.
6. 하나의 통일된 규격이 없다

mkdir -p : 상위 디렉토리까지 생성하는 옵션
rmdir : 디렉토리 삭제 rmdir [option] dir (비어있는 디렉토리만 지워짐)

절대 경로 : 절대적인 위치(최상위 디렉토리)를 기준으로 하는 경로 
 - 모든 경로를 다 입력하는 것
./ <-- 현재 디렉토리
../ <-- 상위 디렉토리

cd ./seemile

상대 경로 : 상대적인 위치(현재 디렉토리)를 기준으로 하는 경로





cp : file or dir 복사
usage : cp [option]원본 사본
[파일 크기로 비교]

원본과 사본의 이름이 같은경우 사본의 이름 생략가능
이름 변경하여 복사도 가능

cp -r 원본명 사본명 

- 디렉토리 복사 옵션

cp -p 

- 원본file의 정보(허가권, 소유권, 시간 등등)를 그대로 유지.

복사 : 절대경로 / 상대경로 다 가능하다.

cp 파일경로 파일경로 파일경로 / 디렉토리 --> 한번에 복사 가능하다. 

다른 명령어들도 복수로 사용 가능하다.

* : wild card - 모든것들. 글자수와 상관없이  
? : 한글자만 의미

mv : file or dir 이동
usage : cp와 동일

-> 이름 바꾸기 가능. 동일한 폴더에 이름 바꿔서 넣기.

mv,cp : 디렉토리 작업시 -r의 차이. cp는 필요. mv는 안필요


------------------------------------------------------------------------------------------------------------------
FTP

서버 - > 클라이언트 : 다운로드
클라이언트 - > 서버 : 업로드 

1.
futty : setup
방화벽에서 ftp 체크하고 해제
서비스에서 vsftpd 체크

2.
vi /etc/sysconfig/selinux

SELINUX = ENFORCING의 E에 커서올리고
d w a
그다음에 disabled
:wq 입력후

프롬프트 창에 reboot입력해서 리눅스 재부팅

putty는 끊어지게 된다.

3. 다시 cmd창에서 경로 변경후 ftp 아이피 접속
루트계정은 사용불가. seemile/seemile로 접속
VM폴더에 index.html 파일 생성

4. CMD에서 D:로 변경 -> 폴더 찾아간후
put 파일이름
(200 에러, 패시브 모드 뜨면 제어판 -> 윈도우즈 방화벽 -> 허용되는 프로그램 가서 파일전송 프로그램 체크 다 해주고 
ftp 종료후 다시 실행 해준다.)

업로드 : put
다운로드 : get




rm : file 삭제

usage : rm [option] file

기본값 : n (삭제 X)
y를 쓰고 엔터 쳐준다.

rm -f file
- 강제 삭제. 동의 없이바로 삭제한다.

bash : 동의 구하는게 기본
console : 동의 안구한다. -> rm -i file : 동의를 구하게 된다. <-> -f

-r : 폴더 삭제

보통 rm -rf 형태로 많이 사용.

디렉토리 삭제 : rmdir


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

alias : 별칭 지정 

usage : alias alias = 'command'

등록된 터미널 창에서만 사용이 가능하다.

unalias : 별칭 삭제 
usage : unalias alias이름

touch : file 생성 (빈 문서파일. ls -lF 하면 확장자가 비어있는. 즉 문서파일이 생성)

같은 파일 생성시 내용변화는 없고 시간만 갱신된다.

cal 연도 : 달력 출력
cal 월 연도 : ex) cal 03 2014

date : 날짜,요일,시간 정보 출력 
usage : date mmddhhminYYYY
rdate : 타임서버 (time.bora.net)
-P : 시간확인
-S : 시간 동기화 

find : 검색
usage : find <경로> -name 단어
ex : find / -name samadal -type d or f (파일 혹은 디렉토리)

find ./ -name "test*" -exec rm {} \;
                              실행 관련 - 뒤에 있는 명령어를 실행해라
                                           사용형식 

실습 

/down 디렉터리 생성 , test1,test2 파일 생성
/down test1,2를 test3, test4로 /tmp에 복사
/down 디렉터리에 test 디렉터리 생성
/down/test 디렉터리를 /tmp로 이동

Find명령어를 통해 파일명 앞부분에 "test" 문자열이 섞인 파일을 검색하면서 삭제 하시오.(/tmp, /down디렉터리로만 부분검색을 하고 명령어를 한줄로 출력)



cat : 문서 파일 내용 출력
복사
생성
병합
내용 추가

cat /etc/passwd > ./passwd (복사 명령어, 이름 바꿔서도 복사 가능)

cat > /home/samadal/a 
종료하려면 컨트롤 + C

--> 문서파일 생성해서 저장

cat /a/b /c/d > /a/e 

병합 가능


cat >> /a/b

수정 기능

cat a.txt >> b.txt 

a를 b에 더함

cal [월] [년도]
- 달력기능

date : 시간 출력
rdate<사이트> : 시간 동기화

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

vi 에디터 명령어

vi : 실행
종료 : : q 엔터

편집 : i
수정 : r
명령어 : :

커서 이동 : h,j,k,l
e : 단어 끝
E : 다음 공백
b : 단어 앞
B : 이전 공백 다음

H : 보이는 첫번째 줄 처음으로 이동
M: 화면의 중간 줄 처음으로 이동
L : 화면의 마지막줄 처음으로 이동
G : 문서 맨 끝으로 이동
<n>G : 문서의 <n>줄로 이동

<n>dd : n줄 만큼 삭제
<n>d : 현재 커서위치에서 n개 방향만큼 삭제 (이동키 조합 가능)

:w  : 파일에 저장
:w <파일 이름> : 파일 이름으로 저장

<n>yy : n줄 만큼 클립보드에 저장
<n>y : n개 방향만큼 클립보드에 저장 ( 이동키 조합가능)
<n>dd : 잘라내기
<n>d : 잘라내기
p : 붙여넣기
P : 줄 붙혀넣기

u : undo

컨트롤 + r : redo




vi 에디터

/Pattern : 패턴을 검색
?Pattern : 패턴을 검색

/ : 패턴이 검색 된 후 n키를 통해 아래방향으로 계속 찾기
    N키 : 윗 방향으로 계속 찾기
? : n키 : 윗방향
    N키 : 아랫방향

:[범위]s/[old]/[new]/[옵션]   old를 new로 치환

범위 :n혹은 n,n 혹은 %를 넣을 수 있다
g 옵션을 주면 적용되는 라인의 모든 부분 변경 (모두 바꾸기) 
gc 옵션 : 지정할 수 있다.
옵션 안주면 처음 찾은 부분만 변경 

Shell 명령어 (명령쓰는 프롬프트)

:wq : 저장하고 나가기
: q! : 나가기

:! 명령프롬프트로 잠깐 돌아가기 
:.! 명령어 : 편집중인 파일로 불러오기

echo 단어 : 단어를 다시 출력 
echo hello > 파일명, 주소 등등 : 그곳으로 보내줌( 없는 파일이면 생성함 )
[n]컨트롤 w n : 화면 나눔
[n]컨트롤 w v : 수직 나누기
[n]은 화면의 갯수

:e filename : 파일 열기
:enew : 현재창 닫고 빈문서 열기
:q 종료
:q! 강제종료
:w 파일 저장
:wq 파일 저장후 종료 = x

w >> filename : 파일에 내용 추가

echo hi > hello (덮어쓰기)
echo hello >> hello (덧붙히기)

:f : 현재 작업중인 파일의 이름과 라인수
:[n]r[filename] : 파일 내용을 n번째 줄에 삽입한다.
:[n]r![command] : Command 실행 결과를 파일의 n라인부터 삽입


:set : 적용되어있는 옵션 확인
:set ts=4 : tab 사이즈 조절 
:set nu : 라인 번호 출력 
:set nonu : 라인 번호 비출력
:nohl : high light 비활성화
:set all : 전체 옵션 확인 

vi /etc/virc : 기본 설정파일


/usr/share/vim : vim 설정파일이 위치한 디렉토리

cd : 자신의 디렉터리로 이동

vi .vimrc : 자기 설정파일 생성

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

shell : 명령어 해독기

kernal

ksh : unix 기반
bash : linux 기반

사용자와 Kernal 사이에 shell 이 있다.
cshell, bashshell, tcshell, kornshell등등이 있다.

cat /etc/shells l

/bin/bash : bash shell 불러오기

init ->getty -> login -> shell 
$사용자 : 일반 사용자
#사용자 : root 사용자

pid : 프로세스 아이디
init 이 항상 제일 먼저 실행
부모가 없는 프로그램들의 부모는 다 init. 이게 꺼지면 전체 다 꺼진다.

init 0 : 종료
init 6 : 재부팅

init 1 : 싱글유저 모드 (안전모드)
init 2 : 네트워크 기능 몇가지를 뺀 다중사용자 모드
init 3 : 모든 기능 넣은 다중 사용자 모드
init 4 : 예약용. 안씀

bin : binary(실행)파일 모음 

init프로세스가 /bin/mingetty 프로세스를 실행시킴
head -3 /etc/passwd 에서 해당 사용자에게 설정된 shell(bash shell)을 실행시킴
시스템 파일은 /etc/profile을 찾아서 그 안의 명령어들을 실행 시킴
사용자의 홈 디렉토리에서 .bash_profile의 내용을 읽음

vi 에디터

#! 첫줄에 있으면 실행

while [ 조건 ] 
do
명령
sleep 1 (1초 딜레이)
done 

sh 파일 이름 : 실행 

취소 : 컨트롤 C




vi 에디터

/Pattern : 패턴을 검색
?Pattern : 패턴을 검색

/ : 패턴이 검색 된 후 n키를 통해 아래방향으로 계속 찾기
    N키 : 윗 방향으로 계속 찾기
? : n키 : 윗방향
    N키 : 아랫방향

:[범위]s/[old]/[new]/[옵션]   old를 new로 치환

범위 :n혹은 n,n 혹은 %를 넣을 수 있다
g 옵션을 주면 적용되는 라인의 모든 부분 변경 (모두 바꾸기) 
gc 옵션 : 지정할 수 있다.
옵션 안주면 처음 찾은 부분만 변경 

Shell 명령어 (명령쓰는 프롬프트)

:wq : 저장하고 나가기
: q! : 나가기

:! 명령프롬프트로 잠깐 돌아가기 
:.! 명령어 : 편집중인 파일로 불러오기

echo 단어 : 단어를 다시 출력 
echo hello > 파일명, 주소 등등 : 그곳으로 보내줌( 없는 파일이면 생성함 )
[n]컨트롤 w n : 화면 나눔
[n]컨트롤 w v : 수직 나누기
[n]은 화면의 갯수

:e filename : 파일 열기
:enew : 현재창 닫고 빈문서 열기
:q 종료
:q! 강제종료
:w 파일 저장
:wq 파일 저장후 종료 = x

w >> filename : 파일에 내용 추가

echo hi > hello (덮어쓰기)
echo hello >> hello (덧붙히기)

:f : 현재 작업중인 파일의 이름과 라인수
:[n]r[filename] : 파일 내용을 n번째 줄에 삽입한다.
:[n]r![command] : Command 실행 결과를 파일의 n라인부터 삽입


:set : 적용되어있는 옵션 확인
:set ts=4 : tab 사이즈 조절 
:set nu : 라인 번호 출력 
:set nonu : 라인 번호 비출력
:nohl : high light 비활성화
:set all : 전체 옵션 확인 

vi /etc/virc : 기본 설정파일


/usr/share/vim : vim 설정파일이 위치한 디렉토리

cd : 자신의 디렉터리로 이동

vi .vimrc : 자기 설정파일 생성

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

shell : 명령어 해독기

kernal

ksh : unix 기반
bash : linux 기반

사용자와 Kernal 사이에 shell 이 있다.
cshell, bashshell, tcshell, kornshell등등이 있다.

cat /etc/shells l

/bin/bash : bash shell 불러오기

init ->getty -> login -> shell 
$사용자 : 일반 사용자
#사용자 : root 사용자

pid : 프로세스 아이디
init 이 항상 제일 먼저 실행
부모가 없는 프로그램들의 부모는 다 init. 이게 꺼지면 전체 다 꺼진다.

init 0 : 종료
init 6 : 재부팅

init 1 : 싱글유저 모드 (안전모드)
init 2 : 네트워크 기능 몇가지를 뺀 다중사용자 모드
init 3 : 모든 기능 넣은 다중 사용자 모드
init 4 : 예약용. 안씀

bin : binary(실행)파일 모음 

init프로세스가 /bin/mingetty 프로세스를 실행시킴
head -3 /etc/passwd 에서 해당 사용자에게 설정된 shell(bash shell)을 실행시킴
시스템 파일은 /etc/profile을 찾아서 그 안의 명령어들을 실행 시킴
사용자의 홈 디렉토리에서 .bash_profile의 내용을 읽음

vi 에디터

#! 첫줄에 있으면 실행

while [ 조건 ] 
do
명령
sleep 1 (1초 딜레이)
done 

sh 파일 이름 : 실행 

취소 : 컨트롤 C





/etc/login.defs


앞에 #이 붙는 내용 : 주석 

가장 먼저 봐야될 항목 

Mail_Dir : /var/spool/mail . 메일함 생성되는 기본 경로. -> useradd에서 메일스풀이 yes로 되어 있으면 생성

Password aging controls : pass max days - 99999 : 무제한. 유효기간.
pass min days : 0 : 재설정 기간. 0은 언제든 변경 가능.
pass warn age: 패스워드 만료 경고일

UID _MIN,MAX
GID_MIN,MAX  -> 500부터 시작. 6만개까지

create _ home : 일반 사용자 생성시의 홈디렉터리 생성여부. yes가 아니면 홈디렉토리를 직접 설정 해주어야한다. 

usergroups_enab : 유저 삭제시 그룹도 같이 지울건지. 계정따로, 그룹 따로 관리가 되어버린다.
encrpt method sha512 : 암호화 할때 sha512방식으로 암호화 한다.

---------------------------------------------------------------------------------------------------------------------
tail -15 /etc/passwd (아래서부터 15줄 출력)
---------------------------------------------------------------------------------------------------------------------

usermod(modification) : 계정 수정 
usage : usermod(option argument)... username 
-u : UID 변경 숫자. usermod -u 600 user13             / useradd 에서의 -u는 UID와 GID가 같이 변경 된다.
-g : 기본그룹 변경. 
usermod -u 519 -g user13 user13 / 자동으로 자동완성 시켜줌
-c : 설명 부여, 변경 ( 덮어쓰기 )
-d : 홈 디렉토리 변경하기
-s : 쉘 변경 (cat /etc/shells)
-G :
usermod -d /export/home/user

userdel : 계정 삭제
usage : usedel [option] username 
usergroups_enab 체크 되어있으면 그룹에서도 자동 삭제

-> 계정에 대한 정보만 삭제 , 홈이나 메일함 남아있다.

다 지우려면 옵션 : userdel -r user12

1./etc/passwd
2./etc/shadow
3./etc/group
4./etc/gshadow 
-r 옵션 적용시
5./home
6.Mail함 까지 삭제

다시 만들어 줄때 UID GID랑 홈디렉토리를 맞춰줘야한다. 
useradd -u 520 -d /export/home/user13 user13

userdel -r user

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

passwd : 암호 설정

usage : passwd [option][username]

passwd user1 
 
일반 계정에서는 그냥 passwd치면 변경창 나오게된다.

1. 최소 암호길이 : 6글자 이상
2. 영문자 숫자 특수문자 조합. P@ssw0rd는 많이 알려져서 안된다.

user1 -> h0t$ix 비밀번호.

passwd -d user1 : user1의 비밀번호 삭제
-l : 암호 잠금
-u : 암호 잠금 해제

--------------------------------------------------------------------------------------------------------------------
groupadd 
-g : 별도의 GID 부여. groupadd -g 666 g2
groupmod
-g : GID 변경
-n : 그룹명을 변경 - groupmod -n g4 g2 << 다시 해봐라.
groupdel





'잡동사니' 카테고리의 다른 글

[코드스터디] 3주차  (0) 2015.06.25
[코드스터디] 2주차  (0) 2015.06.25
[코드스터디] 1주차  (0) 2015.06.25
Linux 기초 2  (0) 2015.06.24
Linux // SetUID, SetGID, Sticky_Bit  (0) 2015.06.24