MTREE(8)

명칭
mtree - 디렉토리 계층을 MAP 한다

서식
mtree [-LPUcdeinqrux] [-f spec] [-K keywords] [-k keywords] [-p path] [-s seed] [-X exclude-list]

해설
mtree 유틸리티는, 커런트 디렉토리를 루트로 하는 파일 계층을, 표준 입력으로부터 읽어들인 파일 계층 기술과 비교합니다. 그 기술과 매치 하지 않는 특성을 가지는 파일이나, 실제의 파일 계층 혹은 파일 계층 기술의 어느쪽이든으로부터 결핍 하고 있는 파일 에 관한 메세지를 표준 출력에 출력합니다.

이하의 옵션이 있습니다:

-L  파일 계층의 모든 기호 연결을 더듬습니다.

-P  파일 계층의 기호 연결을 더듬지 않습니다. 대신에, 기호 연결 자신을 비교 대상으로 합니다. 이것이 디폴트입니다.

-U  기존 파일의 소유자, 그룹 및 퍼미션을 파일 계층 기술에 맞추어 수정해, 결핍 하고 있는 디렉토리를 작성합니다. 결핍 디렉토리를 작성하기 위해서, 유저, 그룹 및 퍼미션의 모두를 지정하지 않으면 안됩니다. 성공하면(자) 스테이터스 0 으로 종료해, 어떠한 에러가 발생하면(자) 1 으로 종료합니다. 미스매치가 있어도, 그것이 정정되면 에러라고는 보이지 않습니다.

-c  파일 계층의 기술을 표준 출력에 출력합니다.

-d  디렉토리형 이외의 파일은 모두 무시합니다.

-e  파일 계층에는 존재하지만, 파일 계층 기술에 존재하지 않는 파일이 어느 경고하지 않습니다.

-i  -c 옵션으로 파일 계층 기술을 작성할 때, 디렉토리 레벨을 하나 나올 때마다 공백 4 개(살)분씩 인덴트 해 출력합니다. 각 디렉토리앞에 출력되는 /set 문이나 코멘트에는 영향을 주지 않습니다만, 각 디렉토리의 마지막에 출력되는 코멘트에는 영향을 미칩니다.

-n  파일 계층 기술 작성때, 패스명 코멘트를 출력하지 않습니다. -c 옵션 사용시는 통상, 각 디렉토리의 전후에 코멘트가 출력됩니다.

-q  정적 모드. “존재하지 않는다” 디렉토리가 이미 존재한다고 하는 이유로 작성할 수 없는 경우, 불평하지 않습니다. 이것은, 디렉토리가 기호 연결의 경우에 발생합니다.

-r  파일 계층 기술에 기재되지 않은 파일 계층에 포함되는 파일을 모두 삭제합니다.

-u  옵션 -U (와)과 같습니다만, 현파일 계층이 파일 계층 기술과 매치 하지 않으면 스테이터스 2 를 돌려줍니다.

-x  파일 계층안의 마운트 포인트 이하에 강하하지 않습니다.

-f file
    파일 계층 기술을, 표준 입력으로부터가 아니고, 파일 file (으)로부터 읽어들입니다.

-K keywords
    지정했다 keywords (공백 혹은 콤마로 단락지은 것)(을)를 현재의 키워드 집합에 추가합니다.

-k keywords
    현재의 키워드 집합 대신에, ``type''키워드 및 지정했다 keywords (공백 혹은 콤마로 단락지은 것)(을)를 사용합니다.

-p path
    파일 계층의 루트 디렉토리를, 커런트 디렉토리는 아니고 path (으)로 합니다.

-s seed
    키워드 cksum 하지만 지정되어 있는 전파일에 대한 단일의 체크 섬을 표준 에러 출력에 출력합니다. 체크 섬의 배정에는 지정된 값이 이용됩니다.

-X exclude-list
    지정된 파일은 fnmatch(3) 패턴을 포함합니다. 이것에 매치 하는 파일은 파일 계층 기술로부터 제외됩니다. 1 행에 1 개씩 기술합니다. 패턴에 ‘/’ 캐릭터가 포함되는 경우, (개시한 디렉토리와의 상대로) 패스명 전체에 대해서 매치이 놓칩니다. 그렇지 않은 경우, 베이스명 에 대해서만 매치이 놓칩니다. exclude-list 파일에는 코멘트는 용서되지 않습니다.

파일 계층 기술은 많은 경우, 「키워드」즉 파일에 관련한 값을 지정하는 캐릭터 라인으로부터 구성됩니다. 어느 키워드에도 기본값은 없습니다. 키워드에 값이 설정되어 있지 않은 경우, 그 키워드에 근거한 체크는 행해지지 않습니다.

현재 서포트되고 있는 키워드는 이하와 같습니다:

cksum
    cksum(1) 유틸리티로 규정되는 디폴트 알고리즘을 이용했다 파일의 체크 섬.

flags
    심볼명의 파일 플래그. 이러한 이름에 대한 정보는 chflags(1) (을)를 참조해 주세요. 플래그 없음을 설정하려면 , 캐릭터 라인 “none” (을)를 지정해, 현재의 디폴트에 우선할 수 있습니다.

ignore
    이 파일 이하의 파일 계층을 무시합니다.

gid 수치로 지정한 파일의 그룹.

gname
    심볼명으로 지정한 파일의 그룹.

md5digest
    파일의 MD5 메세지 다이제스트.

sha1digest
    FIPS 파일의 160-1 (“SHA-1”) 메세지 다이제스트.

ripemd160digest
    파일의 RIPEMD160 메세지 다이제스트.

mode
    수치 (8 진수) 혹은 심볼치로 지정한 현파일의 퍼미션.

