Shell00

Worldi·2021년 10월 5일
0

42seoul

목록 보기
1/15

ex03 에서 exo.tar 만 남기고 파일 지우기


1.

cat z : z 라는 파일을 보여주라는 의미
cat : 파일의 내용을 출력하라.

2.

  • chmod 로 권한 변경
    각각 링크 수, 용량, 시간을 의미함
    링크 수는 1이므로, 따로 지정해줄 필요가 없음.
    용량은 40.

  • 시간을 지정해주는 명령어 :
    touch 명령어를 이용해 touch -t "202106012342" testShell00 과 같이 지정해줌.

  • tar -cf 명령어는 파일을 압축할때 쓰이는 명령어.
    f는 기본옵션이고(대상 아카이브를 지정), c는 파일을 압축할 때 쓰임.

  • 용량을 지정해 주는 명령어 :
    $ head -c 5M /dev/urandom > 5mb_test.txt

https://info-lab.tistory.com/302

3. ex01 의 연장선

ls -l 명령어는 일단 파일을 나열하라는 의미,-l 옵션을 사용하면 각 줄별로 파일에 대한 정보를 확인할 수 있습니다. 이때 표시되는 내용은, 다음과 같은 정보를 순서대로 나타낸다.

[권한][링크 수] [소유자][그룹] [파일 크기][시간] [파일명]

  • 문제에서 요구하는 것
    ex01 번과 같이, 파일의 권한 변경, 용량 변경, 시간 변경, 그리고 심볼릭 링크와 하드링크를 아느냐.
    파일에 설정된 링크의 갯수를 나타냅니다. 처음 생성할 때 파일에는 1, 디렉토리에는 2가 할당되며 하드 링크를 생성한 숫자만큼 증가합니다.
    심볼릭 링크를 설정할 때는 이 값이 변하지않는다.
    ln [원본 파일명][링크 이름]
    ln 명령어로 하드 링크를 생성할 수 있습니다. 하드 링크는 원본 파일(타겟)과 동일한 내용을 가지고 있으며 원본이 삭제되어도 사용할 수 있습니다.

ln -s [원본 파일명][링크 이름]
ln 명령어에 -s 옵션으로 심볼릭 링크(소프트 링크)를 생성할 수 있습니다. 심볼릭 링크는 원본 파일의 위치를 가리키는 포인터가 포함되며 원본이 삭제되면 사용할 수 없습니다.
test0 : 디렉토리 , chmod 715 test0, touch -t "" test0
test1 : 파일, chmod 714 test1 , touch -t "" test1 , head -c 4 /dev/urandom > test1,
test2 : 디렉토리 , chmod 504 test2, touch -t "" test2,
test3 : 파일 , chmod 404 test3, touch -t "" test3, head -c 1 /dev/urandom > test3, but 링크가 두개다. 하지만 자세히 보면 test3, test5 가 같은 것을 확인할 수 있다. 따라서 두개를 하드 링크로 바꾸어주면 각각 링크를 두개씩 갖게 하며 동일한 내용을 갖게 할 수 있다,
test4: 파일
test5 : 심볼릭 링크, ln -s test0 test6 명령어를 통해 바꿀 수 있다.

4. ex03 : Kerberos 티켓 설명

커버로스 프로토콜이란?
커버로스는 티켓(ticket) 기반의 컴퓨터 네트워크 인증 프로토콜이다.
보안이 보장되지 않은 네트워크 환경에서 요청을 보내는 유저와 요청을 받는 서버가 서로의 신뢰성을 확보하기위해 사용된다.

티켓이 뭔가요? 왜 쓰는거죠?
커버로스에서 사용하는 티켓은 유저 아이디를 안전하게 전달하는 데 사용되는 정보 패킷이다.
티켓에 포함하는 대표적인 정보들은 다음과 같다.
유저 아이디
유저 호스트의 IP 주소
타임 스탬프(time stamp, 시간 기록)
티켓 수명을 정의하는 값
세션 키
이러한 정보들을 담고 있는 티켓은 티켓을 발급하는 서버의 비밀 키(secret key)로 암호화(encrypt)된다.

kinit :

kerberos ticket 생성
kinit -p your_principal 형태로 default realm 외 티켓 생성이 가능 (principal 예시 : your_id@your_realm)
kinit -t your_keytab 형태로 keytab을 이용한 티켓 생성이 가능

klist :
만들어진 티켓 목록을 확인
klist -l 로 모든 티켓 목록을 확인 가능
klist -vA 로 모든 티켓 상세내용을 확인 가능 (macOS : klist -vA, linux : klist -aA)

ktutil :
keytab 생성/관리 기능
-k 로 keytab 위치 지정
add 로 keytab 생성
-p 로 principal 기술
-e 로 encript type 지정
-V 로 version 기술
list 로 keytab 내용 확인
사용할 수 있는 ip 가 지정된 티켓과 달리 keytab의 경우 접근만 가능하면 쓸 수 있어 다른 서버로 옮겨 사용이 가능
ktutil 참고 링크 : https://kb.iu.edu/d/aumh

[출처] kerberos 명령어|작성자 Curycu

5. ex04 :

https://unix.stackexchange.com/questions/20460/how-do-i-do-a-ls-and-then-sort-the-results-by-date-created
https://www.computerhope.com/unix/uls.htm
https://www.freebsd.org/cgi/man.cgi?query=ls&sektion=1&manpath=FreeBSD+11.0-RELEASE

  • 조건 : 현재내의 모든 파일과 디렉토리를 쉼표로 분리 -> 기준이 생성일. 디렉토리 이름 뒤에는 슬래시
    1) 디렉토리 이름 뒤에 슬래시 : --indicator-style=word Append indicator with style word to entry names: none (default), slash (-p), file-type (--file-type), classify (-F).
    2) . , .. 이거는 제외 하고 리스트 해라
  • ignore 하지 않은 것 -a , ignore하는 명령어 -A
    3) ls -R 명령어는 하위 디렉토리까지 모두 표시합니다.
    4) -m : 모든 파일과 디렉토리를 쉼표로 분리하는 것
    5) -t 명령어 : 최근 수정된 순서대로 출력.

