본문 바로가기
Linux

리눅스 기초(레드헷) - (09/24, 10/01)

by 리아챌 2025. 2. 20.

■ 리눅스의 시작과 종료
  ▷ shutdown
# shutdown  [옵션]  [시간]
-h : 시스템 종료 
-r : 시스템 재부팅
-c : 예약된 셧다운 취소
-k : 셧다운 메세지만 전송
-P : 시스템 종료 + 전원 끄기
  ※ 시간
   - 기본적으로는 +m 형식
   - 또는 hh:mm 설정
   - now 지금 바로
 ex) shutdown -h now, shutdown -r +30, shutdown -h 16:30

  ▷ halt
# halt -P : 시스템 종료(+전원끄기)
# halt -f : 강제 종료

  ▷ reboot
# reboot : 시스템 재시작

  ▷ init
   - init 프로세스에 직접 요청하여 실행 레벨을 변경
   - 실행 중인 프로세스를 무조건적으로 종료, 알림 X
# init 0 : 시스템 종료
# init 6 : 시스템 재시작

■ 이동 및 확인
 ▷ 현재 위치 확인
# pwd

 ▷ 위치 이동
# cd  [경로] : 지정된 경로로 이동
# cd : 접속한 계정의 홈 디렉토리로 이동
# cd ~[계정] : [계정]의 홈디렉토리로 이동
   - 절대경로 : 최상위 디렉토리인 /를 기준으로 상대방 위치를 지정
      / 로 시작
   - 상대경로 : 현재 내가 있는 위치를 기준으로 상대방 위치를 지정
     ./ (현재 내 위치), ../(현재 위치의 상위 디렉토리)로 시작
      =>  ./ 는 생략 가능

 ▷ 디렉토리 내용 확인
# ls  [옵션]  [경로]
-l : 자세히
-h : 단위를 사용자가 보기 편하게 (K, M, G)
-a : 숨긴 파일 및 디렉토리 표시
-ld : [경로]의 속성을 자세히 (디렉토리일 경우 사용)
-R : 하위 디렉토리까지

■ 파일 및 디렉토리
 ▷ 파일 생성
# touch  [경로/파일이름]
- 크기가 0인 빈 파일 만들기
- 파일이 존재하는 경우 마지막 수정날짜 변경

 ▷ 디렉토리 생성
# mkdir  [경로/디렉토리 이름] : 디렉토리 생성
-p : 상위 디렉토리가 없는 경우 같이 생성

 ▷ 파일 삭제
# rm  [옵션]  [대상]
-i : 삭제 시 물어봄
-f : 안물어보고 삭제
-r : 디렉토리까지 삭제 가능

 ▷ 디렉토리 삭제
# rmdir  [경로/디렉토리]
- 빈 디렉토리 삭제

 ▷ 파일 및 디렉토리 복사
  - [타겟]을 복사해서 [목적지]에 붙여넣기
#  cp  [타겟]  [목적지]
 

 ※ 결과
   1. 목적지가 디렉토리일 경우
-> 디렉토리 안으로 복사
   2. 목적지와 같은 이름이 없을 경우
-> [목적지] 이름으로 복사 (복사+이름변경)
   3. 목적지가 파일일 경우
-> 덮어쓰기
  ※ 옵션
-p : 권한 정보를 똑같이하여 복사
-r : 디렉토리일 경우 안의 내용까지 다 복사

 ▷ 파일 및 디렉토리 이동
  - [타겟]을 잘라내서 [목적지]에 붙여넣기
#  mv  [타겟]  [목적지]
  ※ 결과
   1. 목적지가 디렉토리일 경우
-> 디렉토리 안으로 이동
   2. 목적지와 같은 이름이 없을 경우
-> [목적지] 이름으로 이동 (이동+이름변경)
   3. 목적지가 파일일 경우
-> 덮어쓰기
  => 2번을 응용하여 파일 및 디렉토리 이름 변경에 사용

■ history
  - 이전에 실행했었던 명령어들을 볼 수 있음
!! 직전 명령어 실행
!번호 '번호'에 해당하는 명령어 실행
!문자 '문자'로 시작하는 가장 최근 명령어 실행

■ hostname
   - 네트워크에서 노드를 식별하는 이름
 ◇ hostname
   - hostname을 출력
   - /etc/hostname에 기록 (재부팅 시 적용)
   - 즉, hostname을 변경하려면 /etc/hostname에서 변경

 ◇ OS 릴리즈 정보 확인
  - redhat 계열 cat /etc/redhat-release
  - 데비안 계열 lsb_release -a



