Journey to Security/리눅스 34

리눅스 명령어는 어떤 파일을 참조할까? strace로 파일 접근 추적하기

리눅스 시스템을 관리하다 보면 특정 명령어가 어떤 설정 파일을 읽는지, 혹은 어떤 로그 파일을 참조하는지 궁금할 때가 있다.소스 코드를 뒤져보지 않고도 이를 알아낼 수 있는 방법이 바로 strace를 활용하는 것이다. 1. 왜 strace를 사용하는가?리눅스의 모든 프로세스는 파일을 열거나 네트워크를 사용하는 등 커널의 도움이 필요할 때 시스템 콜(System Call)을 호출한다.strace는 이 신호를 가로채서 화면에 뿌려주는 도구다.특히 "프로그램이 실행될 때 어떤 파일을 읽으려다 실패했는가?"를 찾는 트러블슈팅에 유용하다. 2. 2> /dev/stdoutstrace를 단순히 실행하면 분석 내용이 너무 길어서 원하는 정보를 찾기 힘들다.이때 다음과 같은 조합을 사용한다.strace [명령어] 2>..

압축/아카이브 관련 명령어

파일 압축은 gzip, bzip2, xz, zip이 있다.그 중에서도 gzip, bzip2, xz를 많이 사용한다.1. gzip1️⃣ gzip 파일1 파일2 ... : 파일을 압축한다. 압축을 하면 원본 파일을 압축하고 원본파일을 삭제한다.gzip으로 압축하면 파일명.gz으로 생성된다.압축을 해제하려면 -d 옵션을 사용한다.gzip --help로 사용법 확인. /usr/bin/ls와 /usr/bin/mv 파일을 현재 디렉터리로 복사한다.[linuxadmin@www ~]$ cp /usr/bin/ls .[linuxadmin@www ~]$ cp /usr/bin/mv .또는 아래와 같은 방법으로 한 번에 복사할 수 있다.[linuxadmin@www ~]$ cp /usr/bin/{ls,mv} . [linuxadm..

사용자/그룹/로그인 관련 명령어

1. who : 로그인 사용자시스템에 로그인한 사용자를 확인로그파일 중에서 /var/run/utmp 파일을 참조사용자가 로그인을 할 때 /var/run/utmp 파일에 정보가 기록된다. [linuxadmin@localhost ~]$ ll /var/run/utmp -rw-rw-r--. 1 root utmp 2304 3월 19 14:10 /var/run/utmp [linuxadmin@localhost ~]$ strace -bash: strace: 명령어를 찾을 수 없음 [linuxadmin@localhost ~]$ sudo dnf -y install strace[linuxadmin@localhost ~]$ strace who 2> /dev/stdout | grep var [linuxadmin@localh..

C 소스 패치파일 만들기

[linuxadmin@localhost ~]$ vi hello_old.c#include int main() { printf("Hello\n"); return 0;}[linuxadmin@localhost ~]$ vi hello_new.c#include int main() { printf("Hello, World!\n"); return 0;} 패치 파일로 만든다.[linuxadmin@localhost ~]$ diff -u hello_old.c hello_new.c > myprogram.patch [linuxadmin@localhost ~]$ sudo dnf -y install gcc 패치 명령어 사용을 위해 패키지 설치[linuxadmin@localhost ~]$ sudo dnf -y..

리눅스 기본 명령어 모음

명령어 도움말 :man 페이지를 이용 (man-page가 없으면 패키지를 설치)rpm -q man-pagessudo dnf -y install man-db man-pages--help, -h 이용 (명령어에 따라 이 옵션이 없을수도 있음) 1. ip -br -4 a : IPv4 주소로 간단하게 표시2. echo $LANG : 언어셋 환경변수 설정값 출력 (한글로 설치했으면 ko_KR.UTF-8)3. LANG=en_US.UTF-8 : 언어셋 환경변수 값 영어로 변경4. ls -alh : 숨김파일 포함해서 용량 단위로 자세히 보기5. ls -alt : 숨김파일 포함 시간순으로 자세히 보기6. ls / : 최상위 디렉터리 보기7. cd : 홈 디렉터리(home/계정) 로 이동 = cd ~ , cd /home ..

Rocky Linux 서버 IP 설정 (nmtui)

1. 루트 계정 로그인2. # nmtui 3. VMWare Workstation 메뉴 > Edit > Virtual Network Editor로 들어가서 네트워크 설정 확인 네트워크 길이: 프리픽스의 길이 = 24브로드캐스트 주소: 192.168.100.255가용 IP주소: 192.168.100.1~254192.168.100.1 : Host OS가 잡고있음.Host는 외부 통신이 안되고 NAT는 외부 통신이 됨. 192.168.100.1: 게이트웨이가 잡고 있음.가용 IP: 192.168.100.3 부터 설정 가능 4. 아래와 같이 설정 후 재부팅 연습용으로 설정할 때는 간단하게 재부팅을 할 수 있다. # reboot 하지만 실무에서는 네트워크 설정 후 서버를 재부팅하면 너무 오래걸리기 ..

리눅스 스토리지 계층 구조의 이해: 디스크, 파티션, 파일 시스템

리눅스 시스템 관리의 핵심은 물리적 저장 장치를 논리적인 데이터 관리 체계로 변환하는 과정을 이해하는 데 있다.이 포스팅을 통해 헷갈리기 쉬운 디스크, 파티션, 파일 시스템의 개념적 차이를 명확히 하고, 실제 Rocky Linux 환경에서의 파일 시스템 조회 데이터를 가지고 파일 시스템이 어떻게 구성되어 있는지 알아보자.1. 스토리지 관리의 3단계: 디스크, 파티션, 파일 시스템리눅스에서 저장 장치는 세 가지 논리적 단계를 거쳐 준비된다.디스크 (Disk): HDD 또는 SSD와 같은 물리적인 하드웨어 장치 그 자체를 의미한다. 리눅스 커널은 이를 /dev/sda 또는 /dev/nvme0n1과 같은 장치 파일로 인식하며, 이 상태에서는 아직 데이터를 구조적으로 저장할 수 없다.파티션 (Partition)..

/lib : 정적 라이브러리(.a) vs 동적 공유 라이브러리(.so)

리눅스 시스템 프로그래밍의 기초이자, 효율적인 소프트웨어 빌드 전략을 세우기 위해 반드시 이해해야 할 정적 라이브러리(Static Library)와 공유(동적) 라이브러리(Shared Library)의 차이점을 알아보자.1. 라이브러리 결합 방식의 이해라이브러리란 자주 사용되는 함수들을 미리 컴파일하여 모아놓은 파일이다.프로그램이 빌드될 때 이 라이브러리를 어떻게 포함하느냐에 따라 정적과 동적으로 나뉜다.🟣정적 라이브러리 (Static Library, .a)정적 라이브러리는 컴파일의 마지막 단계인 링크(Linking) 시점에 라이브러리 파일 내의 필요한 기계어 코드를 실행 파일에 직접 복사한다.독립성: 필요한 모든 코드가 실행 파일 내부에 포함되어 있어, 실행 환경에 해당 라이브러리가 없어도 단독으로 ..

[Linux] APT 저장소 방식으로 VS Code 설치하기 (작동 원리)

리눅스에서 VS Code를 설치하는 방법은 크게 Snap과 공식 APT 저장소 방식으로 나뉜다.Snap은 간편하지만, 샌드박스(Sandbox) 내에서 실행되기 때문에 시스템의 컴파일러나 디버거와의 연동이 까다롭고 실행 속도가 상대적으로 느리다는 단점이 있다. 반면, 공식 저장소를 등록하는 방식은 시스템 자원에 직접 접근하기 쉬워서 개발 도구 간의 호환성이 뛰어나고, apt upgrade 명령어로 다른 패키지들과 함께 일괄 업데이트가 가능하기 때문에 더 효율적이다. 1. 필수 유틸리티 설치sudo apt install -y wget gpg작동 원리: 시스템에 패키지를 다운로드할 wget과 보안 검증을 위한 gpg 도구가 있는지 확인하고 설치한다.패키지 역할: wget은 웹에서 파일을 가져오는 통신 도구이며..

[Linux] C/C++ 개발 환경 세팅: GCC, G++ 설치 및 build-essential

리눅스 환경에서 C 또는 C++ 프로그램을 개발하기 위해서는 컴파일러 설치가 필수적이다.우분투에서 C 개발 환경을 구축하는 방법과 주요 도구들의 차이점을 알아보자.1. GCC vs G++GCC와 G++ 둘 다 GNU 컴파일러 모음(GCC)에 포함되어 있지만, 처리 방식에 차이가 있다.구분GCC (gcc)G++ (g++)주요 대상C 언어 컴파일러C++ 언어 컴파일러확장자 인식.c는 C로, .cpp는 C++로 인식모든 파일을 C++로 간주라이브러리 링크C++ 표준 라이브러리를 자동 링크하지 않음**C++ 표준 라이브러리(STL)**를 자동 링크 C 코드를 짤 때는 gcc, C++ 코드를 짤 때는 g++를 사용하는 것이 표준이다.C++ 파일을 gcc로 컴파일하면 라이브러리 링크 오류가 발생할 수 있으므로 주의..

1 2 3 4