nlink
    파일이 가지고 있어야할 하드 링크수.

nochange
    이 파일 혹은 디렉토리가 존재하는 것 마셔 확인해, 다른 속성은 무시합니다.

uid 수치로 지정한 파일의 소유자.

uname
    심볼명으로 지정한 파일의 소유자.

size
    파일 사이즈 (바이트수).

link
    기호 연결이 지시하고 있어야할 파일.

time
    파일의 최종 수정 시각.

type
    파일 타입. 이하의 어느쪽이든을 지정합니다:

    block
        블록형 스페셜 디바이스
    char
        캐릭터형 스페셜 디바이스
    dir 디렉토리
    fifo
        FIFO
    file
        통상 파일
    link
        기호 연결
    socket
        소켓

디폴트의 키워드 집합은 flags, gid, mode, nlink, size, link, time, uid 입니다.

파일 계층 기술에는 4 개의 타입의 행이 있습니다.

1 개째의 타입의 행은 키워드에 포괄적인 값을 설정하는 것으로, 캐릭터 라인 ``/set''와 거기에 계속되는 공백, 그리고 키워드와 그 값의 페어의 집합을 공백에서 단락지은 것으로부터 구성됩니다. 키워드와 그 값의 페어는 키워드와 거기에 계속되는 등호 (``=''), 그리고 값으로부터 완성되어, 공백은 포함하지 않습니다. 일단 키워드가 설정되면(자), 재설정 혹은 설정 해제될 때까지 그 값은 변화하지 않습니다.

2 개째의 타입의 행은 키워드의 설정을 해제하는 것으로, 캐릭터 라인 ``/unset''와 거기에 계속되는 공백, 그리고 1 개(살) 이상의 키워드를 공백에서 단락지은 것으로부터 구성됩니다.

3 개째의 타입의 행은 파일 기술을 실시하는 것으로, 파일명과 거기에 계속되는 공백, 그리고 제로개이상의 키워드와 값의 페어를 공백에서 단락지은 것으로부터 구성됩니다. 파일명의 선두에는 공백이 있어도 상관하지 않습니다. 파일명에는 표준적인 파일명 매칭 캐릭터 (``['', ``]'', ``? '', ``*'')가 포함되어 있어도 자주(잘), 그 경우, 그 파일 계층에 존재하는 파일은, 매치 하는 최초의 패턴과 관련 지을 수 있습니다.

각 키워드와 값의 페어는 키워드와 등호 (``=''), 그리고 그 키워드의 값으로부터 구성되어 공백은 포함하지 않습니다. 이러한 값은, 대응하는 키워드의 포괄적인 값을 변경합니다만, 포괄적인 값에 우선합니다.

패스는 모두 상대 지정입니다. 디렉토리를 지정하면(자), 그 디렉토리 계층 중(안)에서 더욱 파일이 검색됩니다. 이것이 파일 계층 기술에 있어서의 4 개째의 타입의 행입니다: 캐릭터 라인 “..” 만이 포함되는 행은, 커런트 디렉토리 패스를 1 레벨상에 올리는 것을 의미합니다.

공행 및 최초의 비공백 캐릭터가 해시 기호 (``#'')인 것 같은 행은 무시됩니다.

mtree (은)는 성공하면(자) 스테이터스 0 으로 종료해, 어떠한 에러가 생기면(자) 1 으로 종료합니다. 또, 파일 계층이 파일 계층 기술과 매치 하지 않는 경우는 스테이터스 2 로 종료합니다. 다만 옵션 -U 하지만 지정되어 있는 경우는, 스테이터스 2 는 스테이터스 0 에 변환됩니다.

사용예
「트로이의 목마」에 감염한 시스템 바이너리를 검출하려면 , 이하와 같이 조작하는 것을 추천 합니다. 파일 시스템에 대해서 mtree -K sha1digest (을)를 실행해, 그 결과의 카피를 별머신인가, 적어도 암호화한 형식에서 스토어 합니다. 출력 파일 자신은 md5(1) 유틸리티를 이용해 다이제스트를 작성합니다. 그리고 정기적으로 mtree (와)과 md5(1) (을)를 온라인의 파일 계층 기술에 대해서 달리게 합니다. 크래커가 손본 바이너리에 맞추어 온라인의 파일 계층 기술을 변경하는 것은 가능합니다만, 오리지날과 같은 MD5 다이제스트를 가지는 기술을 작성하는 것은 비현실적이다고 생각등이라고 넣습니다.

-d 옵션 및 -u 옵션을 조합하면(자), 소프트웨어 배포나 거기에 비슷하는 처리를 위해서(때문에) 디렉토리 계층을 작성하는데 이용할 수가 있습니다. /etc/mtree 에 놓여진 파일군은, 이 FreeBSD 배포의 거의 모든 디렉토리를 작성하는데 이용되었습니다.

관련 파일
/etc/mtree
    시스템의 파일 계층 기술 디렉토리

진단

관련 항목
chflags(1), chgrp(1), chmod(1), cksum(1), md5(1), stat(2), fts(3), md5(3), chown(8)

역사
mtree 유틸리티는 4.3BSD Reno 그리고 등장했습니다. MD5 다이제스트 기능은, cksum(1) (을)를 속이는 프로그램이 광범위하게 악용 되었는데 대항해 FreeBSD 2.1 그리고 추가되었습니다. 새로운 공격에 의해 MD5 의 약함이 나타났기 때문에, SHA-1 (와)과 RIPEMD160 의 다이제스트 기능이 FreeBSD 4.0 그리고 추가되었습니다. 파일 플래그의 서포트는 FreeBSD 4.0 그리고 추가되었습니다. 이 대부분은 NetBSD 유래입니다.