간단히 정리한 리눅스 사용법 및 명령어
리눅스 사용법 및 명령어를 간단히 정리해봤습니다.
본 문서는 다음 깃허브 저장소의 문서를 번역후 수정하여 작성되었습니다. 기존 문서는 너무 방대해서 블로그 문서에 다 담기 어려워 자주 사용하지 않을거라 생각되는 명령은 제외시켰고 기존 문서는 여러 리눅스 배포판의 패키지 설치 방법을 다루고 있지만 같은 이유로 우분투/데비안만 남겨두었습니다.
https://github.com/AhmedOsamaMath/linux-basics
2025.8.17 최초작성. 좀 더 검토가 필요하지만 오래 걸릴 듯싶어 우선 공개합니다.
터미널
터미널(Terminal)은 텍스트 명령어를 통해 Linux 시스템과 상호작용할 수 있는 인터페이스니다. 대부분의 Linux 배포판은 GNOME이나 KDE 같은 데스크톱 환경을 제공하지만, 여전히 터미널은 Linux 사용자에게 필수적인 도구입니다. 터미널에서 명령어를 실행하고 파일을 관리하며 시스템 작업을 수행합니다.
쉘(Shells), 터미널 에뮬레이터(Terminal Emulators)
쉘(Shell)은 사용자가 입력한 명령어을 해석하고 실행하는 명령줄 인터프리터로 터미널 환경에서 동작합니다. 대표적인 쉘로는 Bash (Bourne Again SHell), Zsh 등이 있습니다. Bash는 대부분의 리눅스 배포판에서 기본 쉘로 사용됩니다.
터미널 에뮬레이터는 데스크톱 환경에서 터미널을 사용할 수 있도록 해주는 응용 프로그램입니다. 대표적인 예시로는 GNOME Terminal, Konsole, xterm 등이 있습니다.
파일 시스템(File System) 탐색
Linux 파일 시스템은 디렉토리(폴더)와 파일로 구성된 계층적 구조로 구성되어 있습니다. 파일 시스템을 탐색하는 데 사용되는 기본 명령어는 다음과 같습니다:
pwd
(Print Working Directory): 현재 위치한 디렉토리를 표시합니다.
bash pwd
webnautes@webnautes-laptop:~$ pwd
/home/webnautes
ls
(List): 현재 디렉토리의 파일과 디렉토리를 목록으로 표시합니다.
bash ls
ls -l
: 권한, 소유권, 크기 등 세부 정보를 포함해 자세한 형식으로 파일을 표시합니다.ls -a
: 숨겨진 파일(.
로 시작하는 파일)을 포함해 모든 파일을 표시합니다.
현재 디렉토리의 내용을 출력합니다.
webnautes@webnautes-laptop:~$ ls
PixelHacker miniconda3 pygame-test test 다운로드 바탕화면 사진 음악
U-2-Net obsidian_note snap 공개 문서 비디오 서식
자세한 형식으로 현재 디렉토리의 내용을 출력합니다.
webnautes@webnautes-laptop:~$ ls -l
합계 60
drwxrwxr-x 13 webnautes webnautes 4096 6월 5 22:57 PixelHacker
drwxrwxr-x 9 webnautes webnautes 4096 4월 28 22:23 U-2-Net
drwxrwxr-x 19 webnautes webnautes 4096 4월 22 22:28 miniconda3
drwxrwxr-x 4 webnautes webnautes 4096 7월 21 23:15 obsidian_note
drwxrwxr-x 2 webnautes webnautes 4096 7월 30 22:06 pygame-test
drwx------ 6 webnautes webnautes 4096 7월 21 23:14 snap
drwxrwxr-x 2 webnautes webnautes 4096 7월 30 22:54 test
drwxr-xr-x 2 webnautes webnautes 4096 4월 20 11:49 공개
drwxr-xr-x 2 webnautes webnautes 4096 7월 21 23:14 다운로드
drwxr-xr-x 2 webnautes webnautes 4096 4월 20 11:49 문서
drwxr-xr-x 2 webnautes webnautes 4096 4월 28 22:59 바탕화면
drwxr-xr-x 3 webnautes webnautes 4096 7월 30 21:56 비디오
drwxr-xr-x 3 webnautes webnautes 4096 4월 20 11:56 사진
drwxr-xr-x 2 webnautes webnautes 4096 4월 20 11:49 서식
drwxr-xr-x 2 webnautes webnautes 4096 4월 20 11:49 음악
파일 이름, 디렉토리 이름이 .으로 시작하는 숨긴 파일,디렉토리를 포함하여 현재 디렉토리의 내용을 출력합니다.
webnautes@webnautes-laptop:~$ ls -a
. .config .ssh snap
.. .dotnet .sudo_as_admin_successful test
.bash_history .gnupg .triton 공개
.bash_logout .local .vscode 다운로드
.bashrc .npm .xinputrc 문서
.cache .npm-global PixelHacker 바탕화면
.claude .npmrc U-2-Net 비디오
.claude.json .nv miniconda3 사진
.claude.json.backup .pki obsidian_note 서식
.conda .profile pygame-test 음악
옵션을 조합할 수도 있습니다. ls -al
명령은 숨김 파일,디렉토리를 포함하여 현재 디렉토리의 내용을 자세한 형식으로 출력해줍니다.
webnautes@webnautes-laptop:~$ ls -al
합계 208
drwxr-x--- 32 webnautes webnautes 4096 8월 17 10:31 .
drwxr-xr-x 3 root root 4096 4월 20 11:49 ..
-rw------- 1 webnautes webnautes 12738 8월 12 23:08 .bash_history
-rw-r--r-- 1 webnautes webnautes 220 3월 31 2024 .bash_logout
-rw-r--r-- 1 webnautes webnautes 4386 7월 30 22:45 .bashrc
drwx------ 21 webnautes webnautes 4096 7월 30 21:26 .cache
drwxrwxr-x 7 webnautes webnautes 4096 7월 30 22:51 .claude
-rw-rw-r-- 1 webnautes webnautes 19649 7월 30 23:04 .claude.json
-rw-rw-r-- 1 webnautes webnautes 19231 7월 30 23:04 .claude.json.backup
drwxrwxr-x 2 webnautes webnautes 4096 4월 22 22:31 .conda
drwx------ 20 webnautes webnautes 4096 8월 4 22:43 .config
drwxrwxr-x 3 webnautes webnautes 4096 4월 28 22:20 .dotnet
drwx------ 2 webnautes webnautes 4096 6월 5 17:43 .gnupg
drwx------ 4 webnautes webnautes 4096 4월 20 11:49 .local
drwxrwxr-x 4 webnautes webnautes 4096 7월 30 21:22 .npm
drwxrwxr-x 4 webnautes webnautes 4096 7월 30 21:22 .npm-global
-rw------- 1 webnautes webnautes 21 7월 30 22:45 .npmrc
drwx------ 3 webnautes webnautes 4096 4월 22 22:28 .nv
drwx------ 3 webnautes webnautes 4096 4월 20 11:56 .pki
-rw-r--r-- 1 webnautes webnautes 807 3월 31 2024 .profile
drwx------ 2 webnautes webnautes 4096 4월 20 11:49 .ssh
-rw-r--r-- 1 webnautes webnautes 0 4월 20 11:52 .sudo_as_admin_successful
drwxrwxr-x 3 webnautes webnautes 4096 6월 5 18:28 .triton
drwxrwxr-x 4 webnautes webnautes 4096 4월 28 22:20 .vscode
-rw-rw-r-- 1 webnautes webnautes 133 8월 4 22:42 .xinputrc
drwxrwxr-x 13 webnautes webnautes 4096 6월 5 22:57 PixelHacker
drwxrwxr-x 9 webnautes webnautes 4096 4월 28 22:23 U-2-Net
drwxrwxr-x 19 webnautes webnautes 4096 4월 22 22:28 miniconda3
drwxrwxr-x 2 webnautes webnautes 4096 8월 8 23:05 new_directory
drwxrwxr-x 4 webnautes webnautes 4096 7월 21 23:15 obsidian_note
drwxrwxr-x 2 webnautes webnautes 4096 7월 30 22:06 pygame-test
drwx------ 6 webnautes webnautes 4096 7월 21 23:14 snap
drwxrwxr-x 2 webnautes webnautes 4096 8월 9 22:54 test
drwxr-xr-x 2 webnautes webnautes 4096 4월 20 11:49 공개
drwxr-xr-x 2 webnautes webnautes 4096 7월 21 23:14 다운로드
drwxr-xr-x 2 webnautes webnautes 4096 4월 20 11:49 문서
drwxr-xr-x 2 webnautes webnautes 4096 4월 28 22:59 바탕화면
drwxr-xr-x 3 webnautes webnautes 4096 7월 30 21:56 비디오
drwxr-xr-x 3 webnautes webnautes 4096 4월 20 11:56 사진
drwxr-xr-x 2 webnautes webnautes 4096 4월 20 11:49 서식
drwxr-xr-x 2 webnautes webnautes 4096 4월 20 11:49 음악
cd
(Change Directory): 현재 디렉토리를 지정된 디렉토리로 변경합니다.
bash cd /path/to/directory
cd ..
: 한 단계 위의 디렉토리(부모 디렉토리)로 이동합니다.cd ~
: 홈 디렉토리로 이동합니다.cd -
: 이전 디렉토리로 돌아갑니다.
간단히 테스트 해봅니다.
현재 디렉토리 위치를 출력합니다.
webnautes@webnautes-laptop:~$ pwd
/home/webnautes
test 디렉토리로 이동후 현재 디렉토리 위치를 출력합니다.
webnautes@webnautes-laptop:~$ cd test
webnautes@webnautes-laptop:~/test$ pwd
/home/webnautes/test
한 단계 위의 디렉토리로 이동후 현재 디렉토리 위치를 출력합니다.
webnautes@webnautes-laptop:~/test$ cd ..
webnautes@webnautes-laptop:~$ pwd
/home/webnautes
이전 디렉토리로 이동 후 현재 디렉토리 위치를 출력합니다.
현재 디렉토리인 /home/webnautes로 이동하기 전에 있었던 /home/webnautes/test로 이동합니다.
webnautes@webnautes-laptop:~$ cd -
/home/webnautes/test
webnautes@webnautes-laptop:~/test$ pwd
/home/webnautes/test
홈 디렉토리로 이동 후 현재 디렉토리 위치를 출력합니다.
webnautes@webnautes-laptop:~/test$ cd ~
webnautes@webnautes-laptop:~$ pwd
/home/webnautes
파일 및 디렉토리 관리
터미널에서 다음 명령어를 사용하여 파일 및 디렉토리를 생성, 이동, 복사, 삭제할 수 있습니다:
touch
: 빈 파일을 생성하거나 기존 파일의 타임스탬프를 현재 시간으로 업데이트합니다.
bash touch filename.txt
현재 위치에 newfile인 파일을 생성합니다. 파일 내용엔 아무것도 없고 파일 크기가 0입니다.
webnautes@webnautes-laptop:~$ touch newfile
지정한 파일의 접근 시간(access time)과 수정 시간(modification time)을 현재 시간으로 업데이트합니다. ls -al
명령으로 보이는 시간은 수정시간입니다.
webnautes@webnautes-laptop:~$ ls -al newfile
-rw-rw-r-- 1 webnautes webnautes 0 8월 17 10:33 newfile
webnautes@webnautes-laptop:~$ touch newfile
webnautes@webnautes-laptop:~$ ls -al newfile
-rw-rw-r– 1 webnautes webnautes 0 8월 17 10:34 newfile
mkdir
(Make Directory): 새로운 디렉토리를 생성합니다.
bash mkdir new_directory
현재 위치에 new_directory 디렉토리를 생성합니다.
webnautes@webnautes-laptop:~$ mkdir new_directory
cp
(Copy): 파일 또는 디렉토리를 복사합니다.
bash cp source_file destination_file
cp -r source_directory destination_directory
: 디렉토리를 재귀적으로 복사합니다. 즉, 하위 디렉토리까지 모두 복사합니다.
mv
(Move): 파일이나 디렉토리의 이름을 변경하거나 다른 위치로 이동시키는 데 사용할 수 있습니다.
bash mv old_name new_name
rm
(Remove): 파일을 삭제합니다.
bash rm filename.txt
newfile 파일을 삭제합니다.
webnautes@webnautes-laptop:~$ rm newfile
rm -r directory_name
: 디렉토리와 포함된 파일을 재귀적으로 삭제합니다. 즉, 하위 디렉토리까지 모두 삭제합니다. 이 명령어를 사용할 때는 주의해야 합니다. 터미널에서 지운 것은 휴지통에 들어가지 않습니다.
rmdir
(Remove Directory): 빈 디렉토리를 삭제합니다.
bash rmdir empty_directory
비어있지 않은 디렉토리는 삭제되지 않습니다.
webnautes@webnautes-laptop:~$ rmdir tmp
rmdir: 'tmp' 제거 실패: 디렉터리가 비어있지 않음
이런 경우 rm -r
을 사용하여 삭제하면 됩니다.
webnautes@webnautes-laptop:~$ rm -r tmp
파일 보기 및 편집
Linux는 터미널에서 직접 파일을 보기 및 편집하기 위한 여러 도구를 제공합니다:
cat
(Concatenate): 파일의 내용을 표시합니다.
bash cat filename.txt
less
: 파일 내용을 한 페이지씩 표시하여 열 수 있습니다.q
키를 눌러 파일 보기를 종료합니다.
less filename.txt`q` 키를 눌러 종료합니다.
nano
: 터미널에서 직접 파일을 편집할 수 있는 간단한 텍스트 편집기입니다.
bash nano filename.txt
Ctrl + X
를 눌러 종료시,Y
를 눌러 변경 사항을 저장하며,N
을 눌러 변경 사항을 취소합니다.
vim
: 강력한 기능을 갖춘 고급 텍스트 편집기인데 사용하기 쉽지 않습니다.
bash vim filename.txt
유용한 단축키
터미널에서 작업 효율성을 높일 수 있는 단축키를 제공합니다.
Ctrl + C
: 현재 명령어를 중단하거나 취소합니다.Ctrl + D
: 현재 쉘 세션에서 로그아웃하거나 터미널을 닫습니다.Ctrl + L
: 터미널 화면을 지웁니다 (clear
명령어와 유사합니다).Tab
: 명령어, 파일 이름 또는 디렉토리 이름 일부를 입력 후 탭키를 누르면 자동 완성되거나 후보를 보여줍니다.
명령어 기록
터미널에서 실행된 명령어들을 기록하고 있으며 이 기록을 활용할 수 있는 방법을 제공합니다.
history
: 이전에 실행된 명령어 목록을 표시합니다. 일련번호와 명령어를 보여줍니다.
bash history
history 실행결과 일부입니다.
347 mv bye.txt test/
348 rm test/bye.txt
349 sudo apt update
350 sudo apt install build-essential
351 ls
352 nano engine.c
353 nano script.c
354 gcc -rdynamic -ldl engine.c -o engine
355 gcc -shared -fPIC script.c -o script.so
356 ./engine
357 history
!n
: history 명령으로 확인한 일련번호를 사용하면 대응하는 명령어를 다시 실행합니다.
위 history 실행결과 중 351번인 ls 명령이 실행됩니다.
webnautes@webnautes-laptop:~$ !351
ls
PixelHacker new_directory snap 다운로드 비디오 음악
U-2-Net obsidian_note test 문서 사진
miniconda3 pygame-test 공개 바탕화면 서식
!!
: 마지막 명령어를 반복합니다.
bash !!
방금 실행한 ls 명령이 다시 실행됩니다.
webnautes@webnautes-laptop:~$ !!
ls
PixelHacker new_directory snap 다운로드 비디오 음악
U-2-Net obsidian_note test 문서 사진
miniconda3 pygame-test 공개 바탕화면 서식
- 화살표 키: 위쪽과 아래쪽 화살표 키를 사용하면 사용했던 명령을 다시 보여줍니다.
도움말 받기
Linux는 명령어에 대한 도움말과 추가 정보를 얻는 여러 방법을 제공합니다:
man
(매뉴얼): 명령어의 매뉴얼 페이지를 표시하여 사용 방법에 대한 자세한 정보를 제공합니다.
rmdir 명령의 사용법을 보여줍니다.