● 복사 - test 파일에 붙여넣기

  

● vi 에디터 - 파일을 편집하기 위한 프로그램
i키를 누르면 입력 모드로 들어가서 Esc를 누르면 원래 상태(명령 모드로) 돌아온다
나가려면 :wq(저장하고 나가기)를 입력한다 q!를 입력하면 수정을 했더라도 저장을 안하고 강제로 나간다.

● 행 번호를 붙여주는 명령어 (:set number = :se nu)



※ 꼭 외워야 하는 명령어
Shift + G -> 파일 제일 밑으로 내려오는 단축키
gg -> 파일의 제일 첫 행으로 이동
u -> 되돌리기
i -> 입력모드 진입
# -> 주석 처리
:se nu(set number) -> 행 번호 표시
:숫자 -> '숫자'행으로 이동
:w -> 저장
:wq -> 저장하고 나가기
:q -> 그냥 나가기
:q! -> 강제로 나가기
/[패턴] -> '패턴'검색 (대괄호는 옵션)
n -> 다음 패턴 검색
yy -> 행 복사 (숫자 yy)
p -> 붙여넣기 (커서 위치 밑에 행에 붙여넣기)
dd -> 행 삭제 (숫자 dd)


● 파일 내용 확인
-> cat [옵션] [파일 이름] - 표준 입력으로 받은 값을 표준 출력으로 이어주는 명령(파일의 내용을 화면에 출력)
-b : 행번호 붙이기 (공백제외)
-n : 행번호 붙이기 (공백포함)

▷ more 또는 less [파일]
-> 파일의 내용을 한 페이지씩 출력
-> less가 more를 발전시켜 나온 명령어
-> 스페이스, 페이지업 다운, 엔터, 방향키로 이동
-> /[패턴]으로 패턴 검색 가능, 다음 단어는 n
-> 나갈 때는 q

※ less -N[파일] : 행번호와 같이 출력

▷ head [파일] : 파일의 처음부터 10행 출력
-n(숫자) : 처음부터 n행 출력

 


▷ tail [파일] : 파일의 끝부터 10행 출력
-n(숫자) : 마지막부터 n행 출력
 




● find 
# find [찾을 경로] [옵션] [조건] [액션]
※ 옵션
-name : 파일 이름으로
-size : 파일 크기로
-perm : 파일 퍼미션
-user : 소유자로
-group : 소유 그룹으로
-uid : 소유자의 uid로
-gid : 소유 그룹의 gid
-ctime : 내용 및 속성을 변경한 시간 기준
ex) 파일 이동
-mtime : 데이터 수정 시간 기준
ex) 문서 내용 수정
-type : 파일, 디렉토리 등 타입을 지정
ex) f : 일반 파일(기본값), d : 디렉토리

※ 액션
-print : 화면에 출력 (기본값)
-ls : 자세히 출력
-exec [명령] {} \; -> 찾은 결과로 뒤에 [명령]을 실행


 

● grep - 파일 안에서 '패턴'을 포함하는 행 출력
#grep [옵션] [패턴] [파일명]
-n : 행 번호와 함께 출력
-i : 대소문자 구분 안함
-v : 패턴이 포함되지 않는 행 출력
-c : 패턴이 포함된 행의 갯수만 출력
※ grep을 이용하여 [패턴]이 포함된 파일 찾기
grep -r [패턴] [디렉토리]

● 파이프 ( | <- Shift + \)
- 두 개의 프로그램(혹은 명령)을 연결해주는 역할
- 필터링 (grep과 함께 사용)

● 리다이렉션 - 리다이렉션 기호를 사용하여 입출력의 방향을 바꿔줌
-> 파일 디스크립터 숫자
표준 입력 (키보드 입력)  0
표준 출력 (모니터 화면으로 나오게 정상 결과)  1
표준 에러 (모니터 화면으로 나오는 에러메시지) 2
-> 리다이렉션 기호 ( < , > ) - 표준 입출력의 방향을 바꿔주는 기호
> : 출력을 표준 입력으로 바꿔줌 (덮어쓰기)
>> : " (이어쓰기)
< : 표준 입력값을 표준 출력으로 바꿔줌

