ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • LPIC level 1 101 공부 - 5장 정리 (파일 관리)
    [공부] 프로그래밍/Linux 2023. 9. 9. 09:54

    5-1 일반 유저인 tom이 자신이 속해있는 모든 그룹명만을 표시 : groups tom

    -> 어떤 그룹에 속해있는지 : id [옵션] [유저명]

     

    5-2 아래의 실행 결과

    : fileA의 소속자는 yuko

    이 파일을 소유하는 같은 그룹의 멤버만 읽고 쓰기가 가능

    $ ls -l
    - rw- rw- r--. 1 yuko engineer 0 4月 20 14:16 fileA
    <---파미션--->  <소유자><그룹>
     

    -> ls -l : 파미션, 그 파일의 소유자, 소속하는 그룹명을 표시

    ①- ②rw- ③rw- ④r--
    ① : 파일 종류
    - : 통상 파일
    d : 디렉토리
    l : 심볼릭 링크
    ② : 유저 (소유자)에 대한 파미션
    r : 읽기
    w : 쓰기
    x :실행
    ③ : 그룹에 대한 파미션
     
    ④ : 그 외의 유저에 대한 파미션
     

     

    5-3 /etc/passwd 파일의 파미션 : -rw-r--r-- root root /etc/passwd

     

    5-4 아래의 파일의 소유자는 읽기, 쓰기, 실행이 가능하며 모든 유저는 읽기와 실행이 가능한 파미션 설정 : chmod a+x,g-w fileA

    $ ls -l
    -rw-rw-r--. 1 user01 user01 0 6月 9 15:30 fileA
     

    -> chmod : 기존의 파일과 디렉토리에 설정되어있는 파미션 변경 (소유자 또는 root만 가능)

    chmod [옵션] 모드 파일명
    -R
    디렉토리에 설정한 경우, 서브디렉토리를 포함하는
    재귀적인 파미션이 변경됨

     

    シンボリックモード
    オクタルモード
    chmod [유저] [조작] [파미션]
    [유저] [그룹] [기타]
    읽기 : 4
    쓰기 : 2
    실행 : 1
    권한X : 0
    [유저]
    u : 소유자
    g : 그룹
    o : 기타
    a : 모두
    [유저]
    rw-
    4+2+0 = 6
    [조작]
    + : 허가 추가
    - : 허가 삭제
    = : 허가 설정
    [그룹]
    rw-
    4+2+0 = 6
    [파미션]
    r : 일기
    w : 쓰기
    x : 실행권
    [기타]
    r--
    4+0+0 = 4

     

    5-5 umask 값이 022 인 경우, 파일을 신규 작성할 때 파미션 : 644

    -> 유저가 파일이나 디렉토리를 신규로 작성할 때는 디폴트의 파미션이 부여되어있다

    유저의 디폴트 파미션은 shell에 설정된 umask값에 따라 정해진다

    umask : umask 값 확인

     
    파일
    디렉토리
    작성시에 애플리케이션이
    지정하는 파미션
    666 rw- rw- rw-
    777 rwx rwx rwx
    umask 값
    002 --- --- -w-
    002 --- --- -w-
    디폴트 파미션
    664 rw- rw- r--
    775 rwx rwx r-x

     

    5-6 파일을 신규 작성했을 때, rw-r----- 파미션이 되는 umask값 : 0027

     

    5-7 student 그룹 파일을 소유 그룹은 변경하지 않고 소유자만 taro에서 hana로 변경하는 방법 : chown hana 파일명

    -> chown : 지정된 파일의 소유자와 그룹을 변경 (root만 가능)

    chown [옵션] 유저명 [.그룹명(=:그룹명)] 파일명 | 디렉토리명
    -R
    디렉토리만 설정이 가능하고, 서브디렉토리를 포함
    재귀적으로 소유자, 그룹이 변경

     

    chgrp [옵션] 그룹명 파일명 | 디렉토리명
    -R
    디렉토리만 설정이 가능하고, 서브디렉토리를 포함
    재귀적으로 그룹이 변경

     

    5-8 root 유저가 아래의 command를 실행했을 때

    : /tmp/ryo 내에 있는 모든 파일, 디렉토리에 대해서 yuko에게 소유권이 넘겨짐

    # chown -R yuko/tmp/ryo/*

     

    5-9 유저가 독자적으로 작성해, root권한으로 인스톨한 mycmd 프로그램의 SUID를 설정 : chmod 4755 mycmd

     
    # ls -l
    -rwxr-xr-x 1 root root 117 5月 22 17:23 mycmd

    -> SUID : 리눅스의 특수한 파미션 속성 (Set User ID)

    어떤 유저가 실행해도 유효 유저ID가 파일의 소유자ID가 된다

    SUID는 파미션에 [4000] 또는 소유자에 [s]를 부여한다

     
    # ls -l
    -rwxr-xr-x 1 root root 117 5月 22 17:47 mycmd
    #chmod u+s mysmd // =chmod 4755 mycmd (4755 -> 사전 파미션 755에 4000을 추가)
    -rwsr-xr-x 1 root root 117 5月 22 17:47 mycmd
    // 이 처리로 인해서 일반 유저인 yuko가 실행해도 유효 유저ID는 root가 된다

     

    5-10 /tmp/team 이하에 신규 파일과 디렉토리를 작성했을 때, /tmp/team과 같은 그룹이 소유하는 설정 : chmod 2775 /tmp/team

    -> SGID : 파일의 그룹ID가 실효 그룹ID로써 설정된다

    파미션에 [2000] 또는 [s]를 부여

    // 작업 디렉토리(/tmp/team)의 소유 그룹은 engineer
    # ls -ld
    drwxrwx--- 2 yuko engineer 4096 5月 22 17:47
    // yuko가 작업 디렉토리 이외에 파일을 작성하면 1차 그룹인 yuko가 그룹ID가 된다
    $ touch share_file
    $ ls -l
    -rw-rw-r-- 1 yuko yuko
    
    // SGID가 설정된 디렉토리 이하에서 파일이나 디렉토리를 작성하면 SGID가 설정된 디렉토리의 그룹이 계승되어 설정된다
    # ls -ld
    drwxrwx--- 2 yuko engineer 4096 5月 22 17:47 .
    $ chmod g+s /tmp/team // =chmod 2770 /tmp/team
    $ ls -ld
    drwxrwx--- 2 yuko engineer 4096 5月 22 17:47 .
     

    5-11 일반적으로 Sticky bit가 설정되어 있는 디렉토리 : /tmp

    -> Sticky bit : 특정한 디렉토리에 대한 엑세스권이 허가 되어 있어도 파일의 삭제는 할 수 없도록

    보호하는 설정

    Sticky bit 설정 : chmod에 [1000] 혹은 [o+t] 사용

     

    5-12 [In fileX fileY]이라고 실행했을 때

    : fileX를 기초로 fileY이라는 ハードリンク를 작성한다

    -> In : 파일에 링크를 작성

    동일 파일에 다른 2개의 이름을 갖도록 하는것이 가능

    따라서 데이터를 복사하는 것이 아니라 같은 데이터를 가리키고 있다

    ハードリンク
    In 오리지널파일명 링크명
    ・ 링크 파일이 사용하는 i 노드 번호는 오리지널 파일과 같다
    ・ 다른 파일 시스템 사이에서 링크 파일을 작성하는것은 X
    ・ i 노드 번호는 같은 파일 시스템내에서 유니크 번호이기 때문에, 다른 파티션의 ハードリンク를 작성 X
    シンボリックリンク
    In -s 오리지널파일명 링크명
    ・ 링크 파일이 사용하는 i 노드 번호는 오리지널 파일과 다르다
    ・ 다른 파일 시스템 사이에서 링크 파일을 작성하는것은 O
    ・ 파미션 선두에 [l]이 표시

     

    $ ls
    fileX
    $ In fileX fileY // ハードリンク 작성
    $ cat fileX
    hello
    $ cat fileY
    hello
    $ ls -li file* // i노드를 표시 : ls에 i 옵션 추가
    97789 -rw-rw-r-- 2 yuko yuko 6 5月 22 21:42 fileX
    97789 -rw-rw-r-- 2 yuko yuko 6 5月 22 21:42 fileY
    $ rm fileX
    $ cat fileY
    hello // fileX를 삭제해도 fileY에는 엑세스 가능

     

    5-13 ハードリンク했을 때 변경되는 파일의 속성 : 링크 수

     

    5-14 2회째 백업을 실행 했을 때에 변경되어 있지 않은 파일에 대해서 ハードリンク가 작성되어 있었다 -> 백업에 ハードリンク를 사용하는 장점

    : ハードリンク는 링크元와 데이터를 공유하기 때문에 백업 용량을 절약 가능

    ハードリンク는 복사와 달리, 메타데이터를 변경하는것 뿐 백업을 빠르게 진행

     

    5-15 어느 파일 시스템에 용량이 부족해 이 중에 디렉토리 이하를 별도의 파일 시스템에 이동하게 되었다 -> 새롭게 이동한 디렉토리를 이동하기 전과 똑같은 패스명에서 엑세그가 가능 하도록 하는 방법 : シンボリックリンク를 사용

    -> 다른 파일 시스템 사이에서는 ハードリンク 사용 X

    이 때에는 シンボリックリンク

    $ ls
    fileX
    $ In -s fileX fileY // シンボリックリンク 작성
    $ cat fileX
    hello
    $ cat fileY
    hello
    $ ls -li file* // i노드를 표시 : ls에 i 옵션 추가
    780336 -rw-rw-r-- 2 yuko yuko 6 5月 22 21:42 fileX
    780332 lrwxrwxrwx 2 yuko yuko 6 5月 22 21:42 fileY -> fileX
    // 다른 i노드 번호, 파미션 선두에 [l]이 붙음, 링크명 -> 오리지널명
    $ rm fileX
    $ cat fileY
    에러 // fileX를 삭제하면 fileY도 삭제
     

    5-16 아래의 파일에 i 노드 번호가 4990733의 fileC를 작성

    : In fileA fileC

    $ ls -li
    4990733 -rw-rw-r--. 1 user01 user01 4月 21 11:20 fileA
    5308177 lrwxrwxrwx. 1 user01 user01 4月 21 11:20 fileB -> fileA
     

    5-17 최후의 갱신에서 5일 경과한 파일을 찾을 때 : find -mtime 5

    -> find : 지정한 디렉토리 이하에서 지정한 검색 조건에 합치하는 파일을 검색

    일시 검색 시 - 2일전 : 2

    - 2일전 보다 미만 (1일전) : -2

    - 2일 전 이상 : +2

    -print0 : 파일의 区切り에 공백이나 개행이 아닌, null문자가 채워짐

    xargs -0 : 표준입력에서의 문자열에 대해 공백이나 개행이 아닌, null문자가 채워짐

    find [옵션] [path] [식]
    -name
    지정한 파일명 찾기
    -type
    파일 타입 찾기
    d : 디렉토리
    f : 통상 파일
    l : 심볼릭 링크 파일
    -size
    지정한 블럭 사이즈 검색
    -atime
    지정한 일시를 기초로 최종 엑세스가 있던 파일 검색
    -mtime
    지정한 일시를 기초로 최종 갱신된 파일 검색
    -uid
    파일의 소유자의 유저 ID를 검색
    -user
    파일의 소유자의 유저 혹은 유저 ID 검색
    -perm
    파일의 파미션을 지정
    -print
    검색 결과를 표준 출력
    -exec command \;
    검색 후 command를 실행

     

    # ls
    dirA file B fileA
    # find . -type f | xargs rm // 파일만 삭제
    rm cannot remove
    rm cannot remove
    # ls
    dirA file B // file B가 삭제 되지 않음
    
    # ls
    dirA file B fileA
    # find . -type f -print0 | xargs -0 rm // 파일만 삭제
    rm cannot remove
    rm cannot remove
    # ls
    dirA
     

    5-18 find으로 파일 검색 시, 검색하는 서브 디렉토리의 깊이가 3층까지 제한하는 조작

    : find . -maxdepth 3 -name filename

    -> -maxdepth : 계층 수 지정

     

    5-19 /tmp 이하에 있는 root가 소유하고 있는 디렉토리와 파일을 전부 표시

    : find /tmp -uid 0 -print

    find /tmp -user root -print

     

    5-20 이전에 작성한 파일을 검색하는 경우, 옵션 등을 사용 X 파일명만 검색

    : locate

    -> locate 파일명 : 파일 검색 가능 (find는 옵션 필요)

    데이터 베이스 갱신 : updatedb [옵션]
    -e
    데이터 베이스 파일의 일람이 혼잡해지지 않도록 디렉토리 패스를 지정
    -o
    생긴 대상의 데이터 베이스명을 지정

     

    5-21locate가 참조하는 데이터 베이스 중에서 특정의 검색 디렉토리를 포함하지 않도록 하는 방법 : /etc/updatedb.conf 파일을 편집

    -> updatedb -e 디렉토리명 혹은 /etc/updatedb.conf 파일 수정

    # cat /etc/updatedb.conf
    // 데이터 베이스 구축 시, 대상외가 되는 파일 시스템 타입 기재
    PRUNEFS = "auto afs gfs gfs2 iso9660 sfs udf"
    // 대상외가 되는 디렉토리 패스를 기재
    PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/spool/cups"

     

    5-22 PATH 변수에 지정된 디렉토리에 대하여 command를 검색 : which

    -> which : 지정된 command가 어떤 디렉토리에 격납되어 있는지를 PATH 환경변수에서 지정된 디렉토리를 기준으로 검색

     

    5-23 command의 패스와 메뉴얼의 패스를 표시 : whereis

    -> whereis : 지정된 command의 바이너리, 소스, 메뉴얼 페이지의 장소를 표시

    whereis [옵션] command명
    -b
    바이너리의 장소를 표시
    -m
    메뉴얼의 장소를 표시
    -s
    소스 파일의 장소를 표시

     

    5-24 ps command의 메뉴얼의 파일이 어디에 있는지를 조사 : whereis ps

     

    5-25 PATH 변수에 지정된 디렉토리 이외에 위치하고 있는 command를 검색

    : find

     

Designed by Tistory.