본문 바로가기

Dev/Dev:: Linux

[Day005] Linux 5일차

문제) /home/public 디렉토리를 생성하여 scott, james, john 계정만 

       접근하여 모든 명령을 사용할 수 있도록 권한을 부여하세요.

       단, 삭제(변경)는 파일(디렉토리) 소유자만 가능하도록 권한을 부여하세요.


  => 계정, 그룹, 권한, 소유자(소유그룹) 관련 명령 활용


    ]# mkdir /home/public

    ]# ls -l /home | grep public

    drwxr-xr-x 2 root  root  4096 10월  6 11:00 public


    ]# useradd scott;passwd scott

    ]# useradd james;passwd james    

    ]# useradd john;passwd john

 


 

  ]# groupadd accessG

    ]# gpasswd -M scott,james,john accessG

    ]# grep accessG /etc/group

    accessG:x:512:512:scott,james,john    =>  그룹에 포함된 계정 확인


    ]# chgrp -R accessG /home/public

    ]# ls -l /home | grep public

    drwxr-xr-x 2 root  accessG  4096 10월  6 11:00 public    


    ]# chmod 1770 /home/public

    ]# ls -l /home | grep public

    drwxrwx--T 2 root  accessG  4096 10월  6 11:00 public    


     =>  계정으로 로그인하여 확인


     ※ 이미 로그인된 계정은 재로그인 해야지만 그룹정보가 재적용되어 실행된다.