--help
: 대부분의 명령어는--help
옵션을 제공하여 명령어의 작동 방식에 대한 간략한 개요를 표시합니다.
rmdir 명령의 사용법을 보여줍니다.
webnautes@webnautes-laptop:~$ rmdir --help
사용법: rmdir [<옵션>]... <디렉터리>...
<디렉터리>가 비어있으면 제거합니다.
--ignore-fail-on-non-empty
비어있지 않은 디렉터리 제거 실패시 무시합니다
-p, --parents <디렉터리>와 해당 상위 요소를 지웁니다
예) `rmdir -p a/b'는 `rmdir a/b a'과 비슷합니다
-v, --verbose 처리하는 모든 디렉터리의 진단 메시지를 출력합니다
--help 이 도움말을 표시하고 나갑니다
--version 버전 정보를 출력하고 나갑니다
GNU coreutils 온라인 도움말: <https://www.gnu.org/software/coreutils/>
번역 버그는 <https://translationproject.org/team/ko.html>에 알려주십시오
완전한 문서 <https://www.gnu.org/software/coreutils/rmdir>
또는 로컬 문서: info '(coreutils) rmdir invocation'
리눅스 패스(Linux Paths)
패스(Path)
패스는 Linux 파일 시스템 내에서 파일이나 디렉토리의 위치를 나타내는 문자열입니다. 패스는 명령어에서 시스템이 파일을 찾거나 저장할 위치를 지정하는 데 사용됩니다. Linux에는 두 가지 유형의 패스가 있습니다:
1.절대 경로
2.상대 경로
1. 절대 경로(Absolute Path)
절대 경로는 파일 시스템의 루트 디렉토리부터 파일이나 디렉토리의 위치를 지정합니다. 루트 디렉토리는 슬래시 /
로 표시됩니다. 절대 경로는 현재 작업 디렉토리와 무관하게 항상 루트 디렉토리를 의미하는 /
로 시작합니다.
예시:
/home/webnautes/Documents/report.txt
/etc/nginx/nginx.conf
위 예시에서 /home/webnautes/Documents/report.txt
는 루트 디렉토리(/
)부터 시작하는 report.txt
파일의 전체 경로입니다.
2. 상대 경로(Relative Path)
상대 경로는 현재 작업 디렉토리로부터의 파일 또는 디렉토리의 위치를 지정합니다. 절대 경로와 달리 상대 경로는 루트 디렉토리 /
로 시작하지 않습니다.
예시:
Documents/report.txt
../webnautes/Documents
현재 디렉토리가 /home/webnautes
인 경우, 상대 경로 Documents/report.txt
파일의 절대경로는 /home/webnautes/Documents/report.txt
입니다.
../webnautes/Documents
에서 ..
는 한 단계 위의 디렉토리로 이동함을 의미합니다. 현재 디렉토리가 /home/webnautes/test
인 경우 ../webnautes/Documents
는 `/home/webnautes/Documents
를 가리킵니다.
절대 경로와 상대 경로의 결합
명령어에서 절대 경로와 상대 경로를 결합하여 파일 시스템을 효율적으로 탐색할 수 있습니다. 예를 들어, 현재 위치가 /etc
디렉토리인 경우, 상대적인 /home
디렉토리로 이동하려면 cd ../home
을 사용할 수 있습니다.
특수 디렉토리 및 경로 기호
Linux는 이해해야 할 몇 가지 특수 디렉토리와 경로 기호를 사용합니다:
- 루트 디렉토리 (
/
): Linux 파일 시스템 계층 구조의 최상위 디렉토리입니다. 모든 다른 디렉토리와 파일은 이 디렉토리 아래에 위치합니다. - 홈 디렉토리 (
~
): 현재 사용자의 홈 디렉토리의 약어입니다. 예를 들어,~/Documents
는/home/webnautes/Documents
를 의미합니다. - 현재 디렉토리 (
.
): 현재 작업 디렉토리를 나타냅니다. 예를 들어,./script.sh
는 현재 디렉토리에 있는script.sh
파일을 의미합니다. 파일을 실행할 때 종종 사용합니다. - 상위 디렉토리 (
..
): 현재 디렉토리의 상위 디렉토리를 나타냅니다. 예를 들어,../
는 디렉토리 계층 구조에서 한 단계 위로 이동합니다. - 루트 사용자의 홈 디렉토리 (
/root
): 루트(슈퍼유저) 계정의 홈 디렉토리입니다.
환경 변수 및 경로
Linux에서 환경 변수는 경로 정보를 저장할 수 있어 자주 사용하는 디렉토리나 실행 파일을 더 쉽게 액세스할 수 있습니다. 경로와 관련된 가장 중요한 환경 변수 중 하나는 PATH
입니다.
PATH
변수: 명령어를 입력할 때 시스템이 실행 파일을 검색하는 디렉토리의 콜론으로 구분된 목록입니다. 다음 명령어로 확인할 수 있습니다:
echo $PATH
webnautes@webnautes-laptop:~$ echo $PATH
/home/webnautes/.npm-global/bin:/home/webnautes/.npm-global/bin:/home/webnautes/.npm-global/bin:/home/webnautes/miniconda3/bin:/home/webnautes/miniconda3/condabin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin
PATH
에 디렉토리를 추가하면 해당 디렉토리에서 스크립트나 프로그램을 실행할 때 전체 경로를 지정하지 않고도 실행할 수 있습니다.
export PATH=$PATH:/home/webnautes/scripts
이 명령어는 /home/webnautes/scripts
를 PATH
에 추가하여 이 스크립트를 어디에서든 직접 실행할 수 있도록 합니다. 보통 홈디렉토리의 .bashrc 파일의 끝에 PATH 지정을 추가합니다. PATH 추가후 터미널을 다시 열거나 source ~/.bashrc 명령으로 바로 적용할 수 있습니다.
파일 시스템 개요
Linux 파일 시스템은 Linux 시스템에 저장된 모든 데이터를 조직화하고 저장하는 계층적 구조입니다.
계층적 구조
Linux 파일 시스템은 루트 디렉토리(/
)를 최상위로 하는 나무 모양의 구조로 구성되어 있습니다. 모든 파일과 디렉토리는 루트에서 분기되어 통일된 디렉토리 트리를 형성합니다. 이 구조는 저장 장치상의 물리적 위치와 무관하게 파일을 일관되고 체계적으로 관리하는 방법을 제공합니다.
루트 디렉토리(/
)
루트 디렉토리는 Linux 파일 시스템의 최상위 디렉토리입니다. 모든 다른 디렉토리와 파일은 이 디렉토리 아래에 위치합니다. 이는 전체 파일 시스템을 탐색하는 출발점 역할을 합니다.
Linux 파일 시스템의 주요 디렉토리
/bin
: 시스템 운영에 필요한 필수 사용자 명령어 바이너리(실행 파일)를 포함합니다. 예를 들어ls
,cp
,grep
등이 있습니다./sbin
: 주로 관리 작업에 사용되는 필수 시스템 바이너리를 포함합니다. 예를 들어ip
,iptables
,shutdown
등이 있습니다./etc
: 시스템 전체 설정 파일을 저장합니다. 예를 들어 사용자 계정을 위한/etc/passwd
와 파일 시스템 마운트 포인트를 위한/etc/fstab
등이 있습니다./home
: 모든 일반 사용자의 홈 디렉토리를 포함합니다. 각 사용자는/home
아래에 개인 디렉토리를 갖습니다. 예를 들어/home/username
과 같은 형식입니다./root
: 루트(슈퍼유저) 계정의 홈 디렉토리입니다. 보안상의 이유로/home
과 분리되어 있습니다./var
: 변동 데이터 파일을 포함합니다. 로그 파일(/var/log
), 메일(/var/mail
) 및 자주 변경되는 기타 파일 등이 포함됩니다./usr
: 사용자가 설치한 소프트웨어와 읽기 전용 데이터를 저장합니다./usr/bin
(필수적이지 않은 명령어 바이너리)과/usr/share
(문서나 아이콘 같은 공유 데이터) 등 여러 하위 디렉토리를 포함합니다./lib
:/bin
과/sbin
의 바이너리가 필요로 하는 필수 공유 라이브러리를 포함합니다. 예를 들어,/lib/x86_64-linux-gnu/
에는 x86_64 아키텍처용 라이브러리가 포함되어 있습니다./opt
: 선택적 소프트웨어 패키지를 설치하는 디렉토리입니다. 여기 설치된 소프트웨어는 일반적으로 시스템의 패키지 관리자와 독립적입니다./tmp
: 프로그램에 의해 생성된 일시적인 파일을 저장하는 임시 디렉토리입니다./tmp
에 있는 파일은 재부팅 시 종종 삭제됩니다./dev
: 디스크, 터미널, 프린터와 같은 하드웨어 장치를 나타내는 장치 파일을 포함합니다. 예를 들어,/dev/sda
는 첫 번째 하드 드라이브를 나타냅니다./proc
: 커널의 현재 상태를 확인할 수 있는 가상 파일 시스템입니다. 시스템 정보 파일을 포함하며, 예를 들어/proc/cpuinfo
는 CPU 세부 정보를 나타냅니다. cat /proc/cpuinfo 명령으로 정보 확인 가능합니다./sys
: 시스템의 하드웨어 및 커널 모듈에 대한 정보를 노출하는 또 다른 가상 파일 시스템입니다. 일반적으로/proc
와 함께 사용됩니다./mnt
: 임시 파일 시스템을 마운트하는 데 일반적으로 사용되는 디렉토리입니다. 예를 들어 CD-ROM이나 USB 드라이브 등이 해당됩니다./media
: CD, DVD, USB 드라이브 등 제거 가능한 미디어를 마운트하기 위해 자동으로 생성되는 디렉토리입니다.
Linux의 파일 유형
Linux는 다양한 파일 유형을 지원하며, 각각 다른 목적으로 사용됩니다. 파일의 유형을 확인하려면 ls -l
명령어를 사용하면 됩니다. 이 명령어는 각 줄의 시작 부분에 파일 유형을 표시하는 문자를 표시합니다:
- 일반 파일 (
-
): 텍스트 파일, 실행 파일, 이미지 등 데이터를 포함하는 표준 파일입니다.
$ ls -l /etc/fstab
-rw-rw-r-- 1 root root 610 1월 17 2024 /etc/fstab - 디렉토리 파일 (
d
): 다른 파일이나 디렉토리를 포함하는 컨테이너 역할을 하는 특수 파일입니다.
$ ls -l /home
합계 4
drwxr-x--- 39 webnautes webnautes 4096 8월 12 16:26 webnautes - 심볼릭 링크 (
l
): 다른 파일이나 디렉토리로 연결되는 포인터나 단축키 역할을 하는 파일입니다.
$ ls -l /lib
lrwxrwxrwx 1 root root 7 12월 29 2023 /lib -> usr/lib - 문자 장치 (
c
): 키보드나 시리얼 포트와 같이 데이터를 한 문자씩 처리하는 장치를 나타내는 파일입니다.
$ ls -l /dev/tty0
crw--w---- 1 root tty 4, 0 8월 12 15:03 /dev/tty0 - 블록 장치 (
b
): 데이터를 블록 단위로 처리하는 장치를 나타내는 파일로, 하드 드라이브 등이 해당됩니다.
$ ls -l /dev/loop0
brw-rw---- 1 root disk 7, 0 8월 12 15:03 /dev/loop0 - 소켓 (
s
): 프로세스 간 통신에 사용되는 파일로, 주로 네트워크 서비스에 사용됩니다. - 이름 지정 파이프 (
p
): 프로세스 간 통신에 사용되는 파일로, 데이터가 작성된 순서대로 읽혀집니다.
아이노드(Inode)와 파일 메타데이터(Metadata)
리눅스에서 모든 파일과 디렉토리는 아이노드(inode)와 연결되어 있으며, 이는 파일의 메타데이터를 저장하는 데이터 구조입니다. 예를 들어 다음과 같은 정보가 포함됩니다:
- 파일 크기: 파일의 총 크기(바이트 단위).
- 파일 권한: 파일의 읽기, 쓰기, 실행 권한을 결정하는 액세스 권한.
- 소유자 및 그룹: 파일을 소유한 사용자 및 그룹.
- 타임스탬프: 파일이 생성, 마지막으로 수정 및 마지막으로 액세스된 시기에 대한 정보.
- 링크 수: 파일에 대한 하드 링크의 수.
아이노드는 파일 이름이나 데이터 자체를 저장하지 않고 메타데이터만 저장합니다. 파일 이름은 파일을 포함하는 디렉토리에 저장되며, 이 디렉토리는 아이노드를 가리킵니다.
파일 시스템 마운트 및 언마운트
Linux는 다양한 저장 장치에 있는 여러 파일 시스템을 통합된 디렉토리 트리의 특정 디렉토리에 마운트하여 관리할 수 있습니다. 마운트는 파일 시스템을 디렉토리 트리의 특정 위치에서 접근 가능하게 하며, 언마운트는 접근 권한을 제거합니다.
- 파일 시스템 마운트:
/dev/sdb1
에 있는 파일 시스템을/mnt/external
디렉토리에 마운트합니다. 마운트 전엔 /mnt/external에 아무 것도 존재하지 않지만 마운트하고 나면 /dev/sdb1 파일 시스템의 파일과 디렉토리가 보이게 됩니다.
mount /dev/sdb1 /mnt/external
- 파일 시스템 언마운트:
파일 시스템을 언마운트하여/mnt/external
이 다시 마운트될 때까지 접근이 불가능하게 만듭니다.
umount /mnt/external
파일과 디렉토리
파일
리눅스에서 파일은 디스크에 저장된 데이터의 집합입니다. 파일에는 텍스트, 이진 데이터, 실행 가능한 스크립트 또는 프로그램이 포함될 수 있습니다. 각 파일은 해당 디렉토리 내에서 고유한 이름으로 식별됩니다.
디렉토리
디렉토리(폴더라고도 함)는 다른 파일과 디렉토리를 포함할 수 있는 특수한 파일입니다. 이들은 파일 시스템을 계층적 구조로 조직화하여 파일 관리 및 검색을 용이하게 합니다.
기본 파일 조작
파일 생성
Linux에서 파일을 생성하는 방법은 여러 가지가 있습니다:
touch
명령어 사용: 빈 파일을 생성하거나 기존 파일의 타임스탬프를 업데이트합니다.
touch filename.txt
echo
명령어 사용: echo가 출력한 내용으로 파일을 생성합니다.
echo “Hello, World!” > hello.txt
cat
명령어 사용: 표준 입력에서 내용을 가져와 파일을 생성합니다.
cat > notes.txt
This is my note.
Ctrl+D를 누르면 저장됩니다.
파일 보기
cat
명령어 사용: 파일의 내용을 표시합니다.
cat filename.txt
less
명령어 사용: 파일의 내용을 스크롤하여 볼 수 있습니다.
less filename.txt
head
사용: 파일의 첫 10행을 표시합니다.
head filename.txt
tail
사용: 파일의 마지막 10행을 표시합니다.
tail filename.txt
파일 복사
cp
사용: 파일을 한 위치에서 다른 위치로 복사합니다.
cp /home/webnautes/source.txt /mnt/
파일 이동 및 이름 변경
mv
명령어 사용: 파일을 새로운 위치로 이동하거나 이름을 변경합니다.
hello.txt 파일의 이름을 bye.txt로 변경합니다.
webnautes@webnautes-laptop:~$ mv hello.txt bye.txt
bye.txt 파일을 현재 위치의 test 디렉토리로 이동시킵니다.
webnautes@webnautes-laptop:~$ mv bye.txt test/
파일 삭제
rm
사용: 파일을 삭제합니다.
test 디렉토리 내에 있는 bye.txt 파일을 삭제합니다.
webnautes@webnautes-laptop:~$ rm test/bye.txt
파일 검색
find
사용: 파일 이름, 유형 또는 기타 기준에 따라 파일을 검색합니다.
루트 디렉토리( / ) 부터 시작하여 하위 디렉토리를 검색하여 파일 이름이 rotating_triangle.py인 파일을 찾습니다.
webnautes@webnautes-laptop:~/test$ find / -name "rotating_triangle.py"
기본 디렉토리 조작
디렉토리 생성
지정한 이름의 디렉토리를 생성합니다.
mkdir mydirectory
-p
옵션을 사용하여 중첩된 디렉토리를 생성합니다.
mkdir -p parent/child/grandchild
디렉토리 탐색
지정한 디렉토리로 현재 경로를 변경합니다.
cd /path/to/directory
홈 디렉토리로 현재 경로를 변경합니다.
cd ~
한 단계 위 디렉토리로 현재 경로를 변경합니다.
cd ..
현재 경로를 출력합니다.
pwd
디렉토리 복사
지정한 디렉토리와 하위 디렉토리를 재귀적으로 복사합니다.
cp -r sourcedir destinationdir
디렉토리 이동
디렉토리를 새로운 위치로 이동합니다.
mv mydirectory destination
디렉토리 삭제
- 빈 디렉토리를 삭제합니다.
rmdir emptydir
- 지정한 디렉토리와 하위 디렉토리를 재귀적으로 삭제합니다.
rm -r mydirectory
파일 유형 및 확장자
Linux에서는 파일 유형이 확장자가 아닌 파일의 내용에 따라 결정됩니다. 일반적인 파일 유형에는 다음과 같은 것이 있습니다:
- 일반 파일: 데이터나 코드를 포함합니다 (
.txt
,.sh
,.jpg
). - 실행 파일: 프로그램으로 실행될 수 있습니다 (
.sh
,.bin
,.exe
). - 심볼릭 링크: 다른 파일이나 디렉토리로 연결되는 포인터입니다.
- 디렉토리: 파일과 다른 디렉토리를 포함하는 컨테이너입니다.
file
명령어를 사용하여 파일의 유형을 확인할 수 있습니다:
file filename
파일 권한 및 소유권
리눅스에서 모든 파일과 디렉토리는 액세스를 제어하는 권한 및 소유권이 연관되어 있습니다:
- Owner 소유자: 파일을 소유한 사용자.
- Group 그룹: 파일을 소유한 그룹.
- Others 기타: 다른 모든 사용자.
파일 권한
권한은 10자리 문자열로 표시됩니다(예: -rwxr-xr--
):
- 첫 번째 문자는 파일 유형을 나타냅니다(일반 파일은
-
, 디렉토리는d
). - 다음 세 문자는 소유자의 권한을 나타냅니다(읽기 권한은
r
, 쓰기 권한은w
, 실행 권한은x
). - 다음 세 문자는 그룹의 권한을 나타냅니다(읽기 권한은
r
, 쓰기 권한은w
, 실행 권한은x
). - 마지막 세 자리는 다른 사용자의 권한을 나타냅니다(읽기 권한은
r
, 쓰기 권한은w
, 실행 권한은x
).
권한 변경
chmod
사용: 파일 권한을 변경합니다.
chmod 755 filename.txt
chown
사용: 파일 소유자와 그룹을 변경합니다.
chown user:group filename.txt
특수 디렉토리
홈 디렉토리
홈 디렉토리(~
)는 사용자 파일과 개인 설정 파일이 저장되는 곳입니다. 각 사용자는 /home/username
아래에 고유한 홈 디렉토리를 가지고 있습니다.
루트 디렉토리
루트 디렉토리(/
)는 파일 시스템 계층 구조의 최상위 디렉토리입니다. 모든 다른 디렉토리와 파일을 포함합니다.
임시 디렉토리
/tmp
디렉토리는 임시 파일 저장용으로 사용되며, 시스템 재부팅 시 종종 삭제됩니다.
파일 권한
Linux에서 파일 권한은 파일과 디렉토리를 읽기, 쓰기, 실행할 수 있는 사용자를 제어합니다. 이러한 권한을 이해하고 관리하는 것은 시스템의 보안과 무결성을 유지하는 데 필수적입니다.
파일 권한 이해
Linux에서 각 파일과 디렉토리는 세 가지 유형의 권한이 적용되며, 이는 세 가지 사용자 범주에 해당됩니다:
사용자 카테고리
- Owner 소유자: 파일을 소유한 사용자.
- Group 그룹: 파일을 소유한 그룹.
- Others 기타: 소유자나 그룹에 속하지 않은 모든 다른 사용자.
권한 유형
- 읽기 (
r
): 파일의 내용을 확인하거나 디렉토리의 내용을 열람할 수 있습니다. - 쓰기 (
w
): 파일의 내용을 수정하거나 디렉토리에 파일을 추가/삭제할 수 있습니다. - 실행 (
x
): 파일을 프로그램으로 실행하거나 디렉토리에 진입할 수 있습니다.
권한 구조
파일 권한은 10자리 문자열로 표시됩니다. 예를 들어:
-rwxr-xr--
각 문자는 다음과 같은 의미를 가집니다:
- 첫 번째 문자는 파일 유형을 나타냅니다:
-
는 일반 파일입니다.d
는 디렉토리입니다.l
은 심볼릭 링크입니다.- 다음 세 문자는 소유자의 권한을 나타냅니다.
- 다음 세 문자는 그룹의 권한을 나타냅니다.
- 마지막 세 문자는 다른 사용자의 권한을 나타냅니다.
예시 -rwxr-xr--
에서 해당 파일은 일반 파일이며:
- 소유자는 읽기, 쓰기, 실행 권한을 가집니다 (rwx
).
- 그룹은 읽기 및 실행 권한을 가집니다 (r-x
).
- 다른 사용자는 읽기 권한만 있습니다 (r--
).
파일 권한 보기
파일이나 디렉토리의 권한을 확인하려면 ls -l
명령어를 사용합니다:
ls -l filename.txt
출력 결과에는 권한, 소유자, 그룹, 크기 및 파일의 기타 세부 정보가 표시됩니다:
-rw-r--r-- 1 user group 1234 Sep 2 14:32 filename.txt
파일 권한 변경
chmod
명령어 사용
chmod
명령어는 파일 또는 디렉토리의 권한을 변경하는 데 사용됩니다. 권한은 심볼릭 모드나 숫자 모드를 사용하여 설정할 수 있습니다.
기호 모드
기호 모드에서는 권한 유형(r
, w
, x
)과 범주(u
는 소유자, g
는 그룹, o
는 기타, a
는 모두)를 지정합니다:
파일 소유자에게 실행 권한을 추가합니다.
chmod u+x filename.txt
그룹의 쓰기 권한을 제거합니다.
chmod g-w filename.txt
숫자 모드
숫자 모드에서는 권한이 세 자리 숫자로 표시되며, 각 숫자는 소유자, 그룹, 다른 사용자의 권한을 나타냅니다:
r
= 4w
= 2x
= 1
원하는 권한을 설정하려면 값을 더합니다. 예를 들어:
7
=rwx
(4+2+1)6
=rw-
(4+2)5
=r-x
(4+1)4
=r--
(4)
권한을 rwxr-xr-x
로 설정합니다. 소유자는 읽기, 쓰기, 실행 권한을 가지며, 그룹과 다른 사용자는 읽기 및 실행 권한을 가집니다.
chmod 755 filename.txt
chown
명령어 사용
chown
명령어는 파일 또는 디렉토리의 소유권을 변경합니다:
- 소유자 변경:
chown newowner filename.txt
- 그룹 변경:
chown :newgroup filename.txt
- 소유자 및 그룹 변경:
chown newowner:newgroup filename.txt
권한 관련 주의사항
- 과도하게 허용적인 파일:
777
(모든 사용자에게 읽기, 쓰기, 실행 권한)과 같은 권한을 설정하면 보안 위험이 될 수 있습니다. 이는 어떤 사용자도 파일을 수정하거나 실행할 수 있게 합니다. - 루트 권한: 루트 사용자로 권한을 수정할 때는 주의해야 합니다. 잘못된 설정은 중요한 시스템 파일을 접근 불가능하거나 실행 가능하게 만들어 시스템 불안정을 초래할 수 있습니다.
실용적인 예시
스크립트 보호
소유자만 수정 및 실행할 수 있고, 다른 사용자는 실행만 가능하도록 스크립트를 생성하려면:
chmod 755 script.sh
공유 디렉토리 보호
공유 디렉토리에서 사용자가 파일을 생성할 수 있지만 서로의 파일을 삭제하지 못하도록 하려면:
mkdir /shared
chmod 1777 /shared
소유자의 권한으로 실행되는 파일 설정
누가 실행하더라도 소유자의 권한으로 실행되는 스크립트를 생성하려면:
chmod u+s script.sh
파일 압축 및 아카이빙
리눅스에서 파일 압축 및 아카이빙은 디스크 공간을 절약하고 여러 파일을 단일 아카이브로 정리하는 일반적인 방법입니다. 이 페이지에서는 파일 압축 및 아카이빙에 가장 널리 사용되는 도구와 명령어를 소개합니다.
압축 및 아카이빙 이해
압축
압축은 데이터를 더 효율적으로 인코딩하여 파일 또는 파일 그룹의 크기를 줄이는 과정입니다. 압축된 파일은 디스크 공간을 덜 차지하며 네트워크를 통해 더 빠르게 전송될 수 있습니다. 일반적인 압축 형식에는 .gz
, .bz2
, .xz
가 있습니다.
아카이빙
아카이빙은 여러 파일과 디렉토리를 단일 파일로 결합하는 과정으로, 일반적으로 압축 없이 수행됩니다. 이는 대규모 파일 집합을 관리하고 전송하는 데 편리합니다. 리눅스에서 가장 일반적인 아카이빙 형식은 tarball (.tar
)입니다.
압축과 아카이빙의 결합
종종 파일은 아카이빙과 압축을 동시에 수행하여 단일 압축 아카이브를 생성합니다. 예를 들어, .tar.gz
파일은 gzip으로 압축된 tarball입니다.
tar
tar
명령어는 아카이브를 생성, 추출 및 관리하는 가장 일반적인 도구입니다. 압축 유무에 관계없이 사용할 수 있습니다.
아카이브 생성
- 기본 아카이브:
tar -cvf archive.tar /path/to/files
-c
: 새로운 아카이브 생성.-v
: 상세 모드, 아카이브되는 파일을 목록으로 표시.-f
: 아카이브 파일 이름을 지정.- gzip으로 압축된 아카이브:
tar -czvf archive.tar.gz /path/to/files
-z
: gzip으로 아카이브를 압축합니다.- bzip2로 압축된 아카이브:
tar -cjvf archive.tar.bz2 /path/to/files
-j
: bzip2로 아카이브를 압축합니다.- xz로 압축된 아카이브:
tar -cJvf archive.tar.xz /path/to/files
-J
: xz로 아카이브를 압축합니다.
아카이브 추출
- 기본 추출:
tar -xvf archive.tar
-x
: 아카이브를 추출합니다.- 압축된 아카이브 추출:
tar -xzvf archive.tar.gz
-z
: gzip 아카이브를 압축 해제합니다.
bash tar -xjvf archive.tar.bz2
-j
: bzip2 아카이브를 압축 해제합니다.
tar -xJvf archive.tar.xz
-J
: xz 아카이브를 압축 해제합니다.- 특정 디렉토리로 추출:
tar -xvf archive.tar -C /path/to/directory
-C
: 파일을 추출할 디렉토리를 지정합니다.
gzip
(GNU Zip)
gzip
은 단일 파일의 크기를 줄이는 인기 있는 압축 도구입니다. 기본적으로 원본 파일을 압축된 버전으로 대체합니다.
filename.gz
파일을 생성하고 원본 파일을 삭제합니다.
gzip filename
원본 파일을 복원하고 .gz
파일을 삭제합니다.
gunzip filename.gz
bzip2
bzip2
는 gzip
과 유사한 압축 도구이지만, 속도 대신 더 높은 압축 비율을 제공합니다.
filename.bz2
파일을 생성하고 원본 파일을 삭제합니다.
bzip2 filename
원본 파일을 복원하고 .bz2
파일을 삭제합니다.
bunzip2 filename.bz2
xz
xz
는 gzip
과 bzip2
보다 종종 더 높은 압축률을 제공하는 현대적인 압축 도구입니다.
filename.xz
파일을 생성하고 원본 파일을 삭제합니다.
xz filename
원본 파일을 복원하고 .xz
파일을 삭제합니다.
unxz filename.xz
zip
과 unzip
zip
은 특히 크로스 플랫폼 환경에서 널리 사용되는 압축 및 아카이빙 도구입니다.
지정된 파일을 포함하는 archive.zip
을 생성합니다.
zip archive.zip filename1 filename2
archive.zip
의 내용을 현재 디렉토리에 추출합니다.
unzip archive.zip
사용자 및 그룹
사용자 및 그룹 이해
사용자
리눅스에서 사용자는 시스템에 로그인하여 작업을 수행할 수 있는 계정입니다. 각 사용자는 고유한 사용자 이름, 사용자 ID(UID), 개인 파일과 설정이 저장되는 홈 디렉토리를 갖습니다.
그룹
그룹은 사용자의 집합입니다. 그룹은 권한 관리를 단순화하기 위해 사용됩니다. 각 사용자에게 권한을 개별적으로 할당하는 대신 그룹에 할당하면 해당 그룹의 모든 구성원이 해당 권한을 상속받습니다.
시스템 사용자 vs. 일반 사용자
- 시스템 사용자: 이 계정은 시스템 프로세스 및 서비스에 의해 사용됩니다. 일반적으로 UID가 1000 미만이며 홈 디렉토리가 없습니다.
- 일반 사용자: 이 계정은 사용자를 위해 생성됩니다. 일반적으로 UID가 1000부터 시작되며
/home
에 홈 디렉토리가 있습니다.
사용자 관리
새 사용자 추가
새 사용자를 추가하려면 useradd
명령어를 사용합니다:
sudo useradd username
- 기본적으로 이 명령어는 지정된
username
으로 사용자를 생성하고, 사용할 수 있는 다음 UID를 할당하며,/home/username
에 홈 디렉토리를 생성합니다.
특정 옵션을 사용하여 사용자 생성
- 홈 디렉토리 지정:
sudo useradd -m -d /custom/home/dir username
```
- `-m`: 홈 디렉토리를 생성합니다.
- `-d`: 사용자 지정 홈 디렉토리를 지정합니다.
- **쉘 할당**:
```bash
sudo useradd -s /bin/bash username
```
- `-s`: 로그인 쉘을 지정합니다.
- **만료일 설정**:
```bash
sudo useradd -e 2024-12-31 username
```
- `-e`: 계정의 만료일을 지정합니다.
### 사용자 비밀번호 설정
사용자의 비밀번호를 설정하려면 `passwd` 명령어를 사용합니다:
```bash
sudo passwd username
이 명령어는 지정된 사용자의 비밀번호를 입력하고 확인하도록 요청합니다.
사용자 계정 수정
기존 사용자 계정을 수정하려면 usermod
명령어를 사용합니다:
- 사용자의 홈 디렉토리 변경:
bash sudo usermod -d /new/home/dir -m username
-d
: 새로운 홈 디렉토리를 지정합니다.-m
: 기존 홈 디렉토리의 내용을 새로운 디렉토리로 이동합니다.- 사용자의 쉘 변경:
sudo usermod -s /bin/zsh username
```
- `-s`: 새로운 로그인 쉘을 지정합니다.
- **사용자 계정 잠금 또는 잠금 해제**:
```bash
sudo usermod -L username # 잠금
sudo usermod -U username # 잠금 해제
```
- `-L`: 사용자 계정을 잠급니다.
- `-U`: 사용자 계정을 잠금 해제합니다.
### 사용자 삭제
사용자를 삭제하려면 `userdel` 명령어를 사용합니다:
```bash
sudo userdel username
- 사용자와 홈 디렉토리 삭제:
sudo userdel -r username
```
- `-r`: 사용자의 홈 디렉토리와 메일 스풀을 제거합니다.
## 그룹 관리
### 새로운 그룹 추가
새로운 그룹을 추가하려면 `groupadd` 명령어를 사용합니다:
```bash
sudo groupadd groupname
이 명령어는 지정된 groupname
으로 새로운 그룹을 생성합니다.
사용자를 그룹에 추가하기
사용자를 그룹에 추가하려면 usermod
명령어와 -aG
옵션을 사용합니다:
sudo usermod -aG groupname username
-aG
: 사용자를 지정된 그룹에 추가하며, 다른 그룹에서 제거하지 않습니다.
사용자의 그룹 보기
사용자가 속한 그룹을 확인하려면 groups
명령어를 사용합니다:
groups 사용자명
사용자의 기본 그룹 변경
사용자의 기본 그룹은 사용자가 생성한 파일의 소유자 그룹입니다. 기본 그룹을 변경하려면 usermod
명령어를 사용합니다:
sudo usermod -g groupname username
-g
: 새로운 기본 그룹을 지정합니다.
그룹 삭제
그룹을 삭제하려면 groupdel
명령어를 사용합니다:
sudo groupdel groupname
이 명령어는 지정된 그룹을 시스템에서 제거합니다.
/etc/passwd
, /etc/shadow
및 /etc/group
이해
/etc/passwd
/etc/passwd
파일에는 사용자 계정 정보(사용자 이름, UID, 홈 디렉토리, 기본 쉘 등)가 포함되어 있습니다. 각 행은 사용자를 나타내며, 필드는 콜론(:
)으로 구분됩니다.
예시 항목:
username:x:1001:1001::/home/username:/bin/bash
/etc/shadow
/etc/shadow
파일은 해시된 비밀번호 및 관련 정보를 저장합니다. 보안상의 이유로 루트 사용자만 읽을 수 있습니다.
예시 항목:
username:$6$hashvalue:18442:0:99999:7:::
/etc/group
/etc/group
파일에는 그룹 이름, GID, 그룹 구성원 등 그룹 관련 정보가 포함됩니다. 각 행은 그룹을 나타냅니다.
예시 항목:
groupname:x:1001:user1,user2
권한 관리
Linux에서 파일 및 디렉토리 권한은 리소스 접근을 제어하여 사용자가 권한이 부여된 파일 및 디렉토리에만 접근할 수 있도록 합니다. 이 페이지에서는 권한의 작동 방식, 권한 수정 방법, 그리고 권한을 효과적으로 관리하는 방법을 살펴보겠습니다.
권한 이해
권한 유형
Linux의 각 파일 및 디렉토리는 세 가지 유형의 권한을 갖습니다:
- 읽기 (r): 파일의 내용을 확인하거나 디렉토리의 내용을 열람할 수 있습니다.
- 쓰기 (w): 파일의 내용을 수정하거나 디렉토리 내 파일 추가/삭제할 수 있습니다.
- 실행 (x): 파일을 프로그램으로 실행하거나 디렉토리에 접근할 수 있습니다.
권한 카테고리
권한은 세 가지 카테고리에 할당됩니다:
- 소유자: 파일이나 디렉토리의 소유자입니다.
- 그룹: 파일이나 디렉토리와 연관된 그룹입니다.
- 기타: 시스템 내의 다른 모든 사용자입니다.
권한 구조
권한은 10자리 문자열로 표시됩니다(예: -rwxr-xr--
). 첫 번째 문자는 파일 유형을 나타내며, 다음 9개 문자는 권한을 나타냅니다:
- 파일 유형: 일반 파일은
-
, 디렉토리는d
, 심볼릭 링크는l
. - 소유자 권한: 다음 세 문자(예:
rwx
)는 소유자의 권한을 나타냅니다. - 그룹 권한: 다음 세 문자(예:
r-x
)는 그룹의 권한을 나타냅니다. - 기타 사용자 권한: 마지막 세 문자(예:
r--
)는 기타 사용자의 권한을 나타냅니다.
예시
-rwxr-xr--
-
: 일반 파일rwx
: 소유자가 읽기, 쓰기, 실행 권한을 가집니다r-x
: 그룹이 읽기 및 실행 권한을 가집니다r--
: 다른 사용자가 읽기 권한을 가집니다
권한 확인
파일 및 디렉토리의 권한을 확인하려면 ls -l
명령어를 사용합니다:
ls -l
이 명령어는 권한을 포함한 상세 정보를 포함하여 파일과 디렉토리를 목록으로 표시합니다.
예시 출력:
-rw-r--r-- 1 user group 1234 Sep 1 12:34 example.txt
chmod
를 사용하여 권한 수정
chmod
(모드 변경) 명령어는 권한을 수정하는 데 사용됩니다.
기호 모드
기호 표기법을 사용하여 권한을 수정할 수 있습니다:
- 권한 추가:
+
를 사용합니다
chmod u+x file.txt # 소유자에게 실행 권한 추가
```
- **권한 제거**: `-`를 사용합니다
```bash
chmod g-w file.txt # 그룹의 쓰기 권한 제거
```
- **권한 정확히 설정**: `=` 사용
```bash
chmod o=r file.txt # 다른 사용자에게 읽기 권한만 설정
```
### 숫자(8진수) 모드
권한은 3자리 8진수 숫자로도 표현될 수 있습니다:
- **읽기 (r)**: 4
- **쓰기 (w)**: 2
- **실행 (x)**: 1
각 카테고리(소유자, 그룹, 기타)에는 이 숫자들의 합이 할당됩니다:
- **전체 권한 (rwx)**: 7 (4+2+1)
- **읽기 및 실행 (r-x)**: 5 (4+1)
- **읽기 전용 (r--)**: 4
예시:
```bash
chmod 755 file.txt
- 소유자용
7
:rwx
- 그룹용
5
:r-x
- 기타용
5
:r-x
재귀적으로 권한 변경
디렉토리와 그 내부의 모든 파일 및 디렉토리의 권한을 변경하려면 -R
옵션을 사용합니다:
chmod -R 755 /path/to/directory
이 명령어는 지정된 권한을 디렉토리와 그 내부의 모든 항목에 적용합니다.
chown
을 사용하여 소유권 변경
chown
명령어는 파일 또는 디렉토리의 소유권을 변경합니다.
소유자 변경
파일 또는 디렉토리의 소유자를 변경하려면:
sudo chown newowner file.txt
그룹 변경
파일 또는 디렉토리와 연관된 그룹을 변경하려면:
sudo chown :newgroup file.txt
소유자와 그룹 모두 변경
소유자와 그룹을 모두 변경하려면:
sudo chown newowner:newgroup file.txt
재귀적으로 소유권 변경
디렉토리와 그 내부의 모든 파일의 소유권을 변경하려면 -R
옵션을 사용합니다:
sudo chown -R newowner:newgroup /path/to/directory
APT (Debian/Ubuntu)
APT (Advanced Package Tool)는 Debian, Ubuntu 및 그 파생 배포판에서 사용되는 패키지 관리 시스템입니다. 의존성 관리를 통해 소프트웨어의 설치, 업데이트, 제거 과정을 간소화하며 사용자 친화적인 명령어를 제공합니다.
APT 이해
APT는 dpkg
패키지 관리 시스템의 프론트엔드로, .deb
패키지를 처리합니다. APT는 소프트웨어 패키지의 검색, 구성, 설치를 자동화하여 사용자가 시스템을 더 쉽게 관리할 수 있도록 합니다.
주요 구성 요소
- apt-get: 패키지 관리를 위한 저수준 도구.
- apt:
apt-get
과apt-cache
의 기능을 결합하여 더 효율적인 경험을 제공하는 고수준 도구. - dpkg:
.deb
패키지를 직접 처리하는 백엔드 도구입니다.
기본 APT 명령어
패키지 설치
sudo apt install package-name
$ sudo apt install git
패키지 목록 업데이트
패키지를 설치하거나 업그레이드하기 전에 저장소에서 패키지 목록을 업데이트합니다. 사용 가능한 패키지에 대한 최신 정보를 가져와 가장 최신 버전을 설치하도록 보장합니다.
sudo apt update
패키지 업그레이드
모든 설치된 패키지를 최신 버전으로 업그레이드하려면:
sudo apt upgrade
전체 시스템 업그레이드를 수행하려면(구형 패키지 제거 또는 새로운 의존성 설치 포함):
sudo apt full-upgrade
패키지 제거
설정 파일을 유지한 채 패키지를 제거하려면:
sudo apt remove package-name
$ sudo apt remove vlc
설정 파일과 함께 패키지를 제거하려면:
sudo apt purge package-name
$ sudo apt purge vlc
패키지 검색
이름이나 설명으로 패키지를 검색하려면:
apt search package-name
$ apt search opencv
패키지 정보 확인
패키지의 설명, 의존성, 설치 크기 등 자세한 정보를 확인하려면:
apt show package-name
$ apt show nginx
정리
패키지를 설치하거나 업그레이드한 후 로컬 패키지 캐시를 정리하여 디스크 공간을 확보하려면:
sudo apt clean
의존성을 충족시키기 위해 자동으로 설치되었지만 더 이상 필요하지 않은 패키지를 제거하려면:
sudo apt autoremove
깨진 의존성 수정
패키지 설치 또는 제거로 인해 시스템이 일관성 없는 상태가 될 수 있습니다. 깨진 의존성을 수정하려면:
sudo apt --fix-broken install
이 명령어는 의존성 문제를 해결하려고 시도합니다.
고급 APT 사용법
저장소 추가
기본 저장소에 없는 소프트웨어를 설치하려면 추가 저장소를 추가해야 할 수 있습니다. 이를 위해 먼저 저장소를 추가합니다:
sudo add-apt-repository ppa:repository-name
그런 다음 패키지 목록을 업데이트합니다:
sudo apt update
이제 새로 추가된 저장소에서 패키지를 설치할 수 있습니다.
PPAs(개인 패키지 아카이브) 관리
PPAs는 소프트웨어 패키지를 위한 제3자 저장소입니다. 공식 저장소에 아직 제공되지 않은 최신 버전의 소프트웨어를 얻기 위해 일반적으로 사용됩니다.
PPA 추가:
sudo add-apt-repository ppa:repository-name
PPA를 제거하려면:
sudo add-apt-repository --remove ppa:repository-name
소스 목록 관리
APT가 사용하는 저장소 목록은 /etc/apt/sources.list
파일과 /etc/apt/sources.list.d/
디렉토리내에 파일로 저장됩니다. 이 파일을 수동으로 편집하여 저장소를 추가하거나 제거할 수 있습니다.
sources.list
의 예시 항목:
deb http://archive.ubuntu.com/ubuntu/ focal main restricted
APT 문제 해결
패키지 충돌 해결
APT가 설치 또는 업그레이드 중에 패키지 간 충돌을 감지하면 일반적으로 이를 해결하기 위한 옵션을 제공합니다. 다음 명령어를 사용하여 설치를 강제 실행할 수 있습니다:
sudo apt install -f
이 명령어는 해결되지 않은 의존성을 가진 패키지의 설치를 강제 실행합니다.
패키지 재구성
패키지가 정상적으로 작동하지 않거나 구성 변경이 필요한 경우 재구성할 수 있습니다:
sudo dpkg-reconfigure package-name
APT 로그 확인
APT는 활동 기록을 /var/log/apt/
디렉토리에 저장합니다. 패키지 관리 중 문제가 발생하면 이 로그를 확인하세요.
APT 거래 내역을 확인하려면:
less /var/log/apt/history.log
일반적인 텍스트 처리 도구
Linux는 텍스트 파일을 처리하고 조작하는 데 필수적인 다양한 텍스트 처리 도구를 제공합니다. 이러한 도구는 스크립팅, 데이터 처리, 시스템 관리 작업에서 자주 사용됩니다.
원문에서는 awk
, sed
, head
, tail
, wc
, cut
, paste
등 일반적인 텍스트 처리 도구를 다루지만 분량상 head와 tail 등 몇가지만 남겨둡니다.
head
명령
파일의 처음 10줄을 표시합니다.
head filename
지정한 줄만큼 파일의 첫부분 내용을 출력합니다.
head -n 20 filename
tail
명령어
파일의 마지막 10 줄을 표시합니다.
tail filename
지정한 줄만큼 파일의 마지막 내용을 출력합니다.filename
파일의 마지막 15 줄을 표시합니다.
tail -n 15 filename
파일 변경 시 마지막 몇 줄을 표시하고 업데이트하여 로그 파일 모니터링에 유용합니다.
tail -f filename
wc
: 단어, 줄, 및 문자 수
파일의 줄수를 출력합니다.
wc -l filename
파일의 단어수를 출력합니다.
wc -w filename
파일의 문자수를 출력합니다.
wc -m filename
파일의 줄 수, 단어 수, 문자 수를 출력합니다.
wc filename
리디렉션
리디렉션은 Linux에서 명령어의 출력이 어디로 가는지 및 명령어의 입력원이 어디서 오는지를 제어할 수 있도록 합니다. 이는 쉘 스크립팅과 명령줄 작업의 기본적인 요소로, 사용자가 데이터 스트림을 효율적으로 연결하고 조작할 수 있도록 합니다.
표준 입력, 출력 및 오류
Linux에서 명령어는 세 가지 표준 데이터 스트림을 사용합니다:
- 표준 입력 (
stdin
): 명령어에 입력 데이터를 제공하는 데이터 스트림으로, 일반적으로 키보드에서 입력됩니다. 기본적으로 파일 descriptor0
입니다. - 표준 출력 (
stdout
): 명령어가 출력을 전송하는 데이터 스트림으로, 일반적으로 터미널 화면으로 전송됩니다. 기본적으로 파일 descriptor1
입니다. - 표준 오류 (
stderr
): 명령어가 오류 메시지를 전송하는 데이터 스트림으로, 일반적으로 터미널 화면으로 전송됩니다. 기본적으로 파일 descriptor2
입니다.
표준 출력 재지정 (>
및 >>
)
출력 재지정은 가장 일반적인 재지정 형태 중 하나입니다.
기본 리디렉션 (>
)
coomand 명령의 실행 결과 출력을 file.txt
로 전송하며, 파일이 존재하면 기존 내용을 덮어씁니다.
command > file.txt
webnautes@webnautes-laptop:~$ ls
PixelHacker new_directory snap 다운로드 비디오 음악
U-2-Net obsidian_note test 문서 사진
miniconda3 pygame-test 공개 바탕화면 서식
webnautes@webnautes-laptop:~$ ls > log.txt
webnautes@webnautes-laptop:~$ cat log.txt
PixelHacker
U-2-Net
log.txt
miniconda3
new_directory
obsidian_note
pygame-test
snap
test
공개
다운로드
문서
바탕화면
비디오
사진
서식
음악
출력 추가 (>>
)
기존 내용을 덮어쓰지 않고 실행결과 출력을 file.txt
에 추가합니다.
command >> file.txt
webnautes@webnautes-laptop:~$ echo "@@@" >> log.txt
webnautes@webnautes-laptop:~$ cat log.txt
PixelHacker
U-2-Net
log.txt
miniconda3
new_directory
obsidian_note
pygame-test
snap
test
공개
다운로드
문서
바탕화면
비디오
사진
서식
음악
@@@
표준 입력 재지정 (<
)
입력 재지정 기능을 사용하면 명령어가 키보드 대신 파일에서 입력을 받을 수 있습니다.
file.txt
의 내용을 명령어의 입력으로 전달합니다.
command < file.txt
표준 오류 재지정 (2>
)
오류 메시지를 정상 출력에서 분리하여 화면에 보여주지 않고 지정한 파일에 저장합니다.
command 2> error.log
표준 출력 및 오류 결합 (>&
및 2>&1
)
표준 출력과 표준 오류를 단일 스트림으로 결합하여 하나의 파일에 저장합니다.
command > file.txt 2>&1
표준 출력과 표준 오류를 분리하여 별도의 파일에 저장합니다.
command > output.txt 2> error.log
파이프(|
) 사용
파이프는 한 명령어의 출력을 다른 명령어의 입력으로 사용하도록 해줍니다.
파이프를 다음처럼 사용하면 command1
의 출력을 command2
의 입력으로 사용합니다.
command1 | command2
ls 명령으로 현재 디렉토리의 파일을 출력한 결과입니다.
webnautes@webnautes-laptop:~$ ls
PixelHacker miniconda3 pygame-test 공개 바탕화면 서식
U-2-Net new_directory snap 다운로드 비디오 음악
log.txt obsidian_note test 문서 사진
ls의 출력 결과를 grep로 필터링하여 '공개' 문자열만 출력하도록 합니다.
webnautes@webnautes-laptop:~$ ls | grep '공개'
공개
file.txt
파일에서 “word”를 모두 찾아 해당 줄의 수를 계산합니다.
grep “word” file.txt | wc -l
프로세스 관리
프로세스 관리는 Linux 시스템 관리의 기본 요소로, 시스템에서 실행 중인 프로세스를 모니터링, 제어 및 최적화할 수 있습니다. 이 페이지에서는 Linux에서 프로세스를 관리하는 데 필요한 주요 명령어와 개념을 설명합니다.
프로세스 이해
프로세스는 시스템에서 실행 중인 프로그램의 인스턴스입니다. 각 프로세스에는 고유한 프로세스 ID(PID)가 할당되며 독립적으로 실행되지만, 프로세스는 자식 프로세스를 생성할 수도 있습니다. 프로세스는 실행 중, 대기 중, 중지된 상태 등 다양한 상태에 있을 수 있습니다.
프로세스의 유형
- 포그라운드 프로세스(Foreground Process): 이 프로세스는 사용자의 직접적인 제어 하에 실행되며, 일반적으로 터미널에서 실행되며 상태가 화면에 보여지는 상태입니다. 다른 명령은 실행할 수 없는 상태가 됩니다.
- 백그라운드 프로세스(Background Process): 터미널과 독립적으로 실행되며, 프로세스가 실행 중이어도 터미널에서 다른 명령을 실행할 수 있습니다. 명령어 뒤에 &를 붙여주면 백그라운드로 실행됩니다.
- 데몬 프로세스: 부팅 시 시작되어 지속적으로 실행되는 배경 프로세스로, 웹 서버나 데이터베이스 관리와 같은 서비스를 제공합니다.
포그라운드 프로세스와 백그라운드 프로세스를 다음처럼 제어할 수 있습니다.
Ctrl + Z: 포그라운드 프로세스를 일시정지하고 백그라운드로 보냄
bg: 일시정지된 프로세스를 백그라운드에서 재개
fg: 백그라운드 프로세스를 포그라운드로 가져옴
jobs: 현재 실행 중인 백그라운드 작업 목록 확인
프로세스 확인: ps
, top
, htop
ps
명령어
ps
명령어는 현재 실행 중인 프로세스의 스냅샷을 제공합니다. 매우 유연하며 자세한 프로세스 정보를 표시하는 데 사용할 수 있습니다.
현재 터미널에서 실행 중인 프로세스를 표시합니다.
ps
webnautes@webnautes-laptop:~$ ps
PID TTY TIME CMD
5511 pts/0 00:00:00 bash
6688 pts/0 00:00:00 ps
현재 터미널과 관련 없는 프로세스를 포함해 모든 실행 중인 프로세스의 상세 목록을 표시합니다.
ps aux
process_name
과 일치하는 프로세스만 필터링해 표시합니다.
ps aux | grep process_name
webnautes@webnautes-laptop:~$ ps aux | grep gnome-terminal
webnaut+ 5493 0.0 0.0 33220 19056 ? S 10:31 0:00 /usr/bin/python3 /usr/bin/gnome-terminal --wait
webnaut+ 5496 0.0 0.0 384908 29268 ? Sl 10:31 0:00 /usr/bin/gnome-terminal.real --wait
webnaut+ 5500 0.4 0.1 854632 68648 ? Ssl 10:31 0:13 /usr/libexec/gnome-terminal-server
webnaut+ 6702 0.0 0.0 10616 2336 pts/0 S+ 11:23 0:00 grep --color=auto gnome-terminal
top
명령어
top
명령어는 시스템 프로세스의 동적 실시간 뷰를 제공합니다. 리소스 사용량을 표시하고 프로세스 관리를 할 수 있습니다.
top
인터페이스를 실행하여 프로세스, CPU 사용량, 메모리 사용량 등을 표시합니다.
top
다음 단축키를 사용할 수 있습니다.
k
: PID를 입력하여 프로세스를 종료합니다.r
: 프로세스의 우선순위를 변경합니다.h
: 사용가능한 단축키를 출력합니다.q
:top
인터페이스를 종료합니다.
htop
명령어
htop
은 top
의 사용자 친화적인 버전으로, 프로세스 모니터링을 위한 색상 구분된 상호작용형 인터페이스를 제공합니다.
설치를 해야 사용할 수 있습니다.
sudo apt install htop
다음처럼 실행합니다.
htop
h를 누르면 단축키 설명이 보이며 q를 눌러 종료할 수 있습니다.
프로세스 관리: kill
, pkill
, killall
, 및 nice
kill
명령어
kill
명령어는 프로세스에 신호를 전송하여 일반적으로 프로세스를 종료합니다.
ps 명령으로 확인한 PID 번호를 확인하여 프로세스를 종료시킵니다.
지정된 PID의 프로세스를 우아하게 종료하기 위해 기본 SIGTERM
신호를 전송합니다.
kill PID
ps 명령으로 확인한 PID 번호를 확인하여 프로세스를 강제 종료시킵니다.SIGKILL
신호를 전송하여 프로세스를 강제 종료합니다.
kill -9 PID
pkill
명령어
pkill
은 PID 대신 프로세스 이름에 따라 신호를 전송합니다.
지정한 프로세스 이름으로 프로세스를 찾아 종료시킵니다.
지정된 이름의 모든 프로세스에 SIGTERM
신호를 전송합니다.
pkill process_name
killall
명령어
killall
은 이름으로 지정된 프로세스의 모든 인스턴스를 종료합니다.
지정된 이름의 모든 프로세스를 종료합니다.
sudo killall process_name
시스템 성능 모니터링: vmstat
및 iostat
vmstat
명령어
vmstat
는 프로세스, 메모리, 페이지링, 블록 I/O, 트랩, CPU 활동에 대한 정보를 보고합니다.
vmstat
5초마다 성능 요약 정보를 업데이트합니다.
vmstat 5
iostat
명령어
iostat
는 CPU 및 I/O 통계를 보고하며, 디스크 성능의 병목 현상을 식별하는 데 유용합니다.
마지막 재부팅 이후의 평균 CPU 및 I/O 통계를 표시합니다.
iostat
5초마다 통계를 업데이트합니다.
iostat 5
시스템 모니터링 및 로그 관리
시스템 모니터링 도구
top
및 htop
top
: 시스템 프로세스(CPU 및 메모리 사용량 포함)의 실시간 정보를 제공하는 명령줄 도구입니다.
h를 누르면 도움말이 보이며 q를 누르면 종료됩니다.
top
- 주요 기능:
- 시스템 요약 정보(가동 시간, 부하 평균, 메모리 사용량 등)를 표시합니다.
htop
: 사용자 친화적인 인터페이스와 추가 기능을 갖춘top
의 향상된 버전입니다.
다음 명령을 사용하여 우선 설치를 해야합니다.
CPU 또는 메모리 사용량별로 정렬된 프로세스 목록을 표시합니다.

$ sudo apt install htop
다음처럼 실행할 수 있습니다.
h를 누르면 도움말이 보이며 q를 누르면 종료됩니다.
htop
- 주요 기능:
- 색상 구분 표시로 읽기 용이.
- 프로세스 종료, 우선순위 변경, 다양한 지표로 정렬이 가능한 상호작용형 인터페이스.

vmstat
vmstat
: 프로세스, 메모리, 페이지링, 블록 I/O, 트랩, CPU 활동 등 가상 메모리 통계 정보를 보고합니다.- 사용법:
vmstat 5
- 주요 기능:
- 5초마다 시스템 성능의 스냅샷을 제공합니다.
메모리 또는 CPU 사용량의 병목 현상을 식별하는 데 유용합니다.

iostat
iostat
: 시스템 I/O, CPU, 디스크 사용 통계 모니터링.
우선 설치를 해야합니다.
sudo apt install sysstat
iostat 5
- 주요 기능:
- 디스크 읽기/쓰기 작업을 보고합니다.
I/O 병목 현상을 식별하는 데 도움이 됩니다.

mpstat
mpstat
: 각 프로세서별 CPU 사용량을 보고합니다.
우선 설치를 해야합니다.
sudo apt install sysstat
mpstat -P ALL 5
- 주요 기능:
- 각 CPU 코어별 CPU 사용량 통계를 표시합니다.
다중 코어 CPU 성능 분석을 돕습니다.

netstat
및 ss
netstat
: 네트워크 연결, 라우팅 테이블, 인터페이스 통계, 마스커레이드 연결, 멀티캐스트 멤버십을 표시합니다.- 사용법:
netstat -tuln
- 주요 기능:
- 모든 리스닝 포트와 활성 네트워크 연결을 목록으로 표시합니다.
ss
:netstat
보다 현대적이고 빠른 소켓 통계 표시 도구입니다.- 사용법:
ss -tuln
- 주요 기능:
- 자세한 네트워크 소켓 정보를 제공합니다.
netstat
보다 빠르고 상세합니다.
sar
sar
: 시스템 활동 정보를 수집, 보고, 또는 저장합니다.- 사용법:
sar -u 5
- 주요 기능:
- CPU, 메모리, I/O, 네트워크 및 기타 시스템 활동을 보고합니다.
- 역사적 성능 분석에 유용합니다.
df
및 du
df
: 마운트된 모든 파일 시스템의 사용 가능 및 사용 중인 디스크 공간을 표시합니다.-h
옵션으로 인간이 읽기 쉬운 형식으로 표시합니다.
df -h
webnautes@webnautes-laptop:~$ df -h
파일 시스템 크기 사용 가용 사용% 마운트위치
tmpfs 6.3G 2.4M 6.3G 1% /run
/dev/nvme0n1p6 849G 66G 740G 9% /
tmpfs 32G 46M 32G 1% /dev/shm
tmpfs 5.0M 16K 5.0M 1% /run/lock
efivarfs 148K 141K 2.2K 99% /sys/firmware/efi/efivars
/dev/nvme0n1p1 96M 69M 28M 72% /boot/efi
tmpfs 6.3G 144K 6.3G 1% /run/user/1000
du
: 디렉토리의 총 디스크 사용량을 표시합니다.
du -sh /path/to/directory
webnautes@webnautes-laptop:~$ du -sh /home/webnautes
46G /home/webnautes
네트워크 기본 개념
기본 네트워킹 개념
IP 주소 지정
- IP 주소: 네트워크상의 각 장치에 할당되는 고유 식별자입니다. IP 주소는 IPv4 또는 IPv6 형식일 수 있습니다.
- IPv4: 점으로 구분된 네 개의 10진수 숫자로 표현되는 32비트 주소(예:
192.168.1.1
). - IPv6: 128비트 주소로, 4자리 16진수 숫자로 구성된 8개의 그룹으로 표시됩니다(예:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
).
서브네팅
- 서브넷: IP 네트워크의 하위 분할. 서브네팅은 네트워크 관리 및 보안을 개선합니다.
- 서브넷 마스크: IP 주소를 네트워크 부분과 호스트 부분으로 나누는 32비트 숫자(예:
255.255.255.0
). - CIDR 표기법: IP 주소와 관련된 네트워크 마스크를 지정하는 약어(예:
192.168.1.0/24
).
DNS (도메인 이름 시스템)
- DNS: 사람이 읽을 수 있는 도메인 이름(예:
www.example.com
)을 IP 주소로 변환하는 시스템. - DNS 서버: DNS 기록을 저장하고 클라이언트의 쿼리에 응답하는 서버(예: Google DNS의
8.8.8.8
).
DHCP (동적 호스트 구성 프로토콜)
- DHCP: 네트워크 내 장치에 IP 주소 및 기타 네트워크 설정을 자동으로 할당하는 프로토콜.
- DHCP 서버: 장치에 IP 주소를 동적으로 할당하는 서버입니다.
- DHCP 임대 기간: 장치에 IP 주소가 할당되는 기간입니다.
MAC 주소
- MAC 주소: 네트워크 인터페이스 카드(NIC)에 할당된 고유한 하드웨어 식별자입니다. MAC 주소는 48비트 길이로 구성되며 일반적으로 16진수 형식으로 표시됩니다(예:
00:1A:2B:3C:4D:5E
).
네트워크 명령어
ifconfig
및 ip
ifconfig
: 네트워크 인터페이스를 구성하는 전통적인 명령어입니다.
ifconfig
- 주요 기능:
- 네트워크 인터페이스의 IP 주소, 서브넷 마스크 및 기타 정보를 표시합니다.
- 인터페이스를 활성화하거나 비활성화하는 데 사용할 수 있습니다.
ip
: 네트워크 구성에 사용되는 더 현대적이고 강력한 명령어입니다.
ip addr
ip link
ip route
- 주요 기능:
ip addr
: IP 주소 및 관련 정보를 표시합니다.ip link
: 네트워크 인터페이스를 관리합니다.ip route
: 라우팅 테이블을 관리합니다.
ping
ping
: ICMP 에코 요청을 전송하여 시스템과 다른 장치 간의 연결성을 테스트합니다.
ping 8.8.8.8
- 주요 기능:
- 호스트가 연결 가능한지 확인합니다.
- 왕복 시간과 패킷 손실을 측정합니다.
webnautes@webnautes-laptop:~$ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=117 time=62.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=117 time=39.5 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=117 time=53.2 ms
traceroute
traceroute
: 패킷이 목적지까지 이동하는 경로를 추적합니다.- 사용법:
traceroute www.example.com
- 주요 기능:
- 시스템과 목적지 사이의 각 호프를 식별합니다.
- 네트워크 라우팅 문제를 진단하는 데 유용합니다.
netstat
및 ss
netstat
: 네트워크 연결, 라우팅 테이블 및 인터페이스 통계를 표시합니다.- 사용법:
netstat -tuln
- 주요 기능:
- 활성 리스닝 포트를 표시합니다.
- 네트워크 통계를 표시합니다.
ss
:netstat
의 현대적인 대안으로 소켓 통계를 표시합니다.- 사용법:
ss -tuln
- 주요 기능:
netstat
보다 빠르고 상세합니다.- TCP, UDP 및 UNIX 소켓 연결을 표시합니다.
curl
및 wget
curl
: HTTP, FTP 등 다양한 프로토콜을 사용하여 서버와 데이터를 전송하는 명령줄 도구입니다.- 사용법:
curl http://www.example.com
- 주요 기능:
- 서버와 데이터 다운로드 또는 업로드.
- 다중 프로토콜 지원.
wget
: 웹에서 파일을 다운로드하는 명령줄 유틸리티.- 사용법:
wget http://www.example.com/file.zip
- 주요 기능:
- HTTP, HTTPS, FTP 프로토콜을 통해 파일을 다운로드합니다.
- 오프라인에서 보기 위해 전체 웹사이트를 다운로드할 수 있습니다.
nslookup
및 dig
nslookup
: DNS를 쿼리하여 도메인 이름 또는 IP 주소 매핑을 얻습니다.- 사용법:
nslookup www.example.com
- 주요 기능:
- 도메인 이름을 IP 주소로 변환합니다.
- DNS 문제 해결에 사용할 수 있습니다.
dig
: 더 유연하고 강력한 DNS 조회 유틸리티입니다.- 사용 방법:
dig www.example.com
- 주요 기능:
- DNS 쿼리에 대한 자세한 정보를 제공합니다.
- 다양한 쿼리 유형(A, AAAA, MX 등)을 지원합니다.
iptables
및 ufw
iptables
: Linux 커널의 패킷 필터링 규칙(방화벽)을 구성하는 명령줄 도구입니다.- 사용 방법:
sudo iptables -L
- 주요 기능:
- 입출력 트래픽을 제어하는 규칙을 관리합니다.
- IP 주소, 포트, 프로토콜 등에 따라 패킷을 필터링할 수 있습니다.
ufw
: Ubuntu에서 일반적으로 사용되는 방화벽 규칙 관리용 사용자 친화적 프론트엔드입니다.- 사용 방법:
sudo ufw status
sudo ufw allow 22/tcp
- 주요 기능:
- 방화벽 관리를 간소화합니다.
- 방화벽 규칙을 빠르게 활성화 또는 비활성화할 수 있습니다.
hostname
hostname
: 시스템의 호스트 이름을 표시하거나 설정합니다.- 사용 방법:
hostname
sudo hostnamectl set-hostname new-hostname
- 주요 기능:
- 현재 호스트 이름을 표시합니다.
- 시스템의 호스트 이름을 변경하는 데 사용할 수 있습니다.
네트워크 구성 파일
/etc/network/interfaces
- 위치:
/etc/network/interfaces
- 목적: Debian 기반 배포판의 네트워크 인터페이스 구성 파일입니다.
- 예시:
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
/etc/resolv.conf
- 위치:
/etc/resolv.conf
- 목적: DNS 해상도를 위한 구성 파일.
- 예시:
nameserver 8.8.8.8
nameserver 8.8.4.4
/etc/hosts
- 위치:
/etc/hosts
- 목적: 호스트 이름을 IP 주소로 매핑합니다.
- 예시:
127.0.0.1 localhost
192.168.1.100 myserver.localdomain myserver
네트워크 문제 해결 팁
네트워크 인터페이스 상태 확인
ip addr
또는ifconfig
를 사용하여 네트워크 인터페이스가 활성화되고 올바르게 구성되었는지 확인합니다.
연결 테스트
ping
을 사용하여 장치 간 연결을 확인합니다.traceroute
를 사용하여 네트워크 경로 문제를 진단합니다.
DNS 해결 확인
nslookup
또는dig
를 사용하여 DNS가 도메인 이름을 올바르게 해결하는지 확인합니다.
네트워크 트래픽 모니터링
netstat
또는ss
를 사용하여 네트워크 연결을 모니터링하고 문제를 해결합니다.
네트워크 명령어
네트워크는 Linux 시스템 관리의 핵심 요소이며, 네트워크 명령어를 효과적으로 사용하는 방법은 네트워크 연결을 관리하고 문제 해결을 수행하며 최적화하는 데 도움이 됩니다. 이 페이지에서는 Linux에서 가장 자주 사용되는 네트워크 명령어를 소개하며, 실용적인 예제와 설명을 제공합니다.
네트워크 인터페이스 확인: ip
및 ifconfig
ip
명령어
ip
명령어는 오래된 ifconfig
명령어의 현대적인 대체품으로, 더 포괄적인 네트워크 관리 기능을 제공합니다.
- 네트워크 인터페이스 표시:
ip addr show
이 명령어는 모든 네트워크 인터페이스와 그 IP 주소를 표시합니다.
- 인터페이스 활성화/비활성화:
sudo ip link set dev eth0 up
sudo ip link set dev eth0 down
이 명령어는 eth0
인터페이스를 활성화하거나 비활성화합니다.
- 인터페이스에 IP 주소 할당:
sudo ip addr add 192.168.1.100/24 dev eth0
이 명령어는 eth0
인터페이스에 서브넷 마스크 24
를 가진 IP 주소 192.168.1.100
을 할당합니다.
ifconfig
명령어
ifconfig
는 비추천되지만, 여전히 많은 시스템에서 사용됩니다.
- 네트워크 인터페이스 표시:
ifconfig
이 명령어는 모든 네트워크 인터페이스와 해당 IP 주소를 목록으로 표시합니다.
- 인터페이스 활성화/비활성화:
sudo ifconfig eth0 up
sudo ifconfig eth0 down
이 명령어는 eth0
인터페이스를 활성화하거나 비활성화합니다.
- 인터페이스에 IP 주소 할당:
sudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0
이 명령어는 eth0
인터페이스에 서브넷 마스크 255.255.255.0
을 가진 IP 주소 192.168.1.100
을 할당합니다.
네트워크 구성 확인: nmcli
및 nmtui
nmcli
명령어
nmcli
는 NetworkManager를 관리하는 명령줄 도구로, 네트워크 연결을 제어하는 데 사용됩니다.
- 모든 연결 표시:
nmcli con show
이 명령어는 모든 네트워크 연결과 그 상태를 표시합니다.
- 네트워크 연결:
nmcli con up id “connection_name”
지정된 네트워크 연결을 활성화합니다.
- 네트워크 연결 해제:
nmcli con down id “connection_name”
지정된 네트워크 연결을 해제합니다.
nmtui
명령어
nmtui
는 NetworkManager 연결을 관리하기 위한 텍스트 기반 사용자 인터페이스를 제공합니다.
nmtui
실행:
sudo nmtui
이 명령어는 nmtui
인터페이스를 실행하여 네트워크 연결을 쉽게 관리할 수 있습니다.
네트워크 트래픽 모니터링: netstat
, ss
, 및 tcpdump
netstat
명령어
netstat
는 네트워크 연결, 라우팅 테이블, 인터페이스 통계, 마스커레이드 연결, 멀티캐스트 멤버십을 모니터링하는 클래식 명령어입니다.
- 모든 연결 표시:
netstat -a
이 명령어는 TCP 및 UDP를 포함한 모든 활성 연결을 목록으로 표시합니다.
- 리스닝 포트 표시:
netstat -tuln
이 명령어는 숫자 IP 주소와 포트 번호와 함께 모든 리스닝 포트를 표시합니다.
ss
명령어
ss
는 netstat
의 현대적인 대안으로, 더 빠른 성능과 자세한 정보를 제공합니다.
- 모든 연결 표시:
ss -a
이 명령어는 모든 활성 연결을 표시합니다.
- 리스닝 포트 표시:
ss -tuln
이 명령어는 숫자 IP 주소와 포트 번호와 함께 모든 리스닝 포트를 표시합니다.
tcpdump
명령어
tcpdump
는 네트워크 문제 해결 및 보안 분석을 위한 강력한 명령줄 패킷 분석기입니다.
- 인터페이스에서 패킷 캡처:
sudo tcpdump -i eth0
이 명령어는 eth0
인터페이스에서 패킷을 캡처합니다.
- 캡처된 패킷을 파일로 저장:
sudo tcpdump -i eth0 -w capture.pcap
이 명령어는 캡처된 패킷을 capture.pcap
이라는 파일로 저장합니다.
네트워크 연결 테스트: ping
, traceroute
, 및 mtr
ping
명령어
ping
은 네트워크상의 호스트의 도달 가능성을 테스트하고 원본 호스트에서 전송된 메시지의 왕복 시간을 측정합니다.
- 호스트 ping:
ping google.com
이 명령어는 google.com
으로 ICMP 에코 요청을 전송하고 결과를 보고합니다.
traceroute
명령어
traceroute
는 패킷이 시스템에서 목적지까지 이동하는 경로를 추적합니다.
- 호스트까지의 경로 추적:
traceroute google.com
이 명령어는 google.com
에 도달하기 위해 패킷이 통과한 경로를 표시합니다.
mtr
명령어
mtr
은 ping
과 traceroute
의 기능을 단일 네트워크 진단 도구로 결합합니다.
- 호스트에
mtr
실행:
mtr google.com
이 명령어는 google.com
으로 가는 네트워크 경로를 실시간으로 표시합니다.
네트워크 구성 파일
Linux에서 주요 네트워크 구성 파일을 이해하는 것은 수동 네트워크 설정 및 문제 해결에 필수적입니다.
/etc/network/interfaces
이 파일은 Debian 기반 시스템에서 네트워크 인터페이스를 구성하는 데 사용됩니다.
예시 구성:
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
/etc/sysconfig/network-scripts/
이 디렉토리는 Red Hat 기반 시스템의 네트워크 인터페이스 구성 파일을 포함합니다.
eth0
에 대한 예제 구성:
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
SSH: Secure Shell
SSH (Secure Shell)는 네트워크를 통해 원격 시스템에 안전하게 연결하기 위해 사용되는 프로토콜입니다. 이 프로토콜은 연결을 암호화하여 보안이 없는 네트워크를 통해 안전한 채널을 제공합니다.
1. SSH
SSH는 서버 및 장치에 안전한 원격 액세스를 제공하여 사용자가 네트워크를 통해 명령을 실행하고 파일을 전송하며 시스템을 관리할 수 있도록 합니다.
원격 머신에서 실행되어 연결을 수락하고 관리하는 SSH 서버와 연결을 시작하는 SSH 클라이언트로 구성됩니다.
2. 기본 SSH 사용법
2.1 원격 서버에 연결하기
다음 명령을 사용하여 원격 서버에 연결합니다.
ssh username@hostname_or_ip
username
: 원격 시스템의 사용자 계정.hostname_or_ip
: 원격 시스템의 호스트 이름 또는 IP 주소.
예를 들어 example.com
원격 서버에 user
사용자로 연결합니다.
ssh user@example.com
2.2 포트 지정
p 옵션을 사용하여 기본 포트(22)가 아닌 다른 포트를 사용하도록 SSH 포트 번호를 지정할 수 있습니다.
ssh -p port_number username@hostname_or_ip
예를 들어 example.com
원격 서버에 user
사용자로 연결할 때 SSH 포트로 2222를 사용합니다.
ssh -p 2222 user@example.com
2.3 SSH 키를 사용한 인증
- SSH 키 쌍 생성:
ssh-keygen -t rsa -b 4096 -C “your_email@example.com”
-t rsa
: RSA 키 유형을 지정합니다.-b 4096
: 4096비트 키를 생성합니다 (더 안전함).-C “your_email@example.com”
: 키에 댓글(일반적으로 이메일 주소)을 추가합니다.- 원격 서버에 공개 키 복사:
ssh-copy-id username@hostname_or_ip
- 공개 키를 원격 서버에 복사하여 키 기반 인증을 가능하게 합니다.
- 예시:
ssh-copy-id user@example.com
example.com
의 사용자user
에게 공개 키를 복사합니다.
2.4 SSH 설정 파일
SSH 설정 파일에 옵션을 저장해두면 매번 옵션을 지정하지 않고 ssh example
처럼 간단하게 연결을 할 수 있습니다.
- 설정 파일 위치:
~/.ssh/config
Host example
HostName example.com
User user
Port 2222
IdentityFile ~/.ssh/id_rsa
3. SSH를 사용한 파일 전송
3.1 scp
(Secure Copy) 사용
로컬 시스템에서 원격 시스템으로 파일을 복사합니다.
scp source_file username@hostname_or_ip:/remote/directory
예를 들어 file.txt
를 example.com
의 /home/user/
디렉토리에 복사합니다.
scp file.txt user@example.com:/home/user/
3.2 rsync
사용
- 명령어:
rsync -avz source_directory username@hostname_or_ip:/remote/directory
-a
: 아카이브 모드, 권한, 심볼릭 링크 등을 유지합니다.-v
: 상세 출력.-z
: 전송 중 데이터 압축.- 예시:
rsync -avz /local/dir/ user@example.com:/remote/dir/
- 로컬 디렉토리
/local/dir/
을example.com
의/remote/dir/
과 동기화합니다.
4. SSH 터널링
4.1 로컬 포트 포워딩
- 목적: 로컬 포트를 원격 네트워크 서비스로 포워딩합니다.
- 명령어:
ssh -L local_port:remote_host:remote_port username@hostname_or_ip
-L local_port:remote_host:remote_port
: 로컬 포트 포워딩을 지정합니다.- 예시:
ssh -L 8080:localhost:80 user@example.com
- 로컬 포트 8080을
example.com
의 포트 80으로 포워딩합니다.
4.2 원격 포트 포워딩
- 목적: 원격 포트를 로컬 네트워크 서비스로 포워딩합니다.
- 명령어:
ssh -R remote_port:local_host:local_port username@hostname_or_ip
-R remote_port:local_host:local_port
: 원격 포트 포워딩을 지정합니다.- 예시:
ssh -R 8080:localhost:80 user@example.com
example.com
의 포트 8080을 로컬 머신의 포트 80으로 포워딩합니다.
4.3 동적 포트 포워딩 (SOCKS 프록시)
- 목적: SSH를 통해 트래픽을 터널링하기 위해 SOCKS 프록시를 생성합니다.
- 명령어:
ssh -D local_port username@hostname_or_ip
-D local_port
: 동적 포트 포워딩을 지정합니다.- 예시:
ssh -D 1080 user@example.com
- 로컬 포트 1080에 SOCKS 프록시를 설정합니다.
5. SSH 보안 강화
5.1 루트 로그인 비활성화
- SSH 구성 편집:
sudo nano /etc/ssh/sshd_config
PermitRootLogin
을no
로 설정합니다.
5.2 기본 포트 변경
- SSH 구성 편집:
sudo nano /etc/ssh/sshd_config
Port 22
를 비표준 포트(예:Port 2222
)로 변경합니다.
5.3 방화벽 규칙 활성화
- 예시 (
ufw
사용):
sudo ufw allow 2222/tcp
sudo ufw enable
- 사용자 정의 SSH 포트를 통해 트래픽을 허용하고 방화벽을 활성화합니다.
5.4 이중 인증
- 설치 및 구성:
sudo apt-get install libpam-google-authenticator
- Google Authenticator를 사용하여 이중 인증(2FA)을 설정하는 안내에 따라 진행합니다.
네트워크 구성
1. 네트워크 구성 소개
- 네트워크 구성 요소:
- IP 주소: 네트워크상의 장치를 식별합니다.
- 서브넷 마스크: 네트워크 세그먼트를 정의합니다.
- 게이트웨이: 로컬 네트워크에서 다른 네트워크로 트래픽을 라우팅하는 장치입니다.
- DNS (도메인 이름 시스템): 도메인 이름을 IP 주소로 변환합니다.
2. 네트워크 인터페이스 확인
2.1 ifconfig
사용
- 명령어:
ifconfig
- 현재 네트워크 인터페이스와 그 구성 정보를 표시합니다.
- 예시 출력:
eth0 Link encap:Ethernet HWaddr 00:1a:2b:3c:4d:5e
inet addr:192.168.1.10 Bcast:192.168.1.255 Mask:255.255.255.0
...
eth0
인터페이스의 구성 정보를 표시합니다.
2.2 ip
명령어 사용
- 명령어:
ip addr show
- 모든 네트워크 인터페이스에 대한 자세한 정보를 표시합니다.
- 예시:
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
inet 192.168.1.10/24 brd 192.168.1.255 scope global dynamic eth0
...
3. 네트워크 인터페이스 구성
3.1 ifconfig
사용
- IP 주소 할당:
sudo ifconfig eth0 192.168.1.20 netmask 255.255.255.0
eth0
에 서브넷 마스크255.255.255.0
을 가진 IP 주소192.168.1.20
을 할당합니다.
3.2 ip
명령어 사용
- IP 주소 할당:
sudo ip addr add 192.168.1.20/24 dev eth0
eth0
에 IP 주소192.168.1.20/24
를 할당합니다.
3.3 변경 사항 영구화
- Debian/Ubuntu:
/etc/network/interfaces
파일을 편집합니다.
auto eth0
iface eth0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1
- RHEL/CentOS:
/etc/sysconfig/network-scripts/
디렉토리 내의 적절한 파일을 편집합니다.
DEVICE=eth0
BOOTPROTO=static
IPADDR=192.168.1.20
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ONBOOT=yes
3.4 네트워크 서비스 재시작
- Debian/Ubuntu:
sudo systemctl restart networking
- RHEL/CentOS:
sudo systemctl restart network
4. DNS 설정 관리
4.1 DNS 서버 구성
- 임시 구성:
/etc/resolv.conf
파일을 편집합니다.
nameserver 8.8.8.8
nameserver 8.8.4.4
- Google DNS 서버를 추가합니다.
- 영구 구성:
- Debian/Ubuntu:
/etc/network/interfaces
또는/etc/systemd/resolved.conf
파일을 편집합니다. - RHEL/CentOS:
/etc/sysconfig/network-scripts/ifcfg-eth0
파일을 편집합니다.
4.2 DNS 구성 테스트
- 명령어:
nslookup example.com
example.com
의 DNS 해상도를 확인합니다.
5. 호스트 이름 구성
5.1 호스트 이름 확인 및 설정
- 현재 호스트 이름 확인:
hostname
- 새로운 호스트 이름 설정:
sudo hostnamectl set-hostname newhostname
5.2 호스트 파일 편집
- 명령어:
sudo nano /etc/hosts
- 로컬 이름 해결을 위해 IP 주소와 호스트 이름을 매핑합니다.
6. 정적 경로 구성
6.1 정적 경로 추가
- 명령어:
sudo ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
192.168.2.0/24
네트워크로 전송되는 트래픽을192.168.1.1
을 통해eth0
로 라우팅합니다.
6.2 정적 경로 영구화
- Debian/Ubuntu: 경로를
/etc/network/interfaces
에 추가합니다.
up ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0
- RHEL/CentOS:
/etc/sysconfig/network-scripts/route-eth0
파일을 편집합니다.
192.168.2.0/24 via 192.168.1.1 dev eth0
7. 네트워크 문제 해결
7.1 연결성 테스트
- Ping 명령어:
ping -c 4 8.8.8.8
8.8.8.8
로 4개의 ICMP 패킷을 전송하여 연결성을 테스트합니다.
webnautes@webnautes-laptop:~$ ping -c 4 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=115 time=38.2 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=115 time=50.6 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=115 time=39.0 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=115 time=38.3 ms
--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 38.242/41.555/50.629/5.247 ms
7.2 경로 확인
- 명령어:
ip route show
- 현재 라우팅 테이블을 표시합니다.
webnautes@webnautes-laptop:~$ ip route show
default via 192.168.45.1 dev wlo1 proto dhcp src 192.168.45.213 metric 600
192.168.45.0/24 dev wlo1 proto kernel scope link src 192.168.45.213 metric 600
7.3 네트워크 인터페이스 상태 확인
- 명령어:
ip link show
- 네트워크 인터페이스의 상태를 표시합니다.
webnautes@webnautes-laptop:~$ ip link show
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp2s0: mtu 1500 qdisc fq_codel state DOWN mode DEFAULT group default qlen 1000
link/ether 40:cc:ba:45:5a:25 brd ff:ff:ff:ff:ff:ff
3: wlo1: mtu 1500 qdisc noqueue state UP mode DORMANT group default qlen 1000
link/ether e4:65:38:e4:d6:9f brd ff:ff:ff:ff:ff:ff
altname wlp3s0
Comments ()