자주 쓰는 Linux 명령어를 간결한 설명 + 예시 위주로 정리했어요.
Ubuntu/RHEL 계열 공통 기준입니다.
1) 파일·디렉터리
ls -al # 숨김 포함 상세 목록
tree -a # 트리 구조(패키지 필요: sudo apt/dnf install tree)
pwd # 현재 경로
cd - # 직전 디렉터리로 이동
touch file.txt # 빈 파일/타임스탬프 갱신
mkdir -p a/b/c # 부모 디렉터리까지 생성
cp -a src/ dst/ # 속성 유지한 복사(권한/시간/링크)
mv old new # 이동/이름 변경
rm -rf dir/ # 디렉터리 강제 삭제(주의!)
head -n 20 f.txt # 앞 20줄
tail -n 100 -f app.log # 실시간 로그 모니터링
팁: cp -a는 백업·마이그레이션에 안전. 대용량 복사는 rsync -aHAX.
2) 검색·필터링(로그 분석 핵심)
find /var/log -type f -name "*.log" -mtime -1
find . -type f -size +100M
find / -xdev -perm -4000 -type f -ls # SUID 점검
grep -R --color -n "ERROR|WARN" .
grep -E "Failed|Invalid" /var/log/auth.log
zgrep "timeout" /var/log/nginx/*.gz # 압축 로그
awk -F: '{print $1,$7}' /etc/passwd | column -t
sed -i.bak 's/^#\?Port.*/Port 2222/' /etc/ssh/sshd_config
패턴: 명령 | grep 키워드 로 원하는 줄만 추리기.
3) 권한·소유권
ls -l # -rwxr-xr-x 형태 확인
chmod 640 file # rw- r-- ---
chmod 4755 binfile # SUID + 755
chmod g+s shared/ # SGID (디렉터리 내 그룹 상속)
chmod +t /project/tmp # sticky bit (소유자만 삭제)
chown user:group file # 소유자/그룹 변경
umask 027 # 새 파일 기본권한: 666-027 = 640
getfacl file ; setfacl -m u:alice:r file # ACL
4) 사용자·그룹
id alice
useradd -m -s /bin/bash alice
passwd alice
usermod -aG sudo alice # -aG(추가), -G만 쓰면 덮어쓰기
groupadd dev ; gpasswd -a alice dev
chage -l alice # 비밀번호 만료 정책
5) 프로세스·리소스
ps aux | grep sshd
pgrep -a nginx # 이름으로 PID 찾기
top # 실시간 모니터(메모리/CPU)
kill -15 PID # 정상 종료(SIGTERM)
kill -9 PID # 강제 종료(최후수단)
nice -n 10 cmd ; renice 5 PID
lsof -i :80 # 포트 점유 확인
free -h ; df -h ; du -sh * # 메모리/디스크 사용량
6) 서비스·부팅(systemd)
systemctl status ssh
systemctl enable --now ssh
systemctl disable --now firewalld
systemctl list-unit-files --type=service
journalctl -u ssh --since "2025-10-01"
journalctl -xe # 에러 상세
개념: enable=부팅 시 자동, --now=즉시 시작/중지.
7) 패키지 관리
Debian/Ubuntu
apt update && apt upgrade -y
apt install tcpdump
apt remove pkg # 설정 유지
apt purge pkg # 설정까지 삭제
apt policy openssh-server
RHEL/CentOS/Rocky
dnf check-update
dnf install tcpdump
rpm -qi pkg
rpm --checksig file.rpm # 서명 검증
8) 네트워크·전송
ip addr ; ip route
ss -tulpn # 리스닝 소켓(netstat 대체)
ping -c 4 8.8.8.8
traceroute 1.1.1.1
dig +short A example.com
curl -I https://example.com # 헤더만
scp file user@host:/tmp/
rsync -av --delete src/ dst/ # 미러링(삭제 주의)
9) 디스크·파일시스템
lsblk -f # 장치/FS/UUID
blkid # UUID만 빠르게
df -h # 마운트별 사용량
du -sh * # 현재 폴더 용량 합
mount /dev/sdb1 /data
umount /data
fsck /dev/sdb1 # 마운트 해제 후 검사
보안 옵션: /etc/fstab에 nodev,nosuid,noexec 자주 사용.
10) 압축·아카이브·무결성
tar czf backup.tgz dir/ # 생성
tar xzf backup.tgz -C /restore # 해제
zip -r logs.zip /var/log
sha256sum file.iso > file.iso.sha256 # 해시 생성
sha256sum -c file.iso.sha256 # 무결성 검증
gpg --verify sig.asc file # 서명 검증
11) 방화벽 빠른 설정
firewalld
firewall-cmd --state
firewall-cmd --add-service=ssh --permanent
firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-all
iptables(레거시)
iptables -P INPUT DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -L -n -v
12) SSH 보안 기본값
sudoedit /etc/ssh/sshd_config
# 권장
PermitRootLogin no
PasswordAuthentication no # 키 기반 로그인 권장
AllowUsers alice bob
# 적용
sshd -t && systemctl restart ssh
붙여두기 좋은 원라이너
# 최근 15분 시스템 로그
journalctl --since "-15 min"
# 현재 디렉터리에서 가장 큰 20개 파일
du -ah . | sort -h | tail -n 20
# 현재 서버의 SUID 파일 목록
find / -xdev -perm -4000 -type f -ls
# 포트별 누가 리스닝 중인지
ss -tulpn | column -t
초보가 자주 실수하는 포인트(짧게)
-
usermod -G만 쓰면 기존 보조그룹이 덮어쓰기됨 →-aG사용. -
kill -9는 최후수단. 먼저-15(SIGTERM)로. -
rsync --delete는 대상에 없는 파일을 지움(백업 폴더에 주의). -
cron은 PATH가 제한적 → 명령은 절대경로로 작성.