ctime 은 change time 으로 createime 이 아님.
따라서 ls -mpUt 가 답임!!!

6. ex05 :

https://git-scm.com/book/en/v2/Git-Basics-Viewing-the-Commit-History
https://stackoverflow.com/questions/1967967/git-command-to-display-head-commit-id

-문제의 조건 : 1. 커밋의 ID 표시 2. 다섯개를 표시해야함.

마지막 5개 : -5 하는 것
git log --format="%H" -5
또는 --pretty 도 가능
commit 의 hash 값 출력

7. ex06 :

  • 문제의 조건 : 1. git 에 관련된 파일들을 나열 2. 어떤 파일? git 저장소가 무시하는 파일

https://ithub.tistory.com/205
https://stackoverflow.com/questions/15925079/why-does-git-ls-files-ignore-require-exclude-patterns

1.ls-files 명령어를 사용함 이 명령어는 git 저장소에 관련된 index 라던가, working tree 라던가에 관련된 파일의 정보를 보여줄때 쓴느 것. 작업 트리란 우리가 로컬에서 작업하는 것을 말하고 add 를 하게 되면 staging 되어서 index 에 있는 것. 변경사항을 기록하기 위해서는 인덱스에 저장되어야 함. index 란 공간을 가상 공간.
2. -ignored 란 뜻은 --exclude 하고 같이 쓰임. 왜냐하면 --exclude에서 매칭된 것들만 보여주기 때문이다.
3. 그럼 여기서 -o의 존재가 궁금ㅁ할 수 있다. -o는 -others 라는 의미로,

--exclude-standard : gitignore 파일의 규칙에 따른다. 즉, git ignore 에 명시된 파일은 표시하지 않는다.

https://nochoco-lee.tistory.com/47
git check-ignore 명령어는 어떤 파일들이 Git 에서 ignore 처리되어 있는지 알려준다.
커맨드라인에서 파일 이름들을 인자로 넘기면, git check-ignore 는 그 중에서 ignore 처리된 파일 이름들을 나열해줄 것이다.
By default, tracked files are not shown at all since they are not subject to exclude rules; but see ‘--no-index’.
find . (현재 디렉토리 및 하위 디렉토리 모두 포함)

cf ) 참고 find https://recipes4dev.tistory.com/m/156#313-%EA%B2%80%EC%83%89%EB%90%9C-%ED%8C%8C%EC%9D%BC%EC%97%90-%EB%8C%80%ED%95%9C-%EC%83%81%EC%84%B8-%EC%A0%95%EB%B3%B4-%EC%B6%9C%EB%A0%A5-find--ls
https://jm4488.tistory.com/60
https://lascrea.tistory.com/62
exec

: 앞선 명령어의 결과를 입력으로 받아 “\;” 라는 표기자를 만날때까지 읽고 실행

: 즉 exec 커맨드의 끝을 ';'(세미콜론)으로 표기해줘야함

: '+' 옵션은 인자를 연속으로 입력해서 커맨드 한번으로 실행하게끔 해줌
git ls-files -o -i --exclude-standard
find . -type f -exec git check-ignore {} + | cut -c 3-
find . -exec git check-ignore {} + | xargs -I{} basename {}

8. diff :ex07

  1. https://www.geeksforgeeks.org/diff-command-linux-examples/
    https://ithub.tistory.com/205

diff a b > sw.diff

patch -p0 -R b <sw.diff

https://twpower.github.io/195-how-to-apply-patch-file
https://hiseon.me/c/diff-patch/

https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=pichxp&logNo=10154086870
http://www.w3big.com/ko/linux/linux-comm-patch.html
https://linuxize.com/post/diff-command-in-linux/

patch -p0 a -o b < sw.diff

9. ex08

https://recipes4dev.tistory.com/156
https://unix.stackexchange.com/questions/50612/how-to-combine-2-name-conditions-in-find

https://unix.stackexchange.com/questions/503528/get-list-of-files-deleted-by-find-delete

10. ex09 : clean

https://stackoverflow.com/questions/7236191/how-to-create-a-custom-magic-file-database
https://devanix.tistory.com/180
man magic 참조

file -C -m
file -m ./magicfile.mgc

① 0 string \177ELF ELF

파일의 처음부터 0바이트 떨어진 위치의 문자열이 "\177ELF"와 일치하는지 확인.

→ 일치하므로 "ELF"라고 표시

② >4 byte 0 invalid calss

처음부터 4바이트 떨어진 위치의 1바이트가 1임을 확인.

→ 일치하지 않으므로 다음 행으로 이동.

③ >4 byte 1 32-bit

처음부터 4바이트 떨어진 위치의 1바이트가 1임을 확인.

→ 일치하므로 "32-bit"라고 표시

④ 이후 당분간 일치하지 않으므로 계속 진행.

⑤ >5 byte 1 LSB

처음에서부터 5바이트 떨어진 위치의 1바이트가 1임을 확인.
https://cweiske.de/tagebuch/custom-magic-db.htm
https://stackoverflow.com/questions/64888377/my-file-doesnt-return-the-magic-file-message

profile
https://worldi.tistory.com/ 로 블로그 이전합니다.

0개의 댓글