● 파일 속성


  - 파일 권한과는 별개로 별도의 의미를 가지고 있는 특수한 기능

  - 관리자도 파일 삭제 또는 변경이 되지 않도록 파일의 속성을 사용하는 경우가 있다.

   - 파일 속성 관련 명령

     ]# lsattr 파일명(디렉토리명)    => 현재 디렉토리 또는 원하는 디렉토리의 하위목록들의 파일 속성 확인

     ]# chattr [-R] +속성 파일명(디렉토리명)   =>  속성 추가

     ]# chattr [-R] -속성 파일명(디렉토리명)   =>  속성 삭제


   - 파일 속성

     i : 파일의 내용변경 및 삭제 불가능(링크파일 생성 불가, 파일이름 변경 불가,...)  

     a : 파일의 내용만 추가 가능하며 삭제 또는 변경 불가

     c : 압축된 상태로 저장 => 읽을 경우 자동으로 압축 해제

     d : dump 명령에 의해 Backup 되지 않도록 지정

     s : 파일 삭제시 해당 블럭을 0으로 만들어 블럭에 쓰기를 발생되도록 설정

     S : 파일의 내용을 변경할 경우 디스크 동기화 발생

     u :  파일 삭제 시 파일의 내용을 저장하여 데이타 복구가 가능하도록 설정     


  ex)  ]# lsattr aaa.txt

        ------------- aaa.txt

        ]# chattr +i aaa.txt

        ]# lsattr aaa.txt

        ----i-------- aaa.txt       

        ]# rm -rf aaa.txt      => 삭제 불가능(i 속성에 의해 삭제 불가)

        rm: cannot remove `aaa.txt': 명령이 허용되지 않음 

        ]# chattr -i aaa.txt

        ]# lsattr aaa.txt

        ------------- aaa.txt

        ]# rm -rf aaa.txt      => 삭제 가능



● 날짜 및 시간 관리

  - 리눅스 시간 및 날짜 확인

    ]# hwclock     =>   하드웨어 시간확인 : 메인보드에 존재하는 CMOS의 시간

    ]# date    =>  운영체제 시간확인 : 리눅스 시스템의 시간 - 커널시간


  - 리눅스 시간 및 날짜 변경

    ]# hwclock -w    =>  운영체제 시간을 이용하여 하드웨어 시간을 변경

    ]# hwclock -s     =>  하드웨어 시간을 이용하요 운영체제 시간을 변경

    ]# date 090912152013     =>  ]# date MMddhhmmCCCC 

    ]# rdate -s time.bora.net     =>  Time Server의 시간을 이용하여 운영체제 시간을 변경


 

● 디스크 관리


  1. 파티션 관리

    ]# fdisk -l     =>  현재 사용할 수 있는 장치 목록 확인    



    ]# fdisk  /dev/sda     =>  저장장치에 대한 파티션 관리

    Command (m for help): m     =>  fdisk에서 사용할 수 있는 명령 목록 확인

    ※ Command Action

        p  :  파티션 정보 확인

        n  :  파티션 생성

        d  :  파티션 삭제

        t  :  파티션 파일시스템 변경

        q  :  변경된 파티션 정보를 적용하지 않고 fdisk 종료

        w  :  변경된 파티션 정보를 적용하고 fdisk 종료

    - 시스템이 설치된 파티션을 변경한 경우 시스템 재부팅 해야만 된다.



 2. 파티션 포멧


    - 파티션을 초기화하여 시스템 데이타를 저장할 수 있도록 만들어 주는 기능

    ]# mkfs  -t  파일시스템  장치파일명


       ※ 파일시스템 :  파일 데이타를 저장하는 방식를 지정

           Windows  OS  :   fat16 또는 fat32(vfat : 읽기 쓰기 가능), ntfs(ntfs : 읽기 가능 >> ntfs-3g : 읽기 쓰기 가능)    

           Linux OS  :  ext3  또는 ext4


    ex)  ]# mkfs -t ext3 /dev/sda9


       ※  swap 파티션 포멧

          ]# mkswap -c 장치파일명

  3. 파티션 검사


      ]# fsck -t  파일시스템  장치파일명

      ex)  ]# fsck -t ext3 /dev/sda9 


      ※ 사용 중인 장치(mount장치)들은 fsck 명령을 이용해서 check 해서는 안된다.

         =>  사용 중인 장치를 해제하고 나서 fsck 명령을 사용하는 것이 좋다.


      ※ fsck 명령은 부팅시 장치가 연결(mount) 되기 전에 실행되어 파티션 오류 검사를 한다.

      ※ 시스템에 심각한 오류 발생시 부팅되지 못하는 경우가 발생 가능

          =>  설치 CD로 부팅 후 오류발생 파티션을 검사

          =>  /mnt/sysimage 디렉토리에 모든 파티션이 mount 되어 있다.

               여기서 파일시스템 검사 및 파일 수정이 가능

               CD 부팅  =>    boot : linux rescue  


 

  4. 저장장치 연결 - mount


     - Linux는 장치를 사용하기 위해 반드시 디렉토리와 연결(mount) 하여 디렉토리를 장치로 활용한다.

     형식)  ]# mount  -t  파일시스템  장치파일명  연결디렉토리    

     ex)  CD 또는 DVD를 사용할 경우

         ]# df -h     =>  현재 mount 되어 있는 장치 정보를 확인                

         ]# mkdir /mnt/cdrom

         ]# mount -t iso9660 /dev/cdrom  /mnt/cdrom


         ]# df -h     =>  CD  또는 DVD  연결 확

         ]# ls -l /mnt/cdrom      =>   CD  또는 DVD 데이타 확인


      ex)  USB 메모리 또는  USB 외장하드를 사용할 경우

         ]# fdisk -l     => 장치 및 파티션 확인    ex) /dev/sdb  =>  /dev/sdb1

         ]# mkdir /mnt/usb

         ]# mount -t vfat /dev/sdb1  /mnt/usb   

         ]# df -h    =>  연결 확인

         ]# ls -l /mnt/usb    =>  USB 저장장치의 데이타를 확인  



      ex) 하드디스크 파티션 연결  =>  /dev/sda9

         ]# mkdir /backup

         ]# mount -t ext3 /dev/sda9  /backup



         ]# df -h     =>  연결 확인 


     - 연결된 장치를 사용하지 않을 경우 연결 해제

       형식) ]# umount 장치파일 또는 연결디렉토리

        ex)  ]# umount /mnt/usb

               ]# df -h    =>  연결해제 확인       


     - 부팅 시 자동 mount 되도록 지정하고자 하면 /etc/fstab 파일을 수정

       => /etc/fstab 파일은 부팅 시 init에 의해 읽어들여 자동 mount 한다.

        ]# vi /etc/fstab

        LABEL=/                 /                       ext3    defaults        1 1

        ... 

            (1)                    (2)                      (3)         (4)         (5) (6)


         1) 장치파일명 => 장치파일명 대신 장치별명(Label명) 또는 장치고유번호(UUID)를 사용하기도 한다.

              ※ Label 생성 및 확인

         ]# e2label  /dev/sda9   /backup    =>  /dev/sda9 장치파일명에 /backup 라벨명 지정    

                 => /dev/sda9  =  LABEL=/backup

         ]# e2label /dev/sda9      =>  장치에 부여된 Label 확인

            ※ UUID : 장치에 부여된 고유번호

         ]# blkid /dev/sda9      =>  /dev/sda9 장치의 UUID 확인 

                =>  /dev/sda9   =   UUID=8088a9f8-8c63-45b0-9135-01603280b189


         2) 연결디렉토리

         3) 파일시스템 종류

         4) 연결옵션  -  defaults :  모든 옵션을 기본값으로 사용  

         5) dump 옵션  -  dump 명령(파티션 backup 명령) 사용 가능 여부에 대한 값 적용

               0  :  dump 명령 사용 불가능

               1  :  dump 명령 사용 가능    =>  Linux 파일시스템


         6) fack 옵션  -  fsck 명령 사용 가능 여부 및 순서 지정

               0  :  fack 명령 사용 불가능 

               1  : fack 명령 최초 사용(Linux 파일시스템의 / 디렉토리에 적용)

               2  :  fsck 명령 사용(Linux 파일시스템의 모든 디렉토리)




 문제)  /etc/fstab 파일에 mount 정보를 잘못 수정한 경우 리눅스가 부팅되지 않을 수 있다.

             이 때의 오류를 수정하여 부팅되도록 만들어 보세요.

           ]# vi /etc/fatab

           ...

           /dev/sda10 /backup ext3 defaults 1 2

          ----------

              └ 오류 : 장치파일이 존재하지 않는다.


           해결)  설치 CD로 부팅

              # vi /mnt/sysimage/etc/fstab  

                  =>  /dev/sda10 을   /dev/sda9로 수정 후 저장