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

  1. 2015.03.27 [10] userdel, groupadd, groupdel, 계정 잠그기
  2. 2015.03.27 [09] useradd -D, usermod
  3. 2015.03.27 [08] passwd, shadow, group, gshadow, useradd, passwd, skel
  4. 2015.03.27 [07] vi(2), 유용한 vi 명령어 메모
  5. 2015.03.27 [06] 명령어 find, shutdown, vi(1) & FTP 방화벽 설정 관련(집)
  6. 2015.03.27 [05] alias, touch, head, tail, more, less, nl, |(파이프), cat, ftp, date, clock, cal
  7. 2015.03.27 [04] cp, mv, mkdir, rmdir, rm
  8. 2015.03.27 [03] Linux 명령어 구조, 절대경로vs상대경로, pwd, cd, ls, clear
  9. 2015.03.27 [02] Linux의 특징 및 Prompt의 구조, Putty 설정 팁
  10. 2015.03.27 [01] CentOS 6.6 설치, 주요 디렉토리 설명, swap 1

[10] userdel, groupadd, groupdel, 계정 잠그기

|


- 2014.11.19


[Remark]


useradd 로 사용자를 추가하게 되면 아래 6가지에 정보가 생성된다.

1) /etc/passwd

2) /etc/shadow

3) /etc/group

4) /etc/gshadow

5) /$HOME

6) /var/spool/mail




1. userdel


userdel 명령어를 이용하면 home directory와 mail은 삭제되지 않는다.

-r 옵션을 쓰면 home directory와 mail도 삭제된다.



*


userdel 로 삭제하면 user를 복구할 수 있다.

하지만 userdel -r 옵션으로 삭제하면 데이터까지 삭제되기 때문에 user를 복구할 수 없다.





2. groupadd


# groupadd s1


# tail /etc/group

nfsnobody:x:65534:

gdm:x:42:

sshd:x:74:

stapusr:x:156:

stapsys:x:157:

stapdev:x:158:

tcpdump:x:72:

slocate:x:21:

samadal:x:500:

s1:x:501:


GID 를 600으로 줘서 새로운 그룹 생성


# groupadd -g 600 s2

# tail -4 /etc/group

slocate:x:21:

samadal:x:500:

s1:x:501:

s2:x:600:


# groupadd s3

# tail -4 /etc/group

samadal:x:500:

s1:x:501:

s2:x:600:

s3:x:601:


GID 가 502가 아닌 601로 생성되었다.

즉, group id는 가장 나중 번호 다음 번호로 생성이 된다.





3. groupdel


ex)

# groupdel s1

# groupdel s2

# groupdel s3

# groupdel s4

# groupdel s5




[실습]


사용자 : user1, user2

그룹 : g1, g2  생성


# useradd user1

# useradd user2

# groupadd g1

# groupadd g2





4. usermod 로 user의 그룹 정보 변경


group을 동아리라고 생각한다면

동아리 추가는 -G : 공유 그룹 추가

동아리 변경은 -g : 내 그룹으로 변경


1) -G 로 그룹 정보 변경


# usermod -G g1 user1

# tail -3 /etc/passwd

samadal:x:500:500:madalgyo:/export/home/samadal:/bin/bash

user1:x:501:501::/home/user1:/bin/bash

user2:x:502:502::/home/user2:/bin/bash


# tail -5 /etc/group

samadal:x:500:

user1:x:501:

user2:x:502:

g1:x:503:user1

g2:x:504:




2) -g 로 그룹 정보 변경


# usermod -g g2 user2

# tail -4 /etc/group

user1:x:501:

user2:x:502:

g1:x:503:user1

g2:x:504:


# tail -3 /etc/passwd

samadal:x:500:500:madalgyo:/export/home/samadal:/bin/bash

user1:x:501:501::/home/user1:/bin/bash

user2:x:502:504::/home/user2:/bin/bash


# id user1

uid=501(user1) gid=501(user1) groups=501(user1),503(g1)

# id user2

uid=502(user2) gid=504(g2) groups=504(g2)



*


공유그룹은 1개밖에 추가로 못가진다. 다른 그룹으로 덮으면 기존 공유그릅은 삭제된다.





[문제1]


usermod 실습 원상복귀


# usermod -G user1 user1

# usermod -g user2 user2

# id user1

uid=501(user1) gid=501(user1) groups=501(user1)

# tail -4 /etc/group

user1:x:501:user1

user2:x:502:

g1:x:503:

g2:x:504:




[문제2]


-작업환경-

user : testuser

UID : 200

Gid : tg(2000)

shell : ksh

$home : /hosting

skel : /skelsam

auto creating directory : public_html

auto creationg file : .sam


모든 작업은 기본경로를 변경하지 않고 옵션만으로 사용자를 생성하세요.

모든 작업 완료 후 정상 로그인되는지 확인하세요.

실패시 삭제 후 다시 작업


# groupadd -g 2000 tg

# mkdir -p /skelsam/public_html /hosting


# cp /etc/skel/.* /skelsam

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

# touch /skelsam/.sam


# useradd -u 1200 -g tg -s /bin/ksh -d /hosting/testuser -m -k /skelsam testuser

# passwd testuser


결과물 확인 : testuser로 로그인 후

$ pwd

/hosting/testuser


$ ll -a

합계 36

drwx------ 4 testuser tg   4096 2014-11-19 14:05 .

drwxr-xr-x 3 root     root 4096 2014-11-19 14:03 ..

-rw-r--r-- 1 testuser tg     18 2014-11-19 14:00 .bash_logout

-rw-r--r-- 1 testuser tg    176 2014-11-19 14:00 .bash_profile

-rw-r--r-- 1 testuser tg    124 2014-11-19 14:00 .bashrc

drwxr-xr-x 2 testuser tg   4096 2014-11-19 14:00 .gnome2

-rw-r--r-- 1 testuser tg    171 2014-11-19 14:00 .kshrc

drwxr-xr-x 4 testuser tg   4096 2014-11-19 14:00 .mozilla

-rw-r--r-- 1 testuser tg      0 2014-11-19 14:01 .sam

-rw------- 1 testuser tg    110 2014-11-19 14:07 .sh_history

drwxr-xr-x 2 testuser tg   4096 2014-11-19 14:01 public_html


$ tail -1 /etc/passwd

testuser:x:1200:2000::/hosting/testuser:/bin/ksh


$ tail -1 /etc/group

tg:x:2000:


$ id testuser

uid=1200(testuser) gid=2000(tg) groups=2000(tg)




[문제3]


-작업환경-

user : tiger

Uid : 700

공유그룹 : g1

별칭 : silver

홈디렉토리 : /local_host/home/

쉘 : 본쉘

skel : /skel/

자동생성 디렉터리 : public_html

자동생성파일 : public_html/index.html <-- www.silvertiger.com 추가


기본설정 건드리지 말고 옵션만을 이용하여 설정

설정 후 정상로그인 되는지 확인. 실패 시 삭제 후 다시 생성


# mkdir -p /local_host/home/

# mkdir /skel/


# cp /etc/skel/.* /skel/

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

# mkdir /skel/public_html


# cat > /skel/public_html/index.html

www.silvertiger.com


# useradd -u 700 -G g1 -c silver -d /local _host/home/tiger -s /bin/sh -m -k /skel tiger


tiger로 로그인 하여 정상 생성 되었는지 확인

-sh.4.1$ pwd

/local_host/home/tiger


-sh.4.1$ ll -a

합계 36

drwx------ 5 tiger tiger 4096 2014-11-19 14:36 .

drwxr-xr-x 3 root  root  4096 2014-11-19 14:36 ..

-rw-r--r-- 1 tiger tiger   18 2014-11-19 14:35 .bash_logout

-rw-r--r-- 1 tiger tiger  176 2014-11-19 14:35 .bash_profile

-rw-r--r-- 1 tiger tiger  124 2014-11-19 14:35 .bashrc

drwxr-xr-x 2 tiger tiger 4096 2014-11-19 14:35 .gnome2

-rw-r--r-- 1 tiger tiger  171 2014-11-19 14:35 .kshrc

drwxr-xr-x 4 tiger tiger 4096 2014-11-19 14:35 .mozilla

drwxr-xr-x 2 tiger tiger 4096 2014-11-19 14:35 public_html


-sh.4.1$ cat ./public_html/index.html

www.silvertiger.com


-sh.4.1$ tail -1 /etc/passwd

