※ - : 약자
-- : 단어 전체
- 컴퓨터 종료
$ shutdown -P now
or
$ halt(process가 종료되지 않아도 강제 종료)
or
$ init 0(run-level)
or
$ poweroff
- 재부팅
$ reboot
- 로그아웃
$ logout
or
ctrl + d
- 가상 콘솔 이동
ctrl + alt + F1~6
- 런 레벨
'init' 명령어 뒤에 붙는 숫자를 런레벨이라 함
0 - Power Off
1 - Rescue(시스템 복구 모드)
2 - Multi-User(사용하지 않음)
3 - Multi-User(텍스트 모드)
4 - Multi-User(사용하지 않음)
5 - Graphical(그래픽 모드)
6 - Reboot
런레벨 모드를 확인하려면 /lib/systemd/system 디렉터리(rocky 9 기준)의 runlevel?.target 파일을 확인
centos에서 부팅 시 텍스트 모드로 바꾸기
# systemctl set-default multi-user.target
centos에서 부팅 시 그래픽 모드로 바꾸기
# systemctl set-default graphical.target
- 명령어 기록 보기
$ history
- 에디터 사용
$ vim test.txt
dd : 한 행 삭제
yy : 한 행 복사
p : 붙여넣기
6dd : 여섯 행 삭제
6yy : 여섯 행 복사
set number(set nu) : 각 행에 번호 붙이기
::10 : 10번째 행으로 커서 이동
- 명령어 매뉴얼 보기
$ man ls : ls 명령어의 매뉴얼을 보여줌
- 마운트
$ df : 마운트 된 장치 목록 확인
$ mount 장치명 : 마운트
$ mount 장치명 디렉터리명 : mount point에 마운트
$ umout 장치명 : 마운트 해제
- 경로
. : 현재 디렉터리
.. : 부모 디렉터리
/ : root 디렉터리
$ ls(listd의 약자) : 현재 경로 내에 파일 목록을 보여줌(-l : 자세하게. -a : 숨김 파일까지, -i : inode값)
$ cd(change directory의 약자) 디렉터리명 : 해당 디렉터리로 경로 이동
$ rm(remove의 약자) 파일명 : 해당 파일 삭제
$ rmdir 디렉터리명 : 해당 디렉터리 삭제
$ mkdir(make directory의 약자) 디렉터리명 : 해당 디렉터리로 새로운 디렉터리 생성
$ pwd : 현 경로 확인
$ cp(copy의 약자) 복사할 파일명 또는 디렉터리명 복사될 파일명 도는 디렉터리명: 해당 파일이나 디렉터리를 복사
$ touch 파일명 : 크기가 0인 새 파일 생성, 이미 존재하는 경우 수정 시간을 변경
$ mv(move의 약자) 이동할 파일명 또는 디렉터리명 이동될 파일명 또는 디렉터리명 : 파일과 디렉터리 이름을 변경하거나 위치 이동
$ 에디터 파일명 : 해당 파일을 해당 에디터로 편집, 파일이 없을 경우 생성
- 출력
$ cat 파일명 : 파일 내용 출력
$ tail 파일명 : 파일 내용의 뒷부분 출력(-n num : 뒷부분의 n번째 줄까지 출력)
$ head 파일명 : 파앨 내용의 앞부분 출력
$ more 파일명 : 텍스트로 작성된 파일을 화면에 페이지 단위로 출력
$ less 파일명 : more과 비슷하지만 기능이 더 확장된 명령
$ watch -n num "cat 파일명" : num sec마다 갱신
$ 명령어 | grep 문자 : 문자가 포함된 행만 명령어 수행
- 사용자와 그룹
/etc/passwd 파일에 사용자가 정의되어 있음(사용자 이름 : 암호(암호화) : 사용자ID : 그룹 ID : 전체 이름 : 홈 디렉터리 : 기본 셸)
/etc/shadow 파일에 비밀번호가 암호문으로 정의되어 있음
/etc/group 파일에 정의되어 있음(그룹명 : 비밀번호 : 그룹 ID : 그룹에 속한 사용자명)
$ useradd 사용자명 : 사용자명으로 새로운 사용자를 추가(/home 디렉터리 밑에 사용자명의 디렉터리가 생성됨)
$ passwd 사용자명 : 사용자의 비밀번호를 지정하거나 변경
$ usermod 옵션 원하는 속성을 가진 사용자명 변경할 사용자명: 사용자의 속성을 변경(-u : 사용자, -g :그룹, -d : 홈 디렉터리, -s : 셸 지정)
$ userdel 사용자명 : 사용자를 삭제(추가로 /home 디렉터리 밑에 사용자명의 디렉터리까지 삭제해주어야 함)
$ whoami : 현재 사용자를 출력
$ su 사용자명 : 계정 전환
$ groupadd 그룹명 : 그룹명으로 새로운 그룹 추가
$ groupmod 옵션 그룹명 그룹명 : 그룹의 속성을 변경
$ groups : 현재 사용자가 속한 그룹 확인
$ chage 사용자명 : 사용자의 암호를 주기적으로 변경하도록 설정
$ groupdel 그룹명 : 그룹 삭제
$ gpasswd 그룹명 : 그룹 암호 설정
$ id 사용자명 : 사용자의 UID, GID 확인
- 소유와 허가권
파일 유형 파일 허가권 링크 수 파일 소유자 이름 파일 소유 그룹이름 파일 크기 마지막 변경 날짜/시간 파일 이름
ex. -rw-r--r-- 1 root root 0 7월6일 17:23 sample.txt
파일 유형 : 디렉터리일 경우에는 d, 일반적인 파일일 경우에는 -가 표시
파일 허가권 : 3개씩 끊어서 읽음, 첫 번째는 소유자의 파일접근권한, 두 번째는 그룹의 파일접근권한, 세 번째는 그 외의 사용자의 파일접근권한, 숫자로도 표시 가능(8진수)
$ chmod 파일 허가권 파일 또는 디렉터리 : 파일 허가권 변경 명령어
파일 소유권 : 파일을 소유한 사용자와 그룹을 의미
$ chown/chgrp 사용자명 또는 그룹명 파일 : 파일의 소유권을 바꾸는 명령어(chown은 사용자, 그룹 모두 가능, chgrp은 그룹만 가능)
파일 링크 : 하드 링크(모두 같은 inode1을 사용)와 심볼릭 링크(새로운 inode2를 만들고 데이터는 원본 파일을 연결하는 효과) 두 가지가 있음
inode : 파일 또는 디렉터리에 대한 정보(일종의 인덱스)를 가진 데이터
$ ln basefile hardlink : 하드 링크 파일 생성(원본 파일 삭제 시에 해당 파일이 원본이 됨)
$ ln -s basefile softlink : 소프트 링크 파일 생성
- rpm(패키지 매니저)
redhat package manager
설치 : rpm -Uvh 패키지파일이름.rpm
-U : 패키지가 설치/업그레이드
-v : 설치과정의 확인
-h : 설치진행과정을 #마크로 화면에 출력
삭제 : rpm -e 패키지이름
패키지가 설치되었는지 확인 : rpm -qa 패키지 이름
rpm 파일 위치는 df 명령어로 cdrom의 위치를 확인
의존성 문제가 있음 -> 해결하기 위해 yum 등장
- yum(패키지 매니저)
yellowdog updater modified
설치 : yum install 패키지이름
rpm 파일 설치 : yum localinstall rpm파일이름.rpm
업데이트 가능한 목록 보기 : yum check-update
업데이트 : yum update 패키지이름
삭제 : yum remove 패키지이름
정보 확인 : yum info 패키지이름
- dnf
yum의 단점을 개선
사용 방법은 동일
- 파일 압축
xz 파일명 : .xz로 압축, 해제
bzip2 파일명 : .bz2로 압축, 해제(-d)
bunzip2 파일명 : 해제
gzip 파일명 : .gz로 압축, 해제(-d)
gunzip 파일명 : 해제
- 파일 묶기
tar 옵션 파일 파일 : .tar로 묶음 파일을 만들어 주거나 묶음을 풀어줌(-c : 묶기, -x : 풀기, -t : 경로확인, -v : 과정 보이기, -f : 파일, -J : tar+xz, -z : tar+gzip, -j : tar+bzip2)
- 파일 위치 검색
find 경로 옵션 조건 action : 기본 파일 찾기(-name, -user : 소유자, -newer : 전, 후, -perm : 허가권, -size : 크기, -print : 디폴트, -exec : 외부명령 실행)
ex. find /home -name "*.swp" -exec rm {} \;
※ \ : 외부 명령어의 끝을 의미
- cron
주기적으로 반복되는 일을 자동적으로 실행될 수 있도록 설정
관련된 데몬(서비스)은 crond, 관련 파일은 /etc/crontab
/etc/crontab ex. minute hour day of month month day of week 명령어
$ crontab -e : crontab 편집
$ crontab -l : crontab에 있는 내용 출력
$ systemctl restart cond : crontab 설정 후 관련된 데몬을 재부팅
- at
cron은 주기적 반복 작업 예약, at은 일회성 작업 예약
$ at hour: minute am or pm
at> 명령어
ctrl + d
$ at -l : 설정된 작업 확인
- 파이프
두 개의 프로그램을 연결해주는 연결통로의 의미
"|" 문자를 사용함
ex. ls -l /etc | more
- 필터
필요한 것만 걸러주는 명령어
grep, tail, wc, sort, awk, sed 등
주로 파이프와 같이 사용
ex. ps -df | grep bash
- 리다이렉션
표준 입출력의 방향을 바꿔줌
ex. ls -l > list.txt
>이 하나면 이어쓰기, >> 덮어쓰기
- 프로세스, 데몬
하드디스크에 저장된 실행코드(프로그램)가 메모리에 로딩되어 활성화된 것
포그라운드 프로세스 : 실행하면 화면에 나타나서 사용자와 상호작용을 하는 프로세스
백그라운드 프로세스 : 실행은 되었지만, 화면에는 나타나지 않고 실행되는 프로세스
프로세스 번호 : 각각의 프로세스에 할당된 고유번호
작업 번호 : 현재 실행되고 있는 백그라운드 프로세스의 순차번호
모든 프로세스는 부모 프로세스를 가지고 있음
부모 프로세스를 kill하면, 자식 프로세스도 자동으로 kill 됨
$ ps -ef | grep 프로세스 이름 : 해당 프로세스의 상태를 확인하는 명령어
$ kill -9 프로세스 번호 : 프로세스를 강제로 종료하는 명령어
$ pstree : 부모 프로세스와 자식 프로세스의 관계를 트리 형태로 보여줌
$ jobs : 진행중인 프로세스 확인
$ fg : 백그라운드 프로세스를 포그라운드 프로세스로 전환(jobs에서 + 표시된 프로세스가 우선)
$ bg : 포그라운드 프로세스를 백그라운드 프로세스로 전환(전환 전에 ctrl + z로 suspend 상태로 만든 후 진행)
- 루트 비밀번호 분실 시
재부팅
grub에서 e 버튼
linux6에서 end 버튼
rghb 전까지 지우고 init=/bin/bash
재부팅
bash shell 진입됨
# mount -o remount rw / -> 재마운트
# passwd root -> 패스워드 변경
재부팅
- grub 설정
$ vim /etc/default/grub
timeout = 3 -> grub에서 3초 대기 후 실행
$ grub2-mkconfig -o /boot/grub2/grub.cfg
- 커널 업그레이드
$ uname -a 로 버전 확인
www.kernel.org에서 커널 버전 다운
압축 해제
해당 폴더로 경로 이동
$ make mrproper -> 커널 초기화(폴더 안에서)
$ make xconfig -> 커널 설정 파일(filesystem:ntfs 선택)
$ make dep
$ make clean -> 기존정보 삭제
$ make bzImage
$ make; make modules; make modules_install; make install -> 설치(; : 여러 명령어 한번에 실행)
'🔐 [정보보안] 모의해킹 침해대응 전문가 취업캠프 > Server' 카테고리의 다른 글
[Linux] Telnet, SSH (0) | 2023.09.12 |
---|---|
[Linux] 디스크 관리 (0) | 2023.09.12 |
[Linux] 리눅스 개요 (0) | 2023.08.30 |
[Server] 환경 설정 (0) | 2023.08.29 |
[Server] 하이퍼바이저 (0) | 2023.08.29 |