유용한 vi명령어

LINUX/기본 2009. 4. 13. 17:13

삽입
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으로 지정한 숫자만큼 적용)

ctags사용
쉘에서 ctags -R하여 모든 소스에 대해 인덱스 생성
vi를 실행하고 검색할 단어를 :ta tag로 지정하든지, 단어가 있는 곳에 커서를 둔다.
해당함수(오브젝트)가 정의된 곳으로 가기: Ctrl + ]
되돌아가기: Ctrl + t

여러 파일 편집
vi a.c b.c c.c와 같이 여러 파일을 지정한다.
args: 파일목록 표시
n: 다음파일 편집(vi시작지 지정하지 않는 파일은 'n 파일이름'이로 지정하면 된다.)
rew: 이전 파일 편집(vim에선 prev를 사용해도 된다)
*현재 편집중인 파일을 저장해야 다음 파일을 수정할 수 있음에 주의
(불편한 편집이 아닐 수 없다.)

여러줄을 주석으로 처리할때
10줄을 주석기호 #을 사용하여 주석처리하려면 다음과 같이 하면 된다.
우선, 첫째줄에 #를 붙이고, 두째줄로 넘어와 9.를 입력하면 된다.
.(period)는 마지막에 수행한 명령어를 반복하는 명령이다.
Posted by 달팽이맛나
,



시스템의 주기적인 cron작업의 설정, 수정

사용방법

crond 데몬이 실행상태에 있어야 하며
/etc/rc.d/init.d/crond 스크립트에 의해 시작,종료,재시작
/etc/rc.d/init.d/crond start
/etc/rc.d/init.d/crond restart
/etc/rc.d/init.d/crond stop

사용자 지정
etc/cron.allow -> root이외의 사용자도 설정할수 있다.
이 파일을 생성하게 되면 root도 이 파일에 등록해야 한다.
etc/cron.deny -> 사용 거절할 사용자 목록

cron 목록 보기

crontab -l 설정 목록
crontab -e 설정 수정 vi에디터로 실행 -> /var/spool/cron/root 파일을 연 것이다.

cron 생성하기

 첫번째  분. 0~59분
 두번째  시. 0~23시
 세번째  일.1~31일
 네번째  월.1~12월
 다섯번째  요일.1:월, 2:화~7,0:일요일
 여섯번째  실행할 명렁어

"*" : 모든 숫자
"-" : 기간(1-12)
"," : 가각의 숫자 (5,7,9)

cron 삭제 하기

root의 권한으로 root의 cron 삭제
root로 로그인 -> crontab -r

root의 권한으로 일반사용자의 cron 삭제
root로 로그인 -> crontab -u 계정명 -r

사용자의 권한으로 일반사용자의 cron 삭제
kwkim(일반사용자 계정)의 권한으로 -> crontab -r

kwkim의 cron 삭제 -> /var/spool/cron/kwkim파일이 삭제

 


Posted by 달팽이맛나
,
◇ 가상 호스트 설정

* 네임기반의 virtual host

www.a.two.oracle         ftp.a.two.oracle

이 두 개의 도메인의 IP는 172.30.4.43으로 동일하다.

이를 구분해 주기 위해서 가상호스트를 사용한다.

* DNS 서버에 호스트 등록

    [/var/named/chroot/var/named/two.oracle] >  www.a    IN A     172.30.4.43

                                                                        ftp.a        IN A     172.30.4.43 을 추가

   저장 후 , service named restart

 

* 웹 페이지가 저장될 기본 폴더를 생성

    [/] > mkdir /home1/www

    [/] > mkdir /home1/ftp

 