tiger:x:700:700:silver:/local_host/home/tiger:/bin/sh


-sh.4.1$ id tiger

uid=700(tiger) gid=700(tiger) groups=700(tiger),503(g1)





5. 계정 잠그기


1) passwd -l tiger(계정명) : lock

 -u tiger(계정명)       : unlock


② usermod -L tiger(계정명) : lock

          -U tiger(계정명) : unlock



*


passwd 명령어로 unlock 하는 경우, Linux 재부팅 해야 적용되지만

usermod 명령어로 unlock 하는 경우, 바로 적용된다.



And


[09] useradd -D, usermod

|


- 2014.11.18




1. useradd -D


하나의 명령어이며, 유저 생성에 대한 기본 설정


useradd에 대한 기본 설정 출력


# cat /etc/default/useradd

GROUP=100          // -g : /etc/group d에 user 번호가 100이다. 즉 user 생성 시 자신의 이름으로 그룹 생성하라는 설정번호

HOME=/home        // -b

INACTIVE=-1        // -f : 계정 만료 시 어떻게 할 것인가?

                               -1 : 기능정지 / 0 : 사용정지

EXPIRE=              // -e YYYYMMDD

SHELL=/bin/bash    // -s

SKEL=/etc/skel      // 옵션 x, vi로만 편집

CREATE_MAIL_SPOOL=yes




[문제1]


shell : tsch -> 문서를 이용한 변경

$home : /test -> 명령어를 이용한 변경

skel : /skelsam -> 문서를 이용한 변경

user : user7


변경을 한 후 useradd user7 입력 후 user7이 정상적으로 로그인되는지 확인


vi /etc/default/useradd  를 통해 바꾼다.

useradd -D -b /test 로 바꾼다.

없는 디렉터리 생성한다.

계정생성하고 passwd 바꾸고 실행하면 됨




[문제2]


파일 /backup/grub.conf 를 디렉터리 /usertest/test/public 에 grub로 복사후 열기

5번째줄 하단에 리눅스 IP의 출력내용을 삽입

(eth로 시작하는것만 삽입하고 lo로 시작하는 것은 제외)

skel로 사용할 디렉토리 /test/ut/ 에 파일 conf로 저장후 열기

디렉터리 /usertest/ 에 사용자 user8 생성

이때 파일 conf가 .conf로 자동생성되도록 해보세요.


절대 기본정보 쓰지않고 옵션만을 통해서 작업하세요


# mkdir -p /usertest/test/public

# cp /backup/grub.conf /usertest/test/public/grub

# vi /usertest/test/public/grub

        :5r! ifconfig eth0

        -> lo 로 시작하는 부분 삭제

        !mkdir -p /test/ut/

        :w /test/ut/.conf

# cp /etc/skel/.* /test/ut/

# cp -r /etc/skel/.gnome2 /etc/skel/.mozilla /test/ut/

# useradd -d /usertest/user8 -m -k /test/ut user8

# passwd user8




[문제3]


문서를 이용한 기본 skel 변경 : /test/ut

사용자 : user9

명령어 : useradd user9


# vi /etc/default/useradd

/etc/skel -> /test/ut

# useradd user9

# passwd user9





2. usermod


user modify


usermod [option] [argument] ... [account_name]


# tail -5 /etc/passwd

testtt:x:513:513::/usertest/testtt:/bin/bash

user6:x:514:514::/linux/user6:/bin/bash

user7:x:515:515::/test/user7:/bin/tcsh

user8:x:516:516::/usertest/user8:/bin/bash

user9:x:517:517::/home/user9:/bin/bash

              -u   -g -c        -d              -s


*


-l : user 이름 변경, -p : passwd 변경이지만 사용하지 않는 것이 편함.

만들고 난 후기 때문에 skel 은 변경 불가능




[문제1]


user3 의 home directory를 gangnam -> user3 로 변경


# usermod -d /linux/user3 user3

# ll /linux

합계 8

drwx------ 4 user3 user3 4096 2014-11-17 14:13 gangnam

drwx------ 4 user6 user6 4096 2014-11-18 12:52 user6

# mv /linux/gangnam/ /linux/user3/


하지만 user3 로그인 시 /linux/user3/ 이 아닌 / 에서 로그인이 된다.

passwd 는 동사무소와 같다. 동사무소에 신고한 뒤에 실제로 이사를 해야한다.


# mv /linux/gangnam/ /linux/user3/

# ll /linux

합계 8

drwx------ 4 user3 user3 4096 2014-11-17 14:13 user3

drwx------ 4 user6 user6 4096 2014-11-18 12:52 user6




[문제2]


Q : user2 : testuser -> usertest

A : # usermod -c usertest user2


Q : user7 : tcsh -> bash

A : # usermod -s /bin/bash user7


Q : user9 : comment -> lastuser

A : # usermod -c lastuser user9




[문제3]


samadal 포함 모든 사용자를 /export/home/ 으로 변경하세요


변경후 정상로그인되는지 확인


# mkdir -p /export/home/

# mv /linux/user3 /export/home/

# mv /usertest/ /export/home/

# mv /export/home/usertest/* /export/home/

# mv /linux/user6/ /export/home/

# mv /test/user7/ /export/home/

# mv /home/samadal/ /export/home/

# mv /home/us* /export/home/


각자의 home directory 경로를 /export/home/ 으로 변경

치환 명령어 사용하면 편하다. ex) %s//home//export/home

# vi /etc/passwd




And


[08] passwd, shadow, group, gshadow, useradd, passwd, skel

|


- 2014.11.17




* 사용자(user) 추가 시 생성되는 것들 p64


1) /etc/passwd

2) /etc/shadow

3) /etc/group

4) /etc/gshadow

5) /home/ => $HOME

6) /var/spool/mail/




1. passwd : 사용자 정보파일


# tail -4 /etc/passwd

gdm:x:42:42::/var/lib/gdm:/sbin/nologin

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

samadal:x:500:500:madalgyo:/home/samadal:/bin/bash

        samadal - 사용자명

        : - 구분자

        x - Password

        500 - UID

        500 - GID

        madalgyo - comment, 별칭, 별명

        /home/samadal - $HOME

        /bin/bash - shell(명령어 해석기)



* linux shell 종류


# cat /etc/shells

        /bin/sh               // 최초로 개발된 쉘(bourn)본쉘, 복구 기본쉘

        /bin/bash           // 리눅스에서 가장 많이 사용하는 쉘, 오픈소스 기본응용 쉘

        /sbin/nologin     // 로그인되지 않은것, 시스템 쉘

        /bin/dash          // 데비안, 우분투 os 기본

        /bin/tcsh           // 확장C쉘, tomcat(java)화장 기능 쉘

        /bin/csh            // C쉘, C language 전용 기능 쉘

        /bin/ksh            // korn(콘)쉘, 유닉스에서 가장 많이 사용, 본쉘과 호환





2. shadow


예전엔 passwd 파일에 pw가 포함되어있었지만 보안상 shadow에 넣음


# tail -4 /etc/shadow

gdm:!!:16372::::::

sshd:!!:16372::::::

tcpdump:!!:16372::::::

samadal:$6$C1riYf4XBWlZXfcq$Kea4.kf0YnPpitJXPgC8ncwao2WhE3ccgOrt7inkXJBFqE61gRlkBIqP0N7ILgBXanh.aVmp8/NEdpo2FNAUs1:16372:0:99999:7:::

        samadal - 사용자명

        : - 구분자

        $6$C1riYf4X.... - SHA512

        16372 - 1970.1.1 기준으로의 생성 날자

        0 - 패스워드 변경 가능 날짜(if 1, pw변경 후 1일 뒤에 pw변경 가능)

        99999 - 패스워드 사용 가능 날짜(약 270년)

        7 - 패스워드 변경 만료일

        NULL - 기능정지, 기능+사용정지 기능 지정 가능

        NULL - 사용 기간 설정 (~까지)

        NULL - 예약만 되어있고 사용하지 않는 칸


* /etc/login.defs  에 shadow와 관련된 사항들이 적혀있다.





3. group


# tail -4 /etc/group

stapdev:x:158:

tcpdump:x:72:

slocate:x:21:

samadal:x:500:

        samadal - 그룹명

        : - 구분자

        x - Password

        500 - GID

        NULL - 해당 그룹원 명단





4. gshadow


# tail /etc/gshadow

rpcuser:!::

nfsnobody:!::

gdm:!::

