명령어란?
명령어는 하나의 프로그램으로
which 명령어를 통해
명령어가 저장된 위치를 확인할 수 있음
터미널 (CLI) 사용 기본 구조
[명령어] - [전달인자(argument)] - [옵션]
ping 8.8.8.8 -c 3
// ping = 명령어
// 8.8.8.8 = 전달인자(argument)
// -c = 옵션
명령어의 옵션을 확인하는 방법
PID : 프로세스 번호
PPID : 부모(상위) 프로세스 번호
zsh은 qterminal에 상속 돼 있음. (=qterminal 에서 zsh 을 실행)
vi 텍스트 편집기 사용법
esc (명령 모드) 옵션
:w [파일 제목] - 저장
:q - 종료
:! - 강제?
// wq! - 강제? 저장 종료
/[찾을 문자열] - 문자열 검색 기능
/apple - apple 문자열 검색
ㄴ> 찾는 문자열이 여러 개인 경우 키보드에 n (next)을 이용해서 다음 문자열로 이동할 수 있음
// 대문자 N 은 역순 방향으로 찾는 문자열로 이동
:[이동할 줄] - 원하는 줄로 이동 가능
// :8 - 8번째 줄로 이동
dd - 줄 삭제
// 3dd - 마우스 커서 아래 3줄 삭제
파일 확장자
텍스트 파일 읽기 (cat, more)
more 명령어 - 내용이 긴 파일을 읽을 때, 사용
스페이스바로 끊어 읽기 가능
중간에 나가고 싶은 때, q
디렉토리 생성
복사
※ 파일 복사 시
cp [복사 대상] [복사할 경로] [복사본 이름]
// cp text_file /home/kali/Desktop/text_file2
※ 디렉토리(폴더) 복사 시
cp -r [복사 대상] [복사할 경로] [복사본 이름]
// cp -r my_dir /home/kali/Desktop
삭제
rm [경로][파일]
// re /home/kali/Desktop/vi_test
rm -r [경로][디렉토리]
// re -r /home/kali/Desktop/rm_dir
-f : 강제 삭제 옵션
// re -rf /home/kali/Desktop/rm_dir
// rm -rf /
이동 (파일, 디렉토리 이동하기, 옮기기)
※ 파일 이동 시
mv [이동 대상] [이동할 경로]
// mv /home/kali/Desktop/mv_test ~/my_dir
※ 파일 이름 변경 시
// mv mv_test mv_ChangeName
사용자 생성 & UID, GID
/etc/passwd
root:x:0:0:root:/root:/usr/bin/zsh
1. 계정이름 (ID)
2. 비밀번호 (PW) -> /etc/shadow
3. UID
4. GID
5. 사용자의 별명
6. 홈 디렉토리
7. 로그인 쉘
/*
alioth:x:1001:1001::/home/alioth:/bin/sh
1. 계정이름 (ID) : alioth
2. 비밀번호 (PW) : shadow
3. UID : 1001
4. GID : 1001
5. 사용자의 별명 : none
6. 홈 디렉토리 : /home/alioth
7. 로그인 쉘 : /bin/sh
*/
rwx 권한
-rw-r--r-- 1 root root
1. 소유자 권한
2. 그룹 권한
3. 기타 사용자 권한
4. 소유자
5. 그룹
특수권한
1. setuid
// 파일 실행 시, 파일의 소유주 권한으로 실행
// -rwsr-xr-x 1 root root 72344 Feb 4 15:28 /usr/bin/passwd
// 실행권한이 있을 때, rws(rwx)
// 실행권한이 없을 때, rwS(rw-)
// passwd -> 비밀번호 변경 명령어 -> 비밀번호 변경할 때(passwd 명령어를 실행할 때)는 root의 권한으로 실행
2. setgid
// 파일 실행 시, 파일의 그룹 권한으로 실행
// -rwsr-sr-x (r-x)
// -rwsr-Sr-x (r--)
3. sticky bit
// 디렉토리에 설정 -> 공유 디렉토리 (tmp)
// 스티키 비트를 설정한 디렉토리는 누구나 파일을 생성할 수 있고, 생성자만 삭제할 수 있음
// drwxrwxrwt 13 root root 4096 Apr 5 10:09 tmp
// rwt(rwx)
// rwT(rw-)
권한 변경
chmod [권한 변경] [파일 이름]
// chmod o-w test_file
// chmod 644 test_file (rw-r--r--)
/*
사용자 : u
그룹 : g
기타 사용자 : o
권한 부여 : +
권한 회수 : -
읽기 권한 : r (4)
쓰기 권한 : w (2)
실행 권한 : x (1)
*/
리눅스 데이터 스트림 (Data Stream)
파일 디스크립터(File Descriptor) : 값
- 표준 입력(Standard Input Stream) : 0
- 표준 출력(Standard Output Stream) : 1
- 표준 에러(Standard error Stream) : 2
리다이렉션 (Redirection)
명령어의 결과를 화면이 아닌 파일로 저장하고 싶을 때
pwd > result
// (=pwd 1> result)
/*
cat result
/root/redirection_test
*/
id >> result
// (=id 1>> result)
// 리다이렉션 기호(>)를 하나만 사용하면 result 파일에 먼저 존재하던 내용이 지워지기 때문에 >> 두 개 사용
/*
cat result
/root/redirection_test
uid=0(root) gid=0(root) groups=0(root)
*/
find / -name "rockyou.text.gz"
// 권한이 없다는 에러 메시지 때문에 결과 값을 보기 힘듬
find / -name "rockyou.text.gz" 2> /dev/null
// find / -name "rockyou.text.gz" 2> /tmp/errorMsg
// 에러 메시지(2)를 리다이렉션 기호(>)를 통해 휴지통(/dev/null)으로 보냄
// 가독성 좋은 결과 값을 얻음
파이프 (PIPE)
어떤 프로세스의 출력을 다른 프로세스의 입력으로 넣어주고 싶을 때
grep [찾을 패턴] [수색 범위(파일, 디렉토리)]
// grep root /etc/passwd
cat /etc/passwd | grep root
/*
파이프 기호(|) 사용 시,
앞의 결과(cat /etc/passwd)를 표준 출력하지 않고,
파이프 뒤 grep 명령어의 [수색 범위]에 해당하는 입력으로 넘김
*/
'Linux' 카테고리의 다른 글
칼리 리눅스 환경 세팅 (1) | 2024.04.05 |
---|