* httpd.conf 파일을 수정

    [/usr/local/apache/conf/httpd.conf] > 142line #servername 172.30.4.43:80

                                                            133line ServerAdmin you@example.com <- 주석 풀기

                                                            149line DocumentRoot "/usr/local/apache/htdocs"

                                                            <Directory /home1>
                                                                    Options Indexes FollowSymLinks
                                                                    AllowOverride None
                                                                    Order allow,deny
                                                                    Allow  from all ((모든 사람들이 접근이 가능하게.
                                                            </Directory> ((추가 내용

                                                            441line # Virtual hosts
                                                            442line    Include conf/extra/httpd-vhosts.conf <- 주석 풀기

                                                           

    [/usr/local/apache/conf/extra/httpd-vhosts.conf] > 19line NameVirtualHost 172.30.4.43:80

<VirtualHost 172.30.4.43:80>
#    ServerAdmin webmaster@dummy-host.example.com
    DocumentRoot "/home1/www"
    ServerName www.a.two.oracle
#    ServerAlias www.dummy-host.example.com
#    ErrorLog "logs/dummy-host.example.com-error_log"
#    CustomLog "logs/dummy-host.example.com-access_log" common
</VirtualHost>

<VirtualHost 172.30.4.43:80>
#    ServerAdmin webmaster@dummy-host2.example.com
    DocumentRoot "/home1/ftp"
    ServerName ftp.a.two.oracle
#    ErrorLog "logs/dummy-host2.example.com-error_log"
#    CustomLog "logs/dummy-host2.example.com-access_log" common
</VirtualHost>
↑↑↑

내용 수정

* 전 과정 후에 service network restart

                  service named restart

                  service httpd restart

 

* 확인

               http://www.a.two.oracle   ((/home1/www에 저장된 index.html 파일이 제대로 뜨는지 확인한다.

               http://ftp.a.two.oracle  ((/home1/ftp에 저장된 index.html 파일이 제대로 뜨는지 확인한다.

 

> 제로보드 설치 <

 

* zb4pl8.tgz 파일 받기

* 압축파일이므로 tar xvfz zb4pl8.tgz 로 풀어준다.

* 압축을 풀어주면 zb4pl8 폴더가 생긴다.

* [/down/apm/] > cp -r bbs /home1/www

* [/home1/www] > chmod 707 bbs

* 연결할 DB 생성

* [/home1/www] > mysql -u root -p , 패스워드 입력 후 프롬프트가 mysql> 로 변경된다.

* mysql> create database www;

* mysql> show databases;

* mysql> quit

* 웹 페이지를 열어서 http://www.a.two.oracle/bbs/install.php 를 연다.

* 제로보드 설치 시작페이지가 열린다.

* 제로보드 설치... 완료.

 

> FTP 서버 <

 

* proftph-1.3.1.tar.gz 파일 받기

* zip파일이므로 tar xvfz proftph-1.3.1.tar.gz 로 풀어준다.

* 압축을 풀어주면  proftph-1.3.1 폴더가 생긴다.

* ftp 서버를 사용할 환경을 설정

> [/down/apm/proftpd-1.3.1] > ./configure   --prefix=/usr/local/proftpd ((설치될 경로

                                                                --enable-autoshadow ((사용자 암호를 자동으로 암호화하는 옵션

                                                                --with-modules=mod_ratio ((모듈(dafault값)

* 컴파일 작업

    └> [/down/apm/proftpd-1.3.1] > make;   make install                    

                                                     └> 바이너리파일로           └>인스톨 작업

*확인

     └> [/usr/local] > ls

               ((proftp폴더가 생성되었는지 확인

* proftp 환경 설정하기

   [/etc/proftpd.conf] > 파일 수정

> proftpd.conf <

ServerName          "FTP Server"

ServerType           standalone -> standalone방식으로 실행  ((xinetd방식도 있다.

DefaultServer        on

Port                     21

Umask                 022

MaxInstances       30

User                    nobody ((이미 nobody 계정이 default로 생성되어 있다.

Group                  nobody -> nogroup을 nobody로 변경

DefaultRoot           ~ ((일반유저가 접속하면 경로가 자신의 홈디렉토리가 된다.

AllowOverwrite      on ((파일이 있을 때 같은 이름의 파일이 있으면 겹쳐쓸 것 인가.

AllowStoreRestart  on ((이어올리기 가능

AllowRetrieveRestart   on ((이어받기 가능

#Bar use of SITE CHMOD by default

<Limit SITE_CHMOD>

    DenyAll

</Limit>

 

<Anonymous ~ftp> ((익명의 계정이 접속했을 때의 경로는 ftp 계정의 홈 폴더인 /var/ftp가 된다.

User             ftp

Group           ftp

 

<Anonymous /home1/www>

User             ftp

Group           ftp

 

UserAlias      anonymous ftp

MaxClients    10 "저희 FTP 서버에 접속할 수 있는 수는 %m 개 입니다. 잠시 후 다시 접속해 주세요."

DisplayLogin  welcome.msg

DisplayFirstChdir   .message

 

<Limit WRITE>

    DenyAll

</Limit>

 

↑↑↑↑

파일 저장.

 

*proftp 데몬 시작.

    : [/usr/local/proftpd/sbin] > ./proftpd

    : [/usr/local/proftpd/sbin] > pstree | grep proftpd 로 데몬이 활성화 중인것을 확인한다.

 

*proftp 데몬 중지.

    : [/usr/local/proftpd/sbin] > killall proftd ((해당 데몬 뿐만 아니라 해당 데몬과 관련된 모든 프로세스를 죽인다.

 

Posted by 달팽이맛나
,

 ◇ Mysql , Apache , PHP 설치

> Mysql 설치 <

* mysql-5.0.51a.tar.gz 파일 받기

* zip파일이므로 tar xvfz mysql-5.0.51a.tar.gz 로 풀어준다.

* 압축을 풀어주면 mysql-5.0.51a 폴더가 생긴다.

* rpm -qa | grep mysql

* rpm -e --nodeps 로 지난버전 삭제

* mysql을 사용할 환경을 설정

    └> ./configure --prefix=/usr/local/mysql

                          --with-charset=euckr

                          --localstatedir=/usr/local/mysql/data -> 실제 DB가 저장되는 장소

* 컴파일 작업

    └> make;   make install                    

            └> 바이너리파일로           └>인스톨 작업

* 데이터 저장소 생성

      : /usr/local/mysql/bin -> bin은 mysql관리자 파일이 존재

      : [/usr/local/mysql/bin]>./mysql_install_db -> 데이터 저장소를 생성

            └> /usr/local/mysql/data 폴더 생성 (설정할 때 지정해준 폴더이름, 이곳에 실제 DB가 저장됨)

* 라이브러리 위치 지정

   1)

      : /etc/ld.so.conf.d/mysql.conf 파일 수정

                                      수정 내용 : 추가 ) /usr/local/mysql/lib/mysql

   2)

      : /etc/ld.so.conf 파일을 직접 수정

                                      수정 내용 : 추가 ) /usr/local/mysql/lib/mysql

* 라이브러리 위치 지정 후 저장

      : [/etc/ld.so.conf] > ldconfig ((시간이 조금 걸린다.

 

* 설정 파일 복사

      : [/usr/local/mysql/share/mysql] ((이 경로에 mysql의 메모리 설정 파일이 있다.

      : [/usr/local/mysql/share/mysql] > cp    my-medium.cnf    /etc/my.cnf

* mysql 계정 생성

      : [/usr/local/mysql/share/mysql] > useradd -u 3360 -M -d /usr/local/mysql/data -s /bin/false mysql

                1. 계정 추가 -> useradd

                2. mysql의 기본포트 3360

                3. 로그인 하지 못하게 하고 /bin/false , 기본 디렉토리는 /usr/local/mysql/data 폴더로.

                4. -M 옵션 ; 사용자 계정 경로가 생성되지 않도록 계정 생성. 계정만 추가할 때.

                5. mysql이라는 계정 추가.

      : [/usr/local] chown -R root.mysql /usr/local/mysql

      : [/usr/local] chown -R mysql.mysql /usr/local/mysql/data

* mysql 데몬을 백그라운드로 실행

      : [/usr/local/mysql/bin] > ./mysqld_safe &

 

* 데몬 등록

      : [/usr/local/mysql/bin] > cp /usr/local/mysql/share/mysql.server /etc/init.d/mysql

      : [/etc/init.d] > chkconfig --add mysql

      : [/etc/init.d] > chkconfig --level 5 mysql on

      : [/etc/init.d] > chkconfig --level 3 mysql on

      : [/etc/init.d] > chkconfig --list mysql ((확인

      : [/etc/init.d] > reboot ((재부팅 후

      : [/etc/init.d] > pstree | grep "mysql" ((확인

 

* 심볼릭 링크 걸기 => ln -s /usr/local/mysql/bin/mysql /usr/bin/mysql

 

*MySQL로 접속

     : [/usr/local/mysql/bin] > ./mysqladmin -u root password '1234' ※ 여기에서 root는 mysql의 관리자 명.

     : [/usr/local/mysql/bin] > ./mysql -u root -p (enter) => 패스워드 입력 창 => 프롬프트 모양 mysql> 로 변경.

 

> APACHE 설치 <

 

* httpd-2.2.8.tar.gz 파일 받기

* zip파일이므로 tar xvfz httpd-2.2.8.tar.gz 로 풀어준다.

* 압축을 풀어주면 httpd-2.2.8 폴더가 생긴다.

* rpm -qa | grep httpd

* rpm -e --nodeps 로 지난버전 삭제

* apache를 사용할 환경을 설정

    └> ./configure --prefix=/usr/local/apache

                          --enable-mods-shared=most

                          --enable-modules=so

                          --with-apxs2=/usr/local/apache/bin/apxs

                          --enable-module=vhost_alias

* 컴파일 작업

    └> make;   make install                    

            └> 바이너리파일로           └>인스톨 작업

* 라이브러리 위치 지정

      : /etc/ld.so.conf 파일을 직접 수정

                                      수정 내용 : 추가 ) /usr/local/apache/lib

                                                               /usr/local/apache/modules

* 라이브러리 위치 지정 후 저장

      : [/etc/ld.so.conf] > ldconfig ((시간이 조금 걸린다.

* 저장 후 확인

      : [/usr/local/apache] > ls

 

> PHP 설치 <

 

* php-5.2.5.tar.gz 파일 받기

* zip파일이므로 tar xvfj php-5.2.5.tar.gz 로 풀어준다. (bzip2 으로 압축된 파일이므로 j 옵션으로 풀어준다.

* 압축을 풀어주면  php-5.2.5 폴더가 생긴다.

* rpm -qa | grep php

* rpm -e --nodeps 로 지난버전 삭제

* php를 사용할 환경을 설정

    └> [/down/apm/php-5.2.5] > ./configure --prefix=/usr/local/apache/bin/apxs

                                                                --with-mysql=/usr/local/mysql

                                                                --with-config-file-path=/usr/local/apache/conf

                                                                --with-exec-dir=/usr/local/apache/bin

* 컴파일 작업

    └> make;   make install                    

            └> 바이너리파일로           └>인스톨 작업

* 저장 후 확인

      : [/usr/local/apache/modules] > ls

        httpd.exp       libphp5.so    ((파일 확인

* 설정 파일 복사

      : [/down/apm/php-5.2.5] > cp php.ini-dist /usr/local/apache/conf/php-ini

      : [/usr/local/apache/htdocs] > vi index.php ((파일 생성해서 내용 추가

        <?

            phpinfo()

        ?>

* 아파치 웹서버 환경 설정

      : [/usr/local/apache/htdocs] > vi httpd.conf ((파일 수정

      (142line)        severname 수정 > 172.30.4.43 : 80

      (211line)        DirectoryIndex 에 index.php 추가

      (352line)        (밑에 두 줄 추가)

                         AddType application/x-httpd-php .php .php3 .html .htm
                         AddType application/x-httpd-php-source .phps
      : [/usr/local/apache/bin] > ./apachectl start

 

Posted by 달팽이맛나
,

◇ LVM (Logicla Volume Manager)

1. pv (Physical volume)

2. pvcreate

           /dev/sdb

3. vgcreate

4. lvcreate

5. mkfs.ext3 /dev/poly/polylvm

6. mount

◇ LVM(Logical Volume Manager)

1. Physical Volume
   pvcreate device

2. Volume Group
   vgcreate vg_name device1 device2.....

◇         ***** Volume Group Activation *****

   vgchange -a y vg_name --> volumme group 활성화
   vgchange -a n vg_name --> volumme group 비활성화
   vgremove vg_name  --> volume group 해체
   vgdisplay -v vg_name

3. Logical Volume Creation
   lvcreate -L size -n lv_name vg_name
   lvcreate -l PE수 vg_name -n lv_name

◇        ***** Logical Volume Status Check ******

   lvscan

4. Format
   mkfs.ext3 /dev/vg_name/lv_name

5. Mount

◇        ***** LVM 관리 *****

1. VG에 PV 추가
   vgextend vg_name new_PV_name

2. VG에 PV 제거
   vgreduce vg_name device

3. LV 제거
   - umount
   - lvremove /dev/vg_name/lv_name

4. VG_name 바꾸기
   vgrename cur_vg_name new_vg_name

5. PV Status Check
   pvscan

6. LV resize
   lvextend -L+(-)size /dev/vg_name/lv_name
   lvextend -l+(-)PE수 /dev/vg_name/lv_name
   lvreduce -L-size /dev/vg_name/lv_name
   lvreduce -l-PE수 /dev/vg_name/lv_name

Posted by 달팽이맛나
,

◇ HDD 추가하기

>vmware<

1. edit -> HDD 추가하기

2. ▶ Booting

>console<

3. mount                                 --> 정보확인

4. ls /dev/sd*                         --> sd로 시작하는 장치확인

5. fdisk /dev/sdb

         .

         .                                   --> 각종 설정

         .

6. w                                       --> 설정 저장.

7. mkfs.ext3 /dev/sdb1             --> 파일 시스템 포맷

8. mount /dev/sdb1 /second    --> /second 디렉토리에 sdb1 hdd를 장치 연결

9. /etc/fstab 에 장치 추가

 

◇ 디스크 쿼터

1) 디스크 쿼터 설정 순서

1. 커널에서 디스크쿼터를 지원하는지의 여부

         

2. fstab 파일에 옵션 추가 (usrquota , grpquota) 한다.

          ex) convertquota -u(유저) /home(파티션의 홈 디렉토리)

 

3. remount

4. 데이터베이스 파일생성(quota.user    quota.group)

          ex) [root @localhost second]# touch quota.user /second

               [root @localhost second]# touch quota.group /third

5. 퍼미션설정

          chmod 600 /second/quota.user

          chmod 660 /third/quota.gruop

6. 쿼터 체크

    - 쿼터 상태를 체크하여 quota.user와 quota.group에도 파일 저장 가능하도록

          ex) quotacheck -a(모든파티션)v(메세지출력)u(유저)g(그룹) -f(강제)

7. aquota.user 와 aquota.group생성

          ex) convertquota -u /second

                convertquota -g /third

       결과) 파티션의 홈 디렉토리 안에 aqouta.user 파일이 생성

8. 활성화  --> quotaon    ex)quotaon -u /second

                                         quotaon -g /third

9. edquota -u /second

              --> 쿼터 제한 설정

       ex) Filesystem      

                                 /dev/sdb1                    

              blocks

                                   블럭갯수

               soft

                                  할당된 용량

               hard   

                                  할당된 용량 + 남은 유예기간동안 더 사용할 수 있는 용량

              inodes

                                  파일의 갯수

               soft

                                  할당된 용량

               hard

                                  할당된 용량 + 남은 유예기간동안 더 사용할 수 있는 용량

10. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! convertquota (X) !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1

11. 쿼터 삭제

1. quotaoff -u /second

    quotaoff -g /third

2. /etc/fstab 에서 quota설정 삭제.

3. remount

◇ HDD 삭제하기

>console<

1. umount /second

2. /etc/fstab 에서 hdd 삭제

3. shutdown now

>vm<

edit - 2번째 hdd삭제

 

※ 참고

 


덤프 : 리눅스 파일 시스템 - 1
       그 외              - 0
fsck 파일시스템 점검순서 : 파일 점검 명령어로 부팅시 점검 - 1
                                      그렇지 않으면                  - 0
fsck 파일시스템 점검순서 :  fsck가 무시                    - 0
                                      root file system               - 1
                                      그 밖의 file system            - 2~

 

http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10202&eid=s5XqL1TkpQcjseA6POeB2zMWvN1Gr0/0&qb=ZnN0YWI=

 

 

주 기억장치에 있는 결과를 다른 곳에 넘겨서 출력 시키는 것 - 덤프

* using label
    e2lael dev_name new_label (e2label /bev/hda1 /123)
* find device
    findfs LABEL=/label_name

 

* dump code -> 주기억 장치의 내용을 그대로 화면이나, 프린터 디스크 등에 출력 

        └> for debugging
                                                            1 -> linux file system
                                                            0 -> other file system
* file system check --> /etc/fstab --> /etc/mtab <-정보확인 : mount
         1 -> root file system에 대해 fsck로 부팅 시 파일시스템을 점검
         2 -> root file system 이외의 영역을 점검
         0 -> 점검 x
 * tune2fs -j /deb/hda1 --> ext2 file system을 ext3 file system으로 변경
 * tune2fs -c 50 -i 30 /dev/hda1 --> -c 최대 마운트 횟수 -i 점검 간격
 * tune2fs -l /deb/hda1 --> file system checking information

>>수동복구<<
 fsck.ext3 /dev/hda1

※ hdd 추가 작업

1. hdd 추가

2. booting

3. fdisk 작업 --> ext3포맷으로 설정, 파티션 설정

4. format --> 트랙과 섹터 생성

Posted by 달팽이맛나
,

◇ SetUID , SetGID

SetUID

   -> ex) chmod 4755 /home/girl01/lady1.txt

SetGID

   -> ex) chmod 2755 /home/gril01/lady1.txt

 ◇ stickybit

파일의 예 )

      -> drwxrwxrwt  14 root root  4096  5월 25 12:45 tmp

Posted by 달팽이맛나
,

◇ 파일 속성

파일 종류와 파일을 읽고 , 쓰고 , 실행할 수 있는 사용자를 나타내는 파일의 접근 허가권

ex )  -rw-rw-r--

파일 접근 허가권을 나타내는 심볼의 자리 의미

 

   하나   | 둘  |  셋  |  넷  | 다섯| 여섯 | 일곱 | 여덟 | 아홉 | 열

파일종류 read  write  excu  read  write  excu  read  write  excu 

■  -> Owner (사용자)

■  -> Group (그룹)

■  -> Others (일반 사용자)

◇ 파일 접근 허가권

<사용방법>

chmod [옵션] 모드파일명

         -> ex) chmod 755 example.txt

◇ 파일 소유권 변경

<사용방법>

chown 소유권계정명 모드파일명

         -> ex) chown girl02          example.txt

                          --> 소유주만 쓰면 소유주만 변경

                   chown girl02.admin example.txt

                          --> 소유주.그룹 변경

 ◇ 링크

           * 하드 링크    -    같은 주소 사용  -  ex ) ln aaa ttt

* 파일만 가능하며, 동일한 파티션에서만 가능

* 디스크 상에서 하나의 물리적 공간만을 차지한다

* 원본파일이 깨져도 생성된 링크를 사용해서 그대로 사용

* 원본파일이나 링크파일의 내용이 바뀌면 둘 모두 변경.

* 파일의 크기도 증가

           * 심볼 링크    -    포인트 개념 - ex) ln -s aaa ttt

* 파일, 디렉토리 모두 가능 , 다른 파티션에서도 가능

* 원본파일이 깨지면 생성된 링크는 참조를 하므로 사용할 수 없다.

* 원본파일이나 링크파일의 내용이 바귀면 둘 모두 변경

* 링크파일의 크기는 증가하지 않고 생성될 당시의 원래 크기대로 나온다.

Posted by 달팽이맛나
,

◇사용자계정, 그룹계정 관리하기

[root@localhost ~]# vi /etc/passwd

testuser3:x:503:503::/home/testuser3:/bin/bash

계정명:패스워드:USERID:GROUPID:설명(comment):홈디렉토리:쉘

 

◇useradd acc  (계정생성)

   1. /etc/passwd

             --> name, passwd, UID,GID,comment,home,shell

   2. /etc/group

   3. /etc/shadow    -->passwd를 통해 암호화된 암호를 등록

   4. useradd -p `openssl passwd 1234` shj 

               --> useradd 명령어 사용시 -p 옵션을 사용하려면

                    `openssl passwd 1234` 처럼 넣어서 사용가능

◇ 사용자 디렉토리 생성 과정

/etc/skel 에 생성되어지는 기본 설정 값이 들어있다.

/etc/login.defs 파일의 역할 --> useradd명령어가 수행될 수 있도록 해주는 기본 설정 파일

◇Log-in

   id와 passwd입력

             -->없는 id입력시에도 passwd입력창이 뜨고 passwd입력 후에 id검색이 시작.

   1. /etc/passwd 파일에서 입력된 id검색

   2. /etc/shadow 파일에서 암호인증

   3. /etc/profile에 있는 공통된 PATH값을 읽어온다.

   4. $HOME변수의 값을 사용해서 home Directory로 이동

   5. .bash_profile + .bashrc loading

   6. prompt 생성

 

vi파일보기 상태에서 :! 를 치고 프롬프트에서 사용하는 명령어를 쓴다.

ex) :!ls /etc

종료 후는 다시 원래 띄워놓았던 파일 출력

 

vi /etc/motd

->인사말

 

Posted by 달팽이맛나
,

◇  Boot Order

1. cmos & hardware check
2. MBR(master Boot Record) check
3. GRUB (boot loader) -> OS selection 운영체제 선택
4. fstab -> OS & 물리적 장치 연결(mount)  --> /etc/fstab 에서 확인
5. inittab -> OS booting : GUI ro CUI
6. Account(계정) --> passwd, group, shadow, ... 계정관련확인파일
7. LOG IN --> .bashrc , .bashprofile, ...
              .bashrc --> 계정에 대한 alias(별칭)
              .bashprofile --> 환경변수 설정

#df -- 파티션 위주 (백업단위)

#du -- 디렉토리 위주

echo $PATH --> echo-화면에 출력하라

사용자 계정 현황 확인하기 -> ch /home -> ll

ls -a ->숨김파일까지 모두 보기

source __filename__ ->file을 새롭게 읽어들이기(새로고침)

 

/etc/inittab      -> 윈도우 상에서 system32파일과 같은 기능

init

  0 - shutdown , halt

  1 - Single user mode ->안전모드 비슷 , Client개념

  2 - 멀티 유저 , Network File System

                      server개념 , 다른 사용자가 접근 가능하지만 파일에 접근 불가

  3 - Full 멀티 유저

  4 -

  5 - X11 -> GUI 부팅

  6 - reboot -> 재부팅

 

Alt + F1 ~ F6 콘솔창 이동 콘솔창은 6개까지 사용가능

◇ Directory 작업

 

/dev         <-- 모든 장치에 대한 장치파일이 들어있는 곳

/var          <-- 시스템의 로그 파일이 위치함. 아파치 웹 서버의 기본 디렉토리가

                      위치하는 주 파티션이며, 메일 서버에서 수신된 메일들이 저장되는 곳

 

[shj@localhost bin]$ cd ~shj  -> shj의 홈디렉토리로 이동하라.

 

pwd : 작업 디렉토리 확인

cd : 디렉토리 이동

         cd -       <-- 바로 앞에서 작업하던 디렉토리로 이동

         cd /       <-- 절대경로 사용

         cd ../../ <-- 상대경로 사용

ls : 디렉토리의 파일목록 출력

su : 권한 변경

         su - root : root로 권한 변경하면서 환경변수까지 같이

         su root : root로 권한 변경이 가능하나 환경변수는 갖고오지 못한다.

            └> [결과화면] - [root@localhost shj]#

touch : 빈 파일 생성

 

[몇 가지 필요한 단축키]

ctrl + c : 명령어의 실행을 즉시 중지

ctrl + d : 문서나 mail등 text와 관련된 file 입력을 정상적으로 저장하고 마침

ctrl + L 혹은 clear : Clear Screen

ctrl + z : 프로세스 일시 정지

          └> 복구 : fg %1 -> 메모리 1번을 꺼내겠다.

shift + page_up or page_down : ls 등의 명령을 실행했을 때,

                                              명령의 결과가 한 화면을 넘어갈 경우 위 아래로 scroll

 

cat > aaa

        aaa파일에 입력받은 키보드값을 저장

cat aaa

        aaa파일에 있는 내용 출력

cat >> aaa

        aaa의 내용에 덧붙여서 저장

cat 명령어 실행 후 Ctrl + D 키로 입력종료해서 저장.

 

mkdir : 디렉토리 생성

       -p : 하부 디렉토리까지 한번에 생성시키기

       ex ) mkdir -p test5/subtest5/subsub5

 

rmdir : 빈 디렉토리 삭제 , 파일이나 다른 디렉토리가 존재시에 삭제 불가

rm -rf 디렉토리명 -> 디렉토리가 비어있지 않아도 모두 강제로 제거

 

mv(move) : 디렉토리 이동 또는 이름 변경

    -> ex) mv linux.txt linux2.txt

              같은 폴더 내에 있는 linux.txt파일을 linux2.txt파일로 이름 변경

        ex) mv test2 examtest1/

              test2 디렉토리를 examtest1디렉토리로 이동

 

와일드 카드, 파일명 치환 : * - 연속적인 모든 문자와 대응

                                     ? - 한 문자와 대응

                                    [] - 묶여진 문자 중의 하나와 대응

 

cat/more/less/head/tail : 파일 내용 보기

 

cp(copy) : 파일(디렉토리) 복사

     └> ex) [shj@localhost ~]$ cp -r test2/ works/

               ---> 디렉토리 test2 속에 있는 모든 것을 works 디렉토리 아래로 복사

 

◇ vi 문서 편집기

y  : 복사하기

p  : 붙이기

d  : 지우기

u  : 복구하기

c  : 바꾸기

r   : 한 글자 바꾸기

R  : 바꾸면서 덮어쓰기


Posted by 달팽이맛나
,