sshd:!::

stapusr:!::

stapsys:!::

stapdev:!::

tcpdump:!::

slocate:!::

samadal:!!::

        samadal - 그룹명

        : - 구분자

        !! - 쓰레기값





5. home directory


# ls -l /home/     <- 아파트

합계 15

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

drwx------. 4 samadal samadal  1024 2014-11-17 12:43 samadal

                       집주인                                      동, 호수





6. mail


# ls -l /var/spool/mail/

합계 0

-rw-rw----. 1 rpc     mail 0 2014-10-30 01:52 rpc

-rw-rw----. 1 samadal mail 0 2014-10-30 01:59 samadal



*  /etc/skel  <- 사용자 생성될 때 file이나 dir 자동으로 생성될 수 있도록 해줌





7. useradd


useradd [option] [argument] ... [user]


[in /etc/passwd]

samadal:x:500:500:madalgyo:/home/samadal:/bin/bash   사용자 지정 skel

[option] :  -u   -g     -c            -d             -s            -m -k





ex)


user 생성시 각 6개 항목이 제대로 만들어 졌는지 확인


# useradd user1


/etc/passwd 확인

# tail -3 /etc/passwd

tcpdump:x:72:72::/:/sbin/nologin

samadal:x:500:500:madalgyo:/home/samadal:/bin/bash

user1:x:501:501::/home/user1:/bin/bash


/etc/shadow 확인

# tail -3 /etc/shadow

tcpdump:!!:16372::::::

samadal:$6$C1riYf4XBWlZXfcq$Kea4.kf0YnPpitJXPgC8ncwao2WhE3ccgOrt7inkXJBFqE61gRlkBIqP0N7ILgBXanh.aVmp8/NEdpo2FNAUs1:16372:0:99999:7:::

user1:!!:16391:0:99999:7:::


/etc/group 확인

# tail -3 /etc/group

slocate:x:21:

samadal:x:500:

user1:x:501:


/etc/gshadow 확인

# tail -3 /etc/gshadow

slocate:!::

samadal:!!::

user1:!::


/home/ 디렉터리 확인

# ll /home/

합계 16

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

drwx------. 4 samadal samadal  1024 2014-11-17 12:43 samadal

drwx------  4 user1   user1    1024 2014-11-17 13:51 user1


/var/spool/mail 확인

# ll /var/spool/mail/

합계 0

-rw-rw----. 1 rpc     mail 0 2014-10-30 01:52 rpc

-rw-rw----. 1 samadal mail 0 2014-10-30 01:59 samadal

-rw-rw----  1 user1   mail 0 2014-11-17 13:51 user1



* passwd 명령어로 사용자 비밀번호 변경해야 해당 사용자 사용 가능





ex)


testuser 라는 별명을 지정해주고 본쉘 적용시키는 user 추가


# useradd -c testuser -s /bin/sh user2

# tail -4 /etc/passwd

tcpdump:x:72:72::/:/sbin/nologin

samadal:x:500:500:madalgyo:/home/samadal:/bin/bash

user1:x:501:501::/home/user1:/bin/bash

user2:x:502:502:testuser:/home/user2:/bin/sh


# ll /home/

합계 17

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

drwx------. 4 samadal samadal  1024 2014-11-17 12:43 samadal

drwx------  4 user1   user1    1024 2014-11-17 13:51 user1

drwx------  4 user2   user2    1024 2014-11-17 13:56 user2






ex3)


Home directory를 /linux/gangnam 으로 주기


user3이 들어갈 아파트를 생성

# mkdir /linux/

# ls -ld /linux/

drwxr-xr-x 2 root root 4096 2014-11-17 13:57 /linux/


/linux/gangnam 이라는 동, 호수를 지정

# useradd -s /bin/tcsh -d /linux/gangnam user3

# tail -4 /etc/passwd

samadal:x:500:500:madalgyo:/home/samadal:/bin/bash

user1:x:501:501::/home/user1:/bin/bash

user2:x:502:502:testuser:/home/user2:/bin/sh

user3:x:503:503::/linux/gangnam:/bin/tcsh


# ll /home/ /linux/

/home/:

합계 17

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

drwx------. 4 samadal samadal  1024 2014-11-17 12:43 samadal

drwx------  4 user1   user1    1024 2014-11-17 13:51 user1

drwx------  4 user2   user2    1024 2014-11-17 13:56 user2


/linux/:

합계 4

drwx------ 4 user3 user3 4096 2014-11-17 13:59 gangnam





8. passwd


passwd : 현재 사용자의 passwd 변경 명령어

passwd user : user의 passwd 변경 명령어, 관리자는 pw 규칙 무시 가능




[문제 1]


/etc/skel/ 에 있는 모든 내용을 /etc/samskel/에 복사후

사용자 지정 skel 명령어를 이용 /etc/samskel로 user5 생성

단, 디렉터리 자체를 복사하면 안된다.


user5 생성 후 정상 로그인 되는지 확인하고

-bash-4.1 $ 이면 실패, [user5@samadal ~]$ 이 되도록 생성.

실패했을 경우 user55, user555.... 로 만드세요


오답 1)

# cp /etc/skel/* /etc/samskel/

# useradd -m -k /etc/samskel/ user5

  => -bash-4.1 & 로 뜸


오답 2)

# useradd -m -k /etc/samskel/ -s /bin/tcsh user55

  => [user55@samadal ~]$ 로 뜸



오답의 이유 : skel directory에 숨김파일도 있기 때문.


# ll -a /etc/skel/

합계 40

drwxr-xr-x.   4 root root  4096 2014-11-17 14:47 .

drwxr-xr-x. 119 root root 12288 2014-11-17 14:56 ..

-rw-r--r--.   1 root root    18 2014-10-16 22:52 .bash_logout

-rw-r--r--.   1 root root   176 2014-10-16 22:52 .bash_profile

-rw-r--r--.   1 root root   124 2014-10-16 22:52 .bashrc

drwxr-xr-x.   2 root root  4096 2010-11-12 09:54 .gnome2

-rw-r--r--.   1 root root   171 2014-10-18 07:43 .kshrc

drwxr-xr-x.   4 root root  4096 2014-10-30 01:51 .mozilla



숨김파일 및 숨김 디렉터리도 모두 복사한 후


# useradd -m -k /etc/samskel/ user555555


하면 성공. 즉  skel 디렉터리 안에 있는 숨김 녀석들도 모두 생성 해줘야 함.




[문제2]


/usertest/test(사용자)/public/(자동생성디렉토리)

생성 후 정상 로그인되는지 확인 필요

실패시 testt, testtt ,,,


# mkdir /usertest/

# mkdir /etc/skel/public/

# useradd -d /usertest/testtt testtt

# passwd testtt




And


[07] vi(2), 유용한 vi 명령어 메모

|


- 2014.11.14 수업




1. vi



1) 라인명령모드


행번호  출력하기

:set nu = :se nu              // set number


행번호 삭제

:set nonu = :se nonu       // set no number


치환 명령어

:[범위]s/[old]/[new]


ex)

5번째 행 치환

:5s/passwd/samadal


20~23행 치환

:20,23/PASS/madal


문서 전체 치환

:%s/MAX/dalma


g:중복문자도 모두 치환

:56s/i/a/g



외부명령어 실행

:! [command] // 잠시 vi 멈추고 외부 명령어 실행, alias작동 안함

:.! [command] // 내 커서가 있는 곳에 결과물 입력


ex)

:!ifconfig

:.!ifconfig



화면 분할

Ctrl + n w  // 수평으로 화면 분할

Ctrl + w w  // 창 이동

Ctrl + w q or :q  // 창 닫기



:f                                   // 현재 편집중인 파일 정보 보여줌

:e                                  // 문서 열어주는 기호. e! 하면 강제로 염

:w [경로]                        // 저장

:w >> [filename]             // 결과물을 다른 파일에 추가


:nr [filename]                // n라인 다음줄 밑에 [filename] 내용을 삽입

  ex) :3r ./b                    // 3라인 다음줄에 ./b 파일 내용 삽입


:nr! [command]              // n라인 다음줄에 [command] 결과물 삽입

  ex) :5r! ls -d                // 5라인 다음줄에 ls -d 결과물 삽입


:n(숫자)                          // n번째 행으로 이동



vi a b c 처럼 동시에 여러개의 창을 띄웠을 경우

:n // 다음 파일 보기

:N // 이전 파일 보기

