Rocky 리눅스 기반으로 리눅스의 기본적인 부분을 정리해보겠다.
왜 윈도우 대신 리눅스를 쓰는가?
- 윈도우 - 사용자 편의성 ↑, 자원 ↑, Single User
- 유닉스/리눅스 - 사용자 편의성 ↓, 자원 ↓, Multi User ,
유닉스/리눅스 OS 주요 구성 요소

- 커널: 파일시스템 관리, 하드웨어 장치 관리, CPU 제어, 메모리 및 프로세스 제어
- 쉘: 사용자와 커널 사이의 인터페이스 ex) sh, bash
- 디렉토리: 파일을 가지고 있거나 다른 다렉토리를 가지며 계층적 구조
커널에 대해서 딥하게 공부하고 싶은데 일단 미래로 미뤄둔다... 언젠가 하겠지
| 제어 문자 | 설명 |
|---|---|
| Ctrl-C | 현재 동작중인 명령어 종료 |
| Ctrl-D | 파일의 끝 또는 종료를 나타냄 |
| Ctrl-U | 현재 명령어 라인을 모두 지움 |
| Ctrl-W | 커서가 있는 곳의 단어를 지움 |
| Ctrl-S | 화면 출력 중지 |
| Ctrl-Q | 화면 출력 시작 |
명령어의 사용법, 설명, 옵션, 사용하는 라이브러리, 시스템 콜 등을 보여준다.
man commmand
man option command
man option filename


ls: 디렉토리 내용 확인
-a: 숨겨진 파일 포기
-l: 내용 자세히 보기
-d: 디렉토리 자체 정보 확인

file: 특정 파일이 어떤 종류의 파일인지 확인

pwd: 현재 경로 나타냄

cd: 디렉토리 이동

절대경로: 루트 기준으로 이동
상대경로: 현재 디렉토리 기준으로 이동











c언어에서 포인터 생각하면 이해하기 편하다.



grep: 파일
grep {option} {pattern} {filename}

egrep: 확장 정규 표현식 지원
fgrep: 정규표현식 무시
※ 정규 표현식
| 메타 문자 | 용도 |
|---|---|
| ^ | 줄의 시작 설정 |
| $ | 줄의 마지막 지정 |
| . | 한 문자 대치 |
| * | 아무것도 없거나 여러 문자 대치 |
| [] | 패턴 중 한 문자 대치 |
| [^] | 패턴 중 제외할 한 문자 |
find {pathname} {expression} {action}
vim을 쓰자... nano도 좋고 vscode...
q, w, wq, q!
dd
r - 커서 위치 글자 하나 대체
u - 뒤로가기
ctrl r - 앞으로가기
y - 한줄 복사
p - 븥여넣기
x - 삭제
dd - 한줄삭제
v/V - 비주얼모드
%s/원래글자/바꿀글자/g - 원래글자를 바꿀글자로 변한 %s -> 1,3s 1~3번째줄만 바꾼다 전부다
g 없으면 한줄에 하나만 바꿈 exe old adbb old g없으면 앞에 하나만 바꾼다
유닉스/리눅스의 모든 파일/디렉토리는 퍼미션들의 집합으로 구성되어 있다

rwx를 8진수로 변환해서 생각하도록 하자. 이후 권한 부여(chmod)시 8진수로 변환해서 이용한다. ex) rwx-wx--x -> 731
파일과 디렉토리 생성 시기본 권한으로 생성
기본 권한은 umask에 의해 설정됨
umask 영구적 설정
/etc/profile
/etc/bashrc
~/.bash_profile
~/.bashrc
에서 umask xxx
TODO
PG 114 역 홑 다옴표 `` -> 요즘은 ()로
etc 밑에 전체적인설정
~밑에는 개별 사용자 설정
TODO
TODO
ps
pstree
top
pgrep
kill
pkill
pgrep pkill 같이쓴다
tar
옵션 c t x -> 선택
f -> 필수
이름같으면 덮어써짐
tar xf first.tar
tar xf first.tar -C /home/user
※ SSH
VBox/VMware에 Rocky 를 띄워서 이용하고 있는데 아무래도 가상머신 내에 쉘창에서 이용하는 것 보다 SSH를 이용하여 윈도우 CMD로 연결하여 쓰자...
Virtual Box 기준으로 작성하지만 VMware도 비슷하니까 동일하게 적용할 수 있다.

네트워크 탭에서 "호스트 전용 어댑터"를 추가한다.

enp0s8 또는 본인의 호스트 전용 어댑터 이더넷 부분이 Connected로 변경되어 있는지 확인하자... 이거 확인안하고 왜 ip 가 부여안되고 있는지 한참 해맸다.

쉘을 열고 ifconfig 명령어를 이용해 enp0s8의 ip 주소를 확인한다.
sudo dnf install -y openssh-server
sudo systemctl enable sshd --now
이후 ssh 연결을 위해 ssh를 install 해준다.
systemctl status sshd
설치 후 해당 명령어를 입력했을때 active라고 나온다면 정상적으로 설치된 것이다.

윈도우 cmd에서 ssh {name}@{ip}를 입력하고 password를 입력하면 연결에 성공할 수 있다.
추가적으로 ssh는 비밀번호를 이용한 연결과 키를 이용한 연결 두가지 방식있다.
키를 이용한 연결을 할 시에는 ssh-keygen을 이용해 RSA 키 쌍을 생성 후 비밀키가 저장된 경로를 이용해 연결을 한다.
ssh {name}@{ip} -p {port} -i {path}
-p는 포트 번호 지정이고 비밀번호를 이용한 연결에도 필요시 적어주자.
-i는 키 경로를 지정하는 옵션이다. RSA 키 쌍을 생성 후 비밀키 경로를 넣으면 된다.
자세한 ssh-keygen 생성및 적용 방법까진 정리하진 않겠으나 구글링하면 정리가 잘 되어있다. 생성형 AI도 답변 잘 해주고...
wargame에서 ssh 키 연결하는 부분에 비밀번호와 키를 이용한 연결 2가지가 있다는 것을 정확히 인지하지 못해 해맸기에 해당 부분을 추가적으로 적었다.
※ 참고자료
테크넷과 함께하는 유닉스 관리자를 위한 엔터프라이즈 솔라리스 핵심 운영 가이드 2판
https://wikidocs.net/278175
https://m.blog.naver.com/islove8587/221945262618
https://yuxlog.tistory.com/14
https://handari.tistory.com/8#google_vignette
https://whitehairhan.tistory.com/426