ex) 계정 생성 시 'welcome'문서 배포하도록 설정 그리고 그 안의 내용은 아무거나(Echo 명령을 사용하면 된다.)

  

● whereis, which
-> whereis - 명령의 바이너리 파일이나 메뉴얼 파일의 위치 찾기
-> which - 명령 파일의 경로를 알려줌



● 사용자 및 그룹 - 모든 계정은 반드시 1개 이상의 그룹에 속해 있다. 
▷ /etc/passwd - 계정(사용자)의 정보가 저장된 파일 (20번)
-> 20번 5번째 HJW는 계정에 대한 설명


 
1. 로그인ID(계정)
2. 비밀번호 - 현재는 /etc/shadow로 이전
3. UID - 사용자 ID, 시스템이 사용자를 구분하기 위해 사용
0~999 시스템 UID, 일반 사용자는 1000부터 할당
4. GID - 그룹 ID
5. 계정에 대한 설명
6. 계정의 홈디렉토리
7. 로그인 쉘(nologin이라 되어있는 상태는 로그인 하지 않는 상태)

▷ /etc/group - 그룹의 정보가 저장이 된 파일 (hjw(주그룹)는 wheel(보조그룹)과 hjw에 속해 있음)


 
hjw(주그룹):x:1000(계정명):hjw
1. 그룹명
2. 그룹 비밀번호
3. GID
4. 그룹원

※ 계정이 속해있는 그룹을 확인할 때 
# groups [계정]


 
▷ /etc/shadow - 계정 암호에 대한 정보를 관리 (20번)
-> 해시 암호화를 사용(데이터 무결성 검증), 복호화 불가능 


 
ex) /:19900:0(암호 최소 사용기간):99999(암호 최대 사용기간):7(암호 만료 경고):(암호 만료 후 사용할 수 있는 기간):(계정 만료 기간): (예비용 칸)
1. 로그인 ID (계정)
2. 비밀번호
3. 암호의 최종 변경일 (1970년 1월 1일을 기준으로 지난 날짜)
4. 암호 최소 사용 기간
5. 암호 최대 사용 기간
6. 암호 만료 경고
7. 암호 만료 후 사용할 수 있는 기간 (INACTIVE = -1은 적용하지 않는다는 뜻)
8. 계정 만료 기간

※ 사용자 생성
- 기본적으로 계정은 1개 이상의 그룹에 반드시 속해야 한다.
- 기본 설정은 계정의 이름과 똑같은 그룹이 생성되며 계정은 그 그룹에 속하게 된다.

 

※ adduser와 useradd 차이
- useradd : '계정'만 생성, 나머지는 다 설정 필요
- adduser : 기본적인 옵션이 적용되어 생성 (CentOS에서는  useradd = adduser)

 


# useradd [옵션] [계정]


 
-g : 기본 그룹 지정
-G : 보조 그룹 지정
-c : 설명
-u : UID 지정
(-m : 홈디렉토리 생성)
-b : 홈디렉토리 지정 (베이스, 상위 디렉토리 지정)
-d : 홈디렉토리 지정 (디렉토리, 정확히) 단, 이미 존재하는 디렉토리면 안됨.
-D : /etc/default/useradd에 설정된 유저 추가와 관련된 기본 사항들을 보여줌.



※ 계정 생성 시 참조 파일
# vim /etc/default/useradd
(= # useradd -D)


 
GROUP = 100 // 계정 생성 시 GID 100번에 참여 (레드햇 x)

# vim /etc/login.defs - 메일 디렉토리, 비밀번호 설정, UID, GID 설정 값 등등
# man useradd - useradd 설명서


 

※ 그룹 생성
# groupadd [그룹]
-g : GID 지정
※ 사용자 삭제
# userdel [계정] - 계정만 삭제됨
-r : 항상 같이 사용한다고 생각
※ 그룹 삭제
# groupdel [그룹] - 삭제하려는 그룹을 주그룹으로 가지고 있는 계정이 있으면 삭제가 안됨


 
 - 주그룹으로 가지고 있는 애가 있으면 같이 삭제

 


 
- 사용하고 있는 암호화 메소드


● 파일 글로빙
- 와일드카드 메타 문자로 패턴을 매칭 처리하는 것
1. ? - 문자 1개를 대체
2. * - 문자 0개 또는 그 이상을 대체 



● 크기가 10MB 이상인 것들 출력




● IP 주소 확인 & 파일 찾기




● 파일 이름으로 위치 찾기