:args // 내가 열어놓은 파일 목록 보기

:nn // n번째 뒤 파일 보기

  ex):3n // 3번째 뒤 파일 보기



vi 내에서 복사

5,12 co 2 // 5~12 줄을 2번째 밑에 복사. 이동은 co -> m




[문제]


/home/samadal/ 에 있는 모든 파일 삭제

        :!rm ./*


20번째 라인 밑에 자세한 출력내용(samadal 디렉터리에 있는 모든 파일들(a, b, c, d, e))을 삽입

        :!touch ./a ./b ./c ./d ./e


파일 안에 있는 내용 변경 : etc(madal), rc(sam)

        :%s/etc/madal/g

        :%s/rc/sam/g


5~12번째 라인을 2번째 라인 밑에 복사

        :5 8yy :2 p     or     :5,12 co 2


지금까지 작업한 모든 내용을 /test/sam.test 파일로 저장

        :!mkdir /test/

        :w /test/sam.test


/home/.sam.test 파일로 저장

        :w /home/.sam.test


/backup/madal 파일로 저장

        :w /backup/madal


빈문서 파일을 연 후 /backup/madal 파일 열기

        :enew!

        :e /backup/madal





2014.02.04 추가


유용한 vi명령어 (출처 : http://koreahojin.egloos.com/512216)



삽입 

I: 줄의 제일 앞에서 입력 

A: 줄의 제일 끝에서 입력 


콤보 command

4w: 4단어 skip후 이동 

4b: 4단어 skip후 이동 

4j,h,k,l: 커서이동시 지정한 수만큼 건너뛰므로 이동을 좀 더 빨리 할 수 있다. 



줄의 결합(J) 

2줄이 있고, 2째줄을 1째줄 끝에 붙이고 싶다면, 1째줄에서 J를 입력하면 된다. 



커서이동 

0: 줄의 처음 

^: 줄의 처음(글자가 시작되는 처음) 

$: 줄의 끝 

w: 단어단위 이동 

e: w와 같으나 단어의 끝으로 이동 

b: w의 반대방향으로 이동 

H, M, L: 커서를 화면 상,중,하로 이동 


검색(/후 검색할 단어입력) 

n: 뒤로 검색 

N: 앞으로 검색 



매크로 

ab aa aaaa: aa를 입력하면 aaaa로 자동변환 



치환 

s/pattern/replace: 현재줄의 첫번째 matching pattern치환 

s/pattern/replace/g: 현재줄의 모든 matching pattern치환 

%s/pattern/replace/g: 모든 줄의 치환 

line,lines/pattern/replace: 해당 범위의 치환 



저장 

w>> file: 지정한 파일에 추가 



윈도 split 

vi내에서 위아래로 윈도가 분활되면서 2개의 파일을 동시에 open/편집할 수 있다. 

ex-mode(:프롬프트상태)에서 'sp 파일이름' 

윈도우가 전환은 Ctrl+ww 



기타 

1). d의 경우 command모드로 계속 남아 있으나 c는 삭제후 insert모드로 변환한다. 

cc, c$, cw등은 유용하게 사용될 수 있다. 

2) .은 마지막 명령을 되풀이한다. 



visual모드 

윈도의 텍스트 에디터와 같이 선택부분이 반전되면서 복사,삭제등을 할 수 있다. 

v로 visual모드로 집입하여 커서키를 사용해 원하는 부분을 선택한다. 

복사는 y, 삭제/잘라내기는 d로 할 수 있다. 



vi설정(vim설정) 

자신의 홈디렉토리에 .vimrc를 생성하고 다음과 같이 할 수 있다. 

set ai 

set ts=4 

set nu 


각각 auto-indent, tab stop, numbering 



윈도에서 작업중 vi에 붙여넣기시 계단현상발생 방지 

:set paste 



위치기억(UltraEdit의 ALT-F2, F2와 동일한 기능) 

m{a-z}: 현재위치를 {a-z}로 북마크함 

`{a-z}: 기억해둔 {a-z}로 이동. 보통 한개만 등록했다면 그냥 ``를 사용하면 된다. 



레코딩 

설정파일의 주석추가/삭제시 유용하게 사용할 수 있다.(이미 vi에 매크로기능이 있지만, 레코딩이 

UltraEdit의 매크로기능과 유사하다.) 

q{a-z}: {a-z}로 레코딩 시작. {a-z}만 가능한게 아니고 실제 {0-9a-zA-Z"}를 적기 번거로워 이렇게 

표시만 한 것이다. 

q: 레코딩 종료 

@{a-z}: 레코딩 내용 적용(@@를 하면 바로 이전의 레코딩내용을 적용, N@@은 N으로 지정한 

숫자만큼 적용)




And


[06] 명령어 find, shutdown, vi(1) & FTP 방화벽 설정 관련(집)

|


- 2014.11.13 수업



1. find


find [경로] [-옵션] [이름]

        [경로] -name [이름] : 이름 검색

        [경로] -newer [이름] : 이름의 파일 이후에 수정, 변경한 것 검색

                -> touch 명령어와 함께 사용하면 효과적


* 추가 옵션

   -exec rm{} \;    : 찾아서 삭제하라는 추가 옵션

   -type f                : 파일 타입 검색하라는 추가 옵션

   -type d               : 디렉터리 타입 검색하라는 추가 옵션


ex)

# ll

합계 1

-rw-r--r-- 1 root root   0 2014-11-13 12:50 inittab

-rw-r--r-- 1 root root 884 2014-11-13 12:45 test


최근파일 검색

# find /home/ -newer test

/home/samadal

/home/samadal/inittab


검색하여 삭제

# find . -name "test*" -exec rm {} \;

# ll

합계 0

-rw-r--r-- 1 root root 0 2014-11-13 12:50 inittab


파일 타입 검색

# find / -name samadal -type f

/var/spool/mail/samadal


디렉터리 타입 검색

# find / -name samadal -type d

/home/samadal




[연습문제] p14


1) /down/ directory 생성

2) /down/ 에 test1, test2 생성

3) /down/ 에 test1, test2 를 /tmp에 각각 test3, test4로 복사

4) /down/test/ directory 생성

5) /down/test/ directory를 /tmp 로 이동

6) find 명령어를 통해 파일명 앞부분에 "test"문자열이 섞인 파일을 검색하면서 삭제

    (단, /tmp/와 /down/ 만 부분검색 하고 명령어는 한줄로)



# mkdir /down

# touch /down/test1 /down/test2

# ll /down

합계 0

-rw-r--r-- 1 root root 0 2014-11-13 13:01 test1

-rw-r--r-- 1 root root 0 2014-11-13 13:01 test2


# cp /down/test1 /tmp/test3

# cp /down/test2 /tmp/test4


# mkdir /down/test

# mv /down/test/ /tmp


부분 검색, 파일만 검색, 삭제 진행.

(사실 rm 은 파일만 지우기 때문에 구지 -type f 필요 없음)

# find /tmp /down -name "test*" -type f -exec rm {} \;





2. shutdown


시스템 종료

shutdown -h now = init 0 = halt = poweroff



시스템 재시작

shutdown -r now = init 6 = reboot



ex)

10분 뒤 종료

# shutdown -h +10


Broadcast message from root@samadal.madalgyo

        (/dev/pts/0) at 13:24 ...


The system is going down for halt in 10 minutes!


Ctro+c 눌러서 취소. shutdown -c 로도 가능.

^Cshutdown: Shutdown cancelled


shutdown 명령어를 실행할 구체적인 시간 설정

# shutdown -r 13:30


Broadcast message from root@samadal.madalgyo

        (/dev/pts/0) at 13:26 ...


The system is going down for reboot in 4 minutes!





3. vi


vi [파일명]


1) 라인명령모드


명령모드에서 :, /, ? 로 접근하게 되는 모드.


:q     종료

:q!    강제종료

/      글자 검색(위->아래)

?      글자 검색(아래->위)



2) 명령모드


기본 모드. 여러 명령어 옵션 실행 가능


h : 왼

j : 아래

k : 위

l : 오른

w : 단어의 처음, 왼->오, 공간 인식, 특수기호 인식 // forward

b : 단어의 처음, 오->왼, 공간 인식, 특수기호 인식 // back

W : 단어의 처음, 왼->오, 공간인식

B : 단어의 처음, 오->왼, 공간인식

e : 단어의 끝, 왼->오, 공간인식, 특수기호 인식 // end

E : 단어의 끝, 왼->오, 공간인식 // 각각의 대문자는 특수기호 인식 하지 않고 넘어간다.


^, 0 : HOME

$ : END

gg, [[ : 문서의 제일 처음으로 이동

G, ]] : 문서의 제일 마지막으로 이동

H : 화면의 처음 (Head)

M : 화면의 중간 (Middle)

L : 화면의 마지막 (taiL)


책갈피

        m + a~z : 지정

            A~Z

        ` + a~z : 이동         (쉬프트 안누른 ~)

          + A~Z

        ``      : 마지막 위치 이동


x : delete -> backspace

X : backspace (no delete)

dd : 행 삭제

숫자 + dd : 숫자 행만큼 삭제

u : 되돌리기

Ctrl + r : 앞으로

v : visual mode, 블럭지정



3) 입력(INSERT)모드


키보드로 내용물을 직접 입력하는 모드. 명령모드에서 아래들의 특정 키를 눌러 모드 진입 가능.


i : 커서 앞에서 입력

I : 맨 앞 행에서 입력

a : 커서 뒤에서 입력

A : 맨 뒤 행에서 입력

o : 커서 아래쪽에 행 삽입하여 입력

O : 커서 위쪽에 행 삽입하여 입력

s : 커서 내용 삭제한 뒤 커서 앞에서 입력

S : 행 삭제한 뒤 입력

r : 커서 내용 변경(한글자)

R : 수정 모드로 변경(한글의 insert)



4) 응용


커서 뒤에 모두 지우기 : d + $, D, n + x

커서 앞에 모두 지우기 : n + X, d + ^ , d + 0

단어지우기 : d + e, d + w

단어 복사하기 : y + e, y + w





* 집에서 FTP 사용하는 방법(방화벽 허용)


방화벽 - 허용되는 프로그램 - 다른프로그램 허용 - 찾아보기

- windows - system32 - ftp.exe - 열기 - 추가 - 목록 중 개인, 공용 추가 하기




And


[05] alias, touch, head, tail, more, less, nl, |(파이프), cat, ftp, date, clock, cal

|


- 2014.11.12 수업내용



※ Limadal_20141106_Class1_32bit 의 VMware 이미지.

   root / .$hooni203

   samadal / samadal




1. alias


[명령어 설명]


특정 문장 및 명령어에 대한 단축키 설정. 1회성으로 터미널 닫으면 없어짐


ex) alias 1='clear'


저장되어 있는 명령어의 목록 확인 : alias


※ ls -l : ll  으로 기본 설정되어있음.



※ alias에 저장 된 명령을 지울 때 : unalias [source]


ex) unalias 1





2. touch


[명령어 설명]


크기가 0이면서 현재 시간 정보가 있는 파일을 생성한다.

똑같은 명령어 쓰면 시간만 변경된 새 파일로 변경됨

기존에 있는 파일 이름을 쓰면 시간만 현재 시간으로 바뀜


touch [target]

-t [년월일시분] [target]     // 파일의 시간 정보 변경 가능


ex)

alias 에 저장되어 있는 단축키 = ls -l

# ll

합계 1

-rw-r--r-- 1 root root 884 2014-11-12 12:59 inittab


# touch ./testfile

# ll

합계 1

-rw-r--r-- 1 root root 884 2014-11-12 12:59 inittab

-rw-r--r-- 1 root root   0 2014-11-12 13:00 testfile


다시 touch 하면 시간이 바뀜

# touch ./testfile

# ll

합계 1

-rw-r--r-- 1 root root 884 2014-11-12 12:59 inittab

-rw-r--r-- 1 root root   0 2014-11-12 13:01 testfile


파일에서 시간만 바뀜

# touch ./inittab

# ll

합계 1

-rw-r--r-- 1 root root 884 2014-11-12 13:02 inittab

-rw-r--r-- 1 root root   0 2014-11-12 13:01 testfile


touch -t 년월일시분 대상

# touch -t 199908200422 ./testfile

# ll

합계 1

-rw-r--r-- 1 root root 884 2014-11-12 13:02 inittab

-rw-r--r-- 1 root root   0 1999-08-20 04:22 testfile





3. head


[명령어 설명]


파일의 내용 중 처음부터 아래로 10줄 출력


head [option] [source]

-n(number) [source] : 처음부터 n개 출력


ex)

위에서 3개만 출력

# head -3 /etc/passwd

root:x:0:0:root:/root:/bin/ksh

bin:x:1:1:bin:/bin:/sbin/nologin

daemon:x:2:2:daemon:/sbin:/sbin/nologin





4. tail


[명령어 설명]


파일의 내용중 마지막부터 위로 10줄 출력


tail [option] [source]

-n(number) [source] : 아래부터 n개 출력


ex)

# tail -3 /etc/passwd

sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin

tcpdump:x:72:72::/:/sbin/nologin

samadal:x:500:500:madalgyo:/home/samadal:/bin/bash





5. more


[명령어 설명]


내용이 많은 파일을 화면단위로 끊어서 출력한다

엔터 : 1줄 씩 내림

스페이스 : 1페이지 씩 내림


more [source]

q : 종료



ex)

# more /etc/passwd



more을 단독으로만 쓰면 파일만 볼 수 있다.

따라서 목록을 보여주는 다른 명령어와 함께 사용해야 한다.


# ls -l /etc/ | more

합계 1740

drwxr-xr-x.  5 root root   4096 2014-10-30 01:52 ConsoleKit

-rw-r--r--.  1 root root   4439 2014-07-17 00:02 DIR_COLORS

-rw-r--r--.  1 root root   5139 2014-07-17 00:02 DIR_COLORS.256color

-rw-r--r--.  1 root root   4113 2014-07-17 00:02 DIR_COLORS.lightbgcolor

drwxr-xr-x.  5 root root   4096 2014-10-30 01:54 NetworkManager

drwxr-xr-x.  2 root root   4096 2014-10-30 01:54 PackageKit

-rw-r--r--.  1 root root     45 2014-02-12 21:04 Trolltech.conf

drwxr-xr-x.  6 root root   4096 2014-10-30 01:54 X11

drwxr-xr-x.  3 root root   4096 2014-10-30 01:54 abrt

drwxr-xr-x.  4 root root   4096 2014-10-30 01:57 acpi

--More--



more 명령어의 단점 : 앞 페이지를 볼 수 없는 단점이 있다.





6. less


[명령어 설명]


more은 앞쪽 재검색이 불가능한 반면 less는 재검색이 가능한 명령어이다.

엔터 및 k : 1줄 아래로

j : 1줄 위로

q : 종료

스페이스 : 1페이지 아래로


역시나 ls -l /etc/ | less 처럼 사용 가능하다.


※ more는 명령어, less는 프로그램 이다.





7. nl (number line)


[명령어 설명]


총 몇행인지 궁금할 때 사용하는 명령어

행 번호를 붙여 출력하라는 명령어.



ex)

# nl /etc/passwd | less


nl 역시 파일에만 쓸 수 있는 명령어지만 명령어 조합으로 디렉터리에도 사용 가능하다.


# nl /etc/

nl: /etc/: 디렉터리입니다


맨 위 합계 표시도 갯수에 들어가는 것 주의

# ls -l /etc/ | nl





8. | (파이프)


명령어 | 명령어 | 명령어  처럼 서브 명령어를 여러개 사용 가능.


파이프를 쓰면 맨 뒤에서부터 적용된다.


* 파이프를 사용 할 떄에는 명령어의 성격을 생각하며 사용해야 한다.


ex)

less가 작동하지 않음. nl로 행번호 붙여서 출력한 뒤에 less를 진행할 수 없기 때문.

# ls -l /etc/ | less | nl





9. cat


[명령어 설명]


파일 내용 "출력"

ex) cat /etc/passwd   =   cat < /etc/passwd


파일 내용 "입력"

ex) cat /etc/passwd > /testfile


파일 "생성"

ex) cat > ./test   -> 내용입력 -> ctrl+d (정상종료) 

* ctrl+c : 강제 종료, ctrl+z : 강제정지


파일 내용 "추가"

ex) cat >> ./test

아래쪽에 추가하여 기재 가능


파일 내용 "병합"

ex) cat ./a ./b > ./c)

a 밑에 b가 합쳐져서 c 만듬


행번호 붙여 cat 출력

# cat -n /etc/passwd





10. ftp 접속 (p183)


[실습 순서]


1) window에서 index.html 파일 생성 : d드라이브에서 파일 새로 만들기

2) 실행(win_key+r) -> cmd -> 드라이브 변경(d:)

3) ftp 리눅스ip 입력(ex. ftp 192.168.1.142)

4) 계정, password 입력 -> 오류시 quit 입력      // 기본적으로 root 는 ftp 사용 불가

5) login successful 메시지 확인

6) put [source] : 업로드 명령어  &  get [source] : 다운로드 명령어





11. date, rdate


[명령어 설명]


date : 현재의 자신의 서버 시간을 확인하는 명령어.

rdate : 타임서버 관련 명령어


date [월일시분년]  :  해당 시간으로 서버 시간을 변경


ex )

현재 시간 확인

# date

2014. 11. 12. (수) 14:56:39 KST


옵션 시간으로 내 서버 시간 변경

# date 082013201999

1999. 08. 20. (금) 13:20:00 KST


# date

1999. 08. 20. (금) 13:20:02 KST


time.bora.net 서버의 현재 시간 확인

# rdate -p time.bora.net

rdate: [time.bora.net]  Wed Nov 12 14:59:35 2014


# date

1999. 08. 20. (금) 13:21:43 KST


time.bora.net 서버 시간으로 내 서버 시간을 맞춤

# rdate -s time.bora.net

# date

2014. 11. 12. (수) 15:00:45 KST





12. clock


[명령어 설명]


clock : 자세한 시간 보여줌. (nano second 까지)


ex)

# clock

2014년 11월 12일 (수) 오후 10시 00분 48초  -0.924519 seconds





13. cal (calendar)


[명령어 설정]


달력을 출력하는 명령어.


ex)

현재 시각 기준의 달력 출력. date 설정에 따라 바뀜

# cal


2015년 달력 출력

# cal 2015


1999년 08월 20일 달력 출력

# cal 20 08 1999




And


[04] cp, mv, mkdir, rmdir, rm

|


- 2014.11.11 수업 내용




1. cp (copy)


파일 및 디렉토리에 관한 첫번째 명령이이기 때문에 최대한 많은 예제를 넣었다.



1) 명령어 설명

 

cp : 파일 및 디렉토리 복사, 이름 변경 가능 

        cp [-option] [source] [source] [source] .... [target]

 

* wild card : 모든 것을 의미한다. 

        -r : 디렉토리 복사, 하위디렉터리 및 파일 모두 복사 

        -p : 원본파일의 소유주, 그룹, 권한, 시간을 그대로 복사 


최상위 / 에 backup 디렉토리 생성

# mkdir /backup/


현재 있는 /home/samadal/ 의 디렉토리 내용 확인

# ls

a


폴더 생성된 것 확인

# ls -ld /backup/

drwxr-xr-x. 2 root root 4096 2014-11-11 12:43 /backup/  


/etc/inittab 파일을 /backup/ 디렉토리로 복사

# cp /etc/inittab /backup/

# ls -l /backup/  

합계 4  

-rw-r--r--. 1 root root 884 2014-11-11 12:44 inittab  


login.defs 파일 복사

# cp /etc/login.defs /backup/

# ls -l /backup/  

합계 8  

-rw-r--r--. 1 root root  884 2014-11-11 12:44 inittab  

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


grub.conf 파일 복사

# cp /boot/grub/grub.conf /backup/


전체 확인

# ls -l /backup/

합계 12  

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

-rw-r--r--. 1 root root  884 2014-11-11 12:44 inittab  

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



[실습1]  - /bakcup/ 디렉터리에 있는 파일을 /home/samadal 로 복사


항상 원본 소스와 대상 디렉터리가 있는지 확인하는 습관! 

# ls -l /backup/

합계 12  

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

-rw-r--r--. 1 root root  884 2014-11-11 12:44 inittab  

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


절대경로로 복사

# cp /backup/grub.conf /home/samadal/grub.conf

# ls -l /backup/

합계 12  

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

-rw-r--r--. 1 root root  884 2014-11-11 12:44 inittab  

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


# ls -l  

합계 4  

drwxr-xr-x. 3 root root 1024 2014-11-10 13:47 a  

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


상대경로로 복사 

# cp /backup/inittab ./

# ls -l

합계 6  

drwxr-xr-x. 3 root root 1024 2014-11-10 13:47 a  

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

-rw-r--r--. 1 root root  884 2014-11-11 12:49 inittab


이름 변경해서 복사 가능.

# cp /backup/login.defs ./login 


확인

# ls -l  

합계 9  

drwxr-xr-x. 3 root root 1024 2014-11-10 13:47 a  

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

-rw-r--r--. 1 root root  884 2014-11-11 12:49 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 12:50 login



*

디렉토리명 뒤에 / 붙이는 습관이 없다면 디렉토리로의 복사 중 오타가 났을 경우

해당 디렉토리로 복사가 되는 것이 아닌 변경된 파일 명으로 엉뚱한 곳에 저장이 될 수도 있다.



 

[실습2]  - saladal로 복사한 파일들을 /home/test/c/ 로 복사


원본, 상대 디렉터리 확인

# ls -l

합계 9  

drwxr-xr-x. 3 root root 1024 2014-11-10 13:47 a  

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

-rw-r--r--. 1 root root  884 2014-11-11 12:49 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 12:50 login  


# ls -ld /home/test/c/

drwxr-xr-x. 3 root root 1024 2014-11-10 13:50 /home/test/c/


복사 시작

# cp ./grub.conf /home/test/c/

# ls -l /home/test/c/  

합계 4  

drwxr-xr-x. 2 root root 1024 2014-11-10 13:50 d  

-rw-------. 1 root root  739 2014-11-11 13:01 grub.conf  


# cp /home/samadal/inittab ../test/c/  

# ls -l /home/test/c/  

합계 6  

drwxr-xr-x. 2 root root 1024 2014-11-10 13:50 d  

-rw-------. 1 root root  739 2014-11-11 13:01 grub.conf  

-rw-r--r--. 1 root root  884 2014-11-11 13:02 inittab  


# cp ./login ../test/c/login.defs  

# ls -l /home/test/c/  

합계 9  

drwxr-xr-x. 2 root root 1024 2014-11-10 13:50 d  

-rw-------. 1 root root  739 2014-11-11 13:01 grub.conf  

-rw-r--r--. 1 root root  884 2014-11-11 13:02 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 13:03 login.defs

 



[실습3]  - /bakcup/의 파일들을 /home/test/c/d/ 로 복사! 


- 생략




[연습문제]

 

/home/test/c/d/ 안에 있는 모든 내용을

/home/samadal/a/b/ 디렉터리에 복사


# ls -l /home/test/c/d/  

합계 7  

-rw-------. 1 root root  739 2014-11-11 13:05 grub.conf  

-rw-r--r--. 1 root root  884 2014-11-11 13:06 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 13:06 login  


# ls -ld /home/samadal/a/b/  

drwxr-xr-x. 2 root root 1024 2014-11-10 13:47 /home/samadal/a/b/


# cp /home/test/c/d/grub.conf /home/samadal/a/b/  

# ls -l /home/samadal/a/b/  

합계 2  

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


# cp /home/test/c/d/inittab ./a/b/  

# ls -l /home/samadal/a/b/ 

합계 4  

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

-rw-r--r--. 1 root root 884 2014-11-11 13:15 inittab  


# cp ../test/c/d/login ./a/b/  

# ls -l ./a/b/  

합계 7  

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

-rw-r--r--. 1 root root  884 2014-11-11 13:15 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 13:15 login


*

복사할 대상이 많은 경우 - Wild card(*) 를 사용하면 된다.


ex)

# cp /home/test/c/d/* ./a/b/



2) cp 명령어 옵션

 

안되는 예)

# cp /backup/ ./

cp: omitting directory `/backup/'

 


* -r


안에 있는 모든 것을 복사하는 옵션


# cp -r /backup/ ./ 

# ls -l  

합계 11  

drwxr-xr-x. 3 root root 1024 2014-11-10 13:47 a  

drwxr-xr-x. 2 root root 1024 2014-11-11 13:27 backup  

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

-rw-r--r--. 1 root root  884 2014-11-11 12:49 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 12:50 login  


# ls -l ./backup/ 

합계 7  

-rw-------. 1 root root  739 2014-11-11 13:27 grub.conf  

-rw-r--r--. 1 root root  884 2014-11-11 13:27 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 13:27 login.defs 



* -p


소유자 및 시간도 그대로 복사하는 옵션

복사를 하게 되면 복사한 계정으로 새로운 소유권이 지정되며 시간도 복사한 시간으로 변경된다.


소유권 및 시간까지 그대로 복사.

# cp -p ./.kshrc ./ksh

# ls -al ./.kshrc

-rw-r--r--. 1 samadal samadal  171 2014-10-16 01:02 .kshrc  


# ls -l

-rw-r--r--. 1 samadal samadal  171 2014-10-16 01:02 ksh

-rw-r--r--. 1 root    root    1816 2014-11-11 12:50 login




 

2. mv (move)



1) 명령어 설명


mv [source] [source] [source] [target]


파일 및 디렉토리 이동, 이름 변경 가능. 옵션 있긴 하지만 사용할일 거의 없다.




[실습1]


/backup/ 에 있는 파일을 /home/samadal/a/ 로 이동

 

# ls -l /backup/

합계 12  

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

-rw-r--r--. 1 root root  884 2014-11-11 12:44 inittab  

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


# ls -l ./a/  

합계 2  

drwxr-xr-x. 2 root root 1024 2014-11-11 13:15 b  


# mv /backup/grub.conf ./a/  


ls 명령으로 동시에 2개를 볼 수 있다.

# ls -l /backup/ ./a/ 

./a/:  

합계 4  

drwxr-xr-x. 2 root root 1024 2014-11-11 13:15 b  

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

  

/backup/:  

합계 8  

-rw-r--r--. 1 root root  884 2014-11-11 12:44 inittab  

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

...  


이동 + 이름 변경

# mv /backup/login.defs ./a/login

# ls -l /backup/ ./a/

  

./a/:  

합계 9  

drwxr-xr-x. 2 root root 1024 2014-11-11 13:15 b  

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

-rw-r--r--. 1 root root  884 2014-11-11 12:44 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 12:45 login


/backup/:  

합계 0




[문제]

 

./a/ 디렉토리에 있는 3개의 파일(grub.conf, inittab, login)을 /backup/ 디렉토리로 이동

 

# ls -l /backup/ ./a/  

./a/:  

합계 9  

drwxr-xr-x. 2 root root 1024 2014-11-11 13:15 b  

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

-rw-r--r--. 1 root root  884 2014-11-11 12:44 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 12:45 login  

  

/backup/:  

합계 0


와일드카드 (*)는 조심히 써야한다.

# mv ./a/* /backup/

# ls -l /backup/ ./a/  

./a/:  

합 0


원본 디렉터리에 있던 /b/ 디렉터리도 함께 옮겨졌다.. *는 조심히 쓸 것!  

/backup/:  

합계 16  

drwxr-xr-x. 2 root root 4096 2014-11-11 13:15 b

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

-rw-r--r--. 1 root root  884 2014-11-11 12:44 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 12:45 login  


mv는 옵션 없이도 디렉터리를 자유롭게 이동 가능하다. 

# mv /backup/b/ ./a/

# ls -l /backup/ ./a/  

./a/:  

합계 2  

drwxr-xr-x. 2 root root 1024 2014-11-11 13:15 b

  

/backup/:  

합계 12  

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

-rw-r--r--. 1 root root  884 2014-11-11 12:44 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 12:45 login


# ls -l /backup/  

합계 12  

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

-rw-r--r--. 1 root root  884 2014-11-11 12:44 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 12:45 login  





3. mkdir (make directory)


1) 명령어 설명

 

디렉토리 생성


mkdir [option] [target]

        -p : 하위디렉터리 생성 시 상위디렉터리 생성


ex)

# mkdir /backup/





4. rmdir (remove directory)


1) 명령어 설명


디렉토리 삭제(빈 디렉터리만 삭제)

 

rmdir [option] [source] 

        -p : 디렉터리 삭제시 상위디렉터리도 삭제(단, 빈 디렉터리만 삭제 가능)


ex) 

상위 디렉터리까지 생성

# mkdir -p /a/b/c/d/e/f/g/

# ls -ld /a/b/c/d/e/f/g/  

drwxr-xr-x. 2 root root 4096 2014-11-11 14:22 /a/b/c/d/e/f/g/  


최상위인 / 까지 삭제 시도함

# rmdir -p /a/b/c/d/e/f/g/

rmdir: failed to remove directory `/': 장치나 자원이 동작 중 


a 부터는 빈 디렉터리였기 때문에 a 부터 모두 삭제 됨

# ls -l /a/

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





5. rm (remove)


1) 명령어 설명


파일 및 디렉터리 삭제(삭제 시 사용자에게 물어보며 삭제)


rm [option] [source] 

        -f : 삭제 시 사용자에게 물어보지 않고 삭제 

        -r : 디렉터리 삭제 및 하위 디렉털, 파일 삭제 

              (단, 삭제시 사용자에게 물어보며 삭제)

 

ex) 

# ls -l /home/test/c/d/  

합계 7  

-rw-------. 1 root root  739 2014-11-11 13:05 grub.conf  

-rw-r--r--. 1 root root  884 2014-11-11 13:06 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 13:06 login  


# rm /home/test/c/d/grub.conf  

rm: remove 일반 파일 `/home/test/c/d/grub.conf'?  


y 혹은 yes 를 눌러야만 삭제 됨

# rm /home/test/c/d/grub.conf 

rm: remove 일반 파일 `/home/test/c/d/grub.conf'? y

# ls -l /home/test/c/d/

합계 5  

-rw-r--r--. 1 root root  884 2014-11-11 13:06 inittab  

-rw-r--r--. 1 root root 1816 2014-11-11 13:06 login



* 해커들이 맨 마지막에 하는 명령어 : rm -rf /




And


[03] Linux 명령어 구조, 절대경로vs상대경로, pwd, cd, ls, clear

|


- 2014.11.10 수업 내용



1. Linux 명령어 구조

 

명령어 -option--sub_option Path

 

* 옵션끼리는 -을 반복하여 적지 않아도 된다. ex) ls -alh





2. pwd


pwd (print working directory) : 현재 작업 중인 디렉토리의 절대 경로를 보여준다.


ex)

# pwd

/etc/sysconfig/network-scripts


 

* 현재의 위치가 어디인지 알기 위해 수시로 명령어를 실행하는 습관을 들여야 한다.



① 절대경로 : 최상위 디렉토리인 / 부터 시작하는 위치. 절대적인 위치.

② 상대경로 : 현재 작업하고 있는 디렉토리에서의 상대적인 위치.

               ex) 현재 위치 : ./

 




3. cd


cd (change directory) : 디렉토리 변경. 원하는 디렉토리로 이동한다.


ex)

[root@localhost ~]# cd /etc/sysconfig/network-scripts/

[root@localhost network-scripts]# pwd

/etc/sysconfig/network-scripts


① ./ : 현재 디렉토리

② ../ : 상위 디렉토리

③ ~ : 로그인 된 사용자의 홈 디렉토리로 이동

ex)

[root@localhost ~]# cd ~

[root@localhost ~]# pwd

/root


④ ~계정명 : 지정된 계정의 홈 디렉토리로 이동

ex)

[root@localhost ~]# cd ~samadal

[root@localhost samadal]# pwd

/home/samadal





4. ls


ls (list segment) : 디렉토리의 목록 보기


ls 는 자주 쓰는 명령어이기 때문에 주요 옵션에 대해 자세히 알아두는 것이 좋다.


ex) /home/samadal 에서의 ls

[root@localhost samadal]# ls

a  Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos


 

① -a (all) : .(숨김파일)을 포함한 경로 안의 모든 파일과 디렉토리 표시

ex) /home/samadal 에서의 ls -a

[root@localhost samadal]# ls -a

.              .bash_logout   .dbus      .gconf   .gstreamer-0.10  .kshrc     Pictures       Templates

..             .bash_profile  Desktop    .gconfd  .gtk-bookmarks   .local     Public         Videos

a              .bashrc        Documents  .gnome2  .gvfs            .mozilla   .pulse         .xsession-errors

.abrt          .cache         Downloads  .gnote   .ICEauthority    Music      .pulse-cookie

.bash_history  .config        .esd_auth  .gnupg   .imsettings.log  .nautilus  .ssh


② -l (list) : 지정한 디렉토리의 내용을 자세히 출력

ex) /home/samadal/ 에서의 ls -l

# ls -l

total 18

drwxr-xr-x. 3 root    root    1024 Nov 10 14:02 a

drwxr-xr-x. 2 samadal samadal 1024 Nov 10 17:54 Desktop

drwxr-xr-x. 2 samadal samadal 1024 Nov 10 17:54 Documents

drwxr-xr-x. 2 samadal samadal 1024 Nov 10 17:54 Downloads

drwxr-xr-x. 2 samadal samadal 1024 Nov 10 17:54 Music

drwxr-xr-x. 2 samadal samadal 1024 Nov 10 17:54 Pictures

drwxr-xr-x. 2 samadal samadal 1024 Nov 10 17:54 Public

drwxr-xr-x. 2 samadal samadal 1024 Nov 10 17:54 Templates

drwxr-xr-x. 2 samadal samadal 1024 Nov 10 17:54 Videos


   -a 옵션과 함께 쓰면 좋다.


ex) /home/samadal/ 에서의 ls -al

[root@localhost samadal]# ls -al

total 78

drwx------. 27 samadal samadal 1024 Nov 10 17:55 .

                              ...

drwxr-xr-x.  2 samadal samadal 1024 Nov 10 17:54 Templates  

drwxr-xr-x.  2 samadal samadal 1024 Nov 10 17:54 Videos  

-rw-------.  1 samadal samadal 2368 Nov 10 17:55 .xsession-errors


* 맨 앞에 d 라고 되어 있는 것은 디렉토리, - 로 되어 있는 것은 파일이다.


③ -d : 지정된 디렉토리의 정보 출력

ex) /home/samadal/ 에서의 -ld 옵션

[root@localhost samadal]# ls -ld /home/samadal/  

drwx------. 27 samadal samadal 1024 Nov 10 17:55 /home/samadal/


상위 폴더에 파일 및 디렉토리의 개수가 적다면 상위 폴더에서 ls -l 로 해당 디렉토리의 정보를 볼 수도 있지만

특정 디렉토리의 정보만 필요할 때 사용하면 좋을 것 같다.


④ -F : 파일 형식을 알리는 문자를 각 파일 뒤에 추가한다.

/ : 디렉토리

-> and @ : symbolic link(바로가기). -> 는 -l 옵션과 함께 썼을때 나오며 '사본 -> 원본'의 형식이다.

* : 실행파일


⑤ -R : 하위 경로와 그 안에 있는 모든 파일들도 같이 나열

ex) /home/samadal/ 에서의 ls -R

[root@localhost samadal]# ls -RF 

.: 

a/  Desktop/  Documents/  Downloads/  Music/  Pictures/  Public/  Templates/  Videos/

 

./a: 

b/

 

./a/b:

 

./Desktop: 

      ... 

./Templates:

./Videos:


⑥ -h : 사용자가 보기 편한 단위로 용량 표시. -l 명령어에서 맨 위 total이 용량에 관한 숫자인데 뒤에 단위를 붙여준다.

        (보여지는 용량의 합이 total의 값과 다르지만 이유에 대해선 추 후 공부 예정)


이 외에도 UID(user id), GID(group id)를 보여주는 -n 옵션이 있다.


* -l 옵션 시 첫 열에 나와있는 문자들의 모음이 '허가권'에 관련된 내용이지만 추 후 필요할 때 다시 공부 예정





5. clear


clear : 화면을 깨끗하게 해주는 명령어.




And


[02] Linux의 특징 및 Prompt의 구조, Putty 설정 팁

|


- 2014.11.10



1. Linux의 특징


1) 권한을 갖는다


소유권 / 허가권




2) 다중 사용자 환경을 지원한다.


multi user mode & multi tasking 지원




3) 대소문자를 구별한다.




4) 확장자가 따로 존재하지 않는다.


Windows 에서 사용하는 확장자의 개념이 없다.






2. Prompt의 구조


1) Prompt 란?


명령어를 입력 받아 실행할 수 있는 상태



2) Linux의 prompt 구조


기본형)


[root@localhost ~]#

[user@localhost ~]$


① [, ] : prompt의 구분기호. 서버 정보와 계정 상태를 나타냄

② root 및 user : 서버에 로그인한 사용자 계정 명

③ @ : 계정명과 서버 이름의 구분 기호

④ localhost : 리눅스 시스템의 호스트명, 즉 서버의 이름 (HOSTNAME)

                (/etc/sysconfig/network)

⑤ ~ : 현재 작업 디렉토리의 위치. 경로의 마지막 경로명

⑥ # 및 $ : 관리자(root)의 경우 #, 일반 사용자의 경우 $






3. Putty 설정


1) ifconfig로 내 ip 확인


# ifconfig




2) putty 설정 하기


① ifconfig 로 알게 된 ip 주소를 Host Name에 입력

② Window - Lines of scrollback(이전 화면 저장 줄 수) : 20000

└ Appearance - Cursor appearance : Cursor blinks_check (커서 깜빡임)

- Font setting - Change : 글꼴_Consolas, 크기 설정

└ Font quality : Clear Type

└ Behaviour : Full screen on Alt-Enter_check (전체화면)

└ Translation - Remote character set : UTF-8

└ Colours - 배경은 어둡게, 글씨는 밝게 (검정 배경에 녹색 글씨 추천)




And


[01] CentOS 6.6 설치, 주요 디렉토리 설명, swap

|


- 2014.11.07 ~ 08 수업내용



※ VMware 는 개인적으로 구하여 진행




1. CentOS 설치


1) 파티션


사용자 레이아웃 선택하여 진행

20G 용량 기준이며, 포맷 형식은 기본 형식으로 진행


파티션    용량(mb)

/boot   -  200

swap   -  4096 (파티션은 아님)

/usr     -  6000 

/var     -  2000

/home -  200

/         -  나머지



2) 설치 종류 선택


Desktop - 추가기능 지금선택


기반시스템 - 레거시 유닉스 호환성 - ksh~~

            └ 서버 - FTP 서버



3)


설치 완료

reboot 설정 완료 직전 발생하는 kdump 오류 : 가상으로 돌리기 때문에 뜨는 오류. 상관할 필요 없음



4) VMware를 더 편하게 사용하기 위한 tool 설치 가능.


VM 상단 메뉴 중 VM - Install VMware Tools 클릭하면 VMware Tool이 마운트 된다.

vmware~.tar.gz 파일 안에 있는 vmware-install.pl 을 실행하여 엔터로 넘어가다가

5~6번째 쯤에 있는 ...kenel [no]  에서 yes를 입력 후 계속 엔터를 쳐 설치를 마친 뒤 재시작 하면 완료.





2. 주요 디렉토리 설명


1) / : 최상위 디렉토리


2) /boot/ : 부팅과정에서 필요한 정보 파일  (≒ boot.ini)


3) /bin/ : 기본적인 명령어.  (≒ windows)


4) /root/ : root 의 홈 디렉토리  (≒ usersadministrator)


5) /lost+found/ : 각 파티션마다 1개씩 있는 것.


6) /selinux/ : 방화벽을 감싸는,  2차 보안 툴


7) /home/ : 관리자 이외의 사용자의 홈 디렉토리가 생성되는 곳. 추 후 보안을 위해 다른 곳으로 이동해야 함


8) /etc/ : 관리자용 명령어 모음.


9) /lib/ : 각종 언어를 위한 라이브러리


10) /mnt/ : 원격 장치들이 지정된 위치


11) /dev/ : 인터페이스를 담당하는 파일들이 있는 위치


12) /media/ : cdrom 등을 적용시키기 위한 곳


13) /sbin/ : 시스템 운영 관리를 위한 명령 파일. 용량이 큰 명령어는 /usr/sbin/ 에 있다.  (≒ dll 파일들)


14) /usr/ : 용량이 크고 자주 사용되지 않는 파일들.  (≒ Program files)


15) /proc/ : 메모리, cpu, disk 등의 정보를 담고 있는 곳.


16) /tmp/ : 잠시 사용되는 임시 파일


17) /var/ : log 등이 있으며 자주 변경되는 시스템 파일들을 가지고 있음.





3. swap : 가상메모리


swap 은 '교환하다' 라는 뜻이다.

할당된 물리적 메모리가 부족할 시 사용하지 않는 load 된 메모리를 swap 메모리로 이동한 뒤 필요한 작업을 수행한다.

후에 swap 에 load되어 있는 메모리를 사용할 시, 물리 메모리에 있는 내용과 '교환'한다.




And


prev | 1 | 2 | 3 | 4 | next