우분투 명령어 정리

·

7 min read

가상머신용 드라이버 확장팩 - 호스트와 게스트 사이 클립보드 공유 및 파일 드래그앤드롭 가 apt install build-essential apt install dkms apt install linux-headers-$(uname -r) 한줄로 쳐도 됨

cat -e 줄끝에 $를 붙임으로써 공백확인 cat -n 줄넘버

mkdir -p 새끼가 있는 파일 만들기 rmdir -r 새끼가 있는 파일 지우기

man man 매뉴얼에 대한 매뉴얼 man socket man -a priftf 전체 출력 man -k printf 검색 man -k ^printf 정규표현

apt intsall vimtutor

id 권한 확인

sudo visudo 수퍼유저 권한 편집

user1 ALL-(ALL)/sbin/ifconfig 전체권한주기?

useradd -aG user1 sudo(wheel)

/etc/passwd UID 0 root 1~99 predefined 100~999 adminivstrative and system accounts 1000~ user

/etc/shadow 사용자암호 epoch = 1970 1. 1 00:00:00 UTC

! locked $ 1$ MD5 $ 2a$ Blowfish $ 2y$ Blowfish $ 5$ SHA-256 $ 6$ SHA-512

adduser [옵션] --home --shell --disabled-password --disalbed-login <유저명>

chage user1 암호정책 변경 chage -l user1 암호정책 확인 chage -E 2021-12-31 -m 1 -M 90 -W 7 user1

passwd -l user1 계정잠금 passwd -u user1 잠금해제 passwd -S user1 상태확인 passwd -n <최소기간> user1 암호최소기간 passwd -x <기간> user1 최대기간 man passwd

deluser user1 새사용자가 동일ID일 경우 이전 디렉토리에 맵핑 userdel user1 non-interactive 모드 삭제 userdel -f user1 로그인중이라도 삭 deluser user1 --remove-home

addgroup delgroup

usermod user1(moduser는 없음) usermod -c 이름변경 usermod -a -G sudo user1 user1을 sudo 그룹에추가 adduser user1 sudo user1을 sudo 그룹에 추가 deluser user1 sudo user1을 sudo그룹에서 제거

sudo gpasswd -d

umask 기본 파일 권한 666 기본 디렉토리권한 777 002일 경우 디폴트값에서 뺀 값으로 생성

chown chgrp

stickybit chmod u+s 파일명 chmod g+s 파일 chmod +t 디렉토리명

apt list 깔수있는 패키지 apt list --installed apt list --upgradeable apt search apt show apt remove apt purge +설정파일 삭제 apt autoremove 사용되지 않는 패키지(업그레이드 이후 의존성이 바뀌어 더이상 참조되지 않는 패키지) apt full-upgrade 업그레이드 과정중 삭제가 필요하면 삭제

레포지토리 유형 main 공식지원 오픈소스 universe 커뮤니티 지원 오픈소스 restricted 공식지원 비오픈소스(디바이스 드라이버 등) multiverse 미지원 비오픈소스, 상용 security 보안 업데이트 updates 보안 패치는 아니나 중요한 업데이트, 치명적 버그 backport majer patch에 적용된 기능 중 일부가 구형에 backporting된 경우 update-manager 데몬 (/etc/update-manager/release-upgrades) aptd update-notifier 데몬 unattednded-upgrade

/etc/apt/* sources.list 패키지를 가져오기 위한 목록 sources.list.d 추가 소스 리스트 apt.conf apt 설정파일(매뉴얼) apt.conf.d 추가 설정파일(데몬이 추가/관리)

/var/cache/apt/archives 패키지 파일을 가져온 저장소 /var/lib/apt/lists 상태 저장소

launchpad.net 개인유저들의 리포 add-apt-repository ppa:리포명/PPA add-apt-repository --remove 이하동문 apt install ppa-purge ppa-purge ppa:리포명/PPA 개인리포 패키지와 리포 전부 삭

VM에서 패키지 설치시 주로 뜨는 오류 ~ 잠금 파일을 얻을 수 없습니다 - open(11: 자원이 일시적으로 사용 불가능함) ->기다리거나 kill 오랜만에 켰을때 os가 자동업데이트 중에 내가 명령함 lsof /var/lib/dpkg/lock 2>/dev/null 멈춤확인 ps aux | grep unatt 업데이트 프로세스명 확인 lsof | grep dpkg

unattended-upgrade --dry-run 적용될것 미리확인

패지지는 .deb .dpkg dpkg -i dpkg -r 삭제 dpkg -P 설정파일포함( purge) dpkg -l 설치된 목록 dpkg -s 검색 dpkg -S 설치된 위치 dpkg -I 패키지인포 dpkg -c 패키지 내용물 dpkg -x 압축풀기 dpkg -X 압축내용 보여주며 풀기

do-release-upgrade 배포판 최신업그레이드 /etc/update-manager/release-upgrades 설정 한번에 한 버전만 업그레이드만 가능

데몬종류 httpd 웹서버 ftpd squid 웹프록시 sshd syslogd, rsyslogd cupsd, lpd 프린터 inetd, xinetd 네트워크

service --status-all 예전명령어 systemctl status 데몬명(+.service) systemd를 이용한 관리 /sbin/init -> /lib/system/systemd 프로세스 자동시작, 의존성 관리, 급종료 대응, 런레벨에 따른 프로세스 구동 /lib/systemd/system/ default.target runlevel?.target /etc/systemd/system/*.service 심볼릭 링크를 통한 구현체 etc->lib systemctl list-units 모든 서비스 확인 --type=service(target 부팅시 선택가능한 타겟) --state=running(failed, active) systemctl get-default 현재 런레벨 set-default multi-user.target status, start,stop, restart, reload 설정재적용, enable 부팅시 자동시작, disable, mask 시작못하게 숨기, unmask

journalctl 전체로그 -b 부팅후 로그 -f 최근로그 및 이후 로그 트래킹 대기 -u 서비스명 -p crit 크리티컬 속성로그 확인(emerg(0), alert(1), crit(2), err(3), warning(4), notice(5), info(6), debug(7)) --since=2020-06-01 --until=today(yesterday, ) --disk-usage /var/log/journal

아파치 httpd 레드햇/페도라 apache2 데비안

nginx 모든 배포

아파치 설치 sudo apt install apache2 /etc/apaceh2/apache2.conf 기본 설정 /etc/apache2/site-available/* /etc/apache2/site-enabled/* 심볼릭 링크 ln -s 로 활성 sudo systemctl restart apache2 /var/www/html/* /var/log/apache2/*

nginx 설치 systemctl status nginx sudo apt install nginx curl localhost /var/log/nginx/access.log /etc/nginx/nginx/conf /etc/nginx/site-available/* /etc/nginx/site-enabled/* /var/www/html 아파치와 nginx 중복 설정 방지 root /var/www/nginx/html DocumentRoot /var/www/apach2/html

apt install vsftpd /etc/vsftpd.conf 한글깨질시 utf8_filesystem=YES 주석해제 후 재설정/ os에서도 한글지원해야함 ftp127.0.0.1

anonymous_enable=YES 기본계정 annonymous, ftp /srv/ftp 익명 공유디렉토리

local_enable

write_enable

chroot_local_user allow_writeable_chroot 사용자 홈디렉토리 탈출금지

local_root=/srv/ftp 공유 루트디렉토리

vi /etc/pam.d/vsftpd pam모듈 통한 접근제어 sense=allow file=/etc/fipusers_permit

mysql 설치 sudo apt install mysql-server sudo mysql_secure_installation(필수아님) sudo mysql CREATE USER 'user1'@'localhost' IDENTIFIED BY 'qwer1234'; GRANT ALL PRIVILEGES ON . 'user1'@'localhost' WITH GRANT OPTION; SELECT user, host FROM mysql.user;

모니터링 users, tty, pts, who, w 현황 tty = teletypewriter = terminal 텍스트입출력환경 /dev/ttyN tty0,1,2 터미널 콘솔 ttyS0, S1 시리얼 콘솔 pts= pseudo terminal slave = xterm, screen, ssh 등의 터미널 에뮬레이션 인터페이스 /dev/pts pts/0,2 가상(원격접속) 터미 who -a all -b, -d, --login, -p -r -t -T -u -b 최근 부팅 -r 런레벨 -H 헤더정보 last, lastb 접속 로그 /var/log/wtmp 바이너리 로그 last 유저명 last -n 넘 lastb 접속실패 /var/log/btmp

history .bash_history /var/log/auth.log 인증로그 권한상승 혹은 시도

bg, fg, jobs, screen 프로세스 ps, /proc/pid번호/ pstree kill, killall lsof, fuser 파일 디렉토리 사용서비스 strace 시스템콜 트레이싱 ltrace 라이브러리 트레이싱 ipconfig, arp, route, ip, netstat ping, traceroute, nslookup nmap, nc, tcpdump 디버깅 nload, iftop, iptraf, nethogs, bmon 네트워크 모니터링

wall 사용자간 메시지 write all write 개별사용자명 터미널명

tail -f /var/log/syslog & bg로 실행 tail -f /var/log/message bg %1 중단된 프로세스 백그라운드에서 실행 kill %1

ps a, -a, u user/ower, x /show all 커널프로세스는 대괄호로 표 Kernel Task 값 I idle D uninterruptible sleep 주로 IO 대기상태 R 실행중 S interruptible sleep 깨울수있는 상태 T stopped 작업제어신호나 트레이싱 신호로 인한 중지 Z defunct 좀비 종료되었으나 부모에 의해 처리되지 않음 < high priority N log priority L pages locked into memory s session leader l multithreaded

  • foreground process group

ps axu ps -ejH ps axjf ps -U root -u root u 루트권한 실행중인 모든 프로세스, 일반적으로 UID 와 EUID는 같지만 setuid bit이 설정된 경우 한시적으로 루트권한 가져옴 ps -xu 내 권한으로 실행중 ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchat:14,comm ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm ps -eo pid.tt.user,fname,tmout,f,wchan ps -aN --format cmd,pid,user,ppid

/proc/ 1 init 프로세스 정보 self 현재 실행중 eg, ls -l /proc/self ls프로세스 자체 cd /proc/self 배쉬 쉘 프로세스 cat cmdline 배쉬의 실행옵션 /proc/pid넘버 maps 메모리 매핑공간 cmdline 실행 인자 cwd 사용중 디렉토리나 파일 environ 환경변수 exe 이름 fd 사용중인 파일 디스크럽터 fdinfo 파일 디스크럽터 정보 net 프로세스가 바라보는 네트워크 정보 stat 프로세스에 대한 정보기록 statm 메모리 사용정보 size, resident, share, text, lib, data, dt status

nginx 디버깅 pidof nginx, cd /proc/pid넘버 cat cmdline 내용확인 및 데몬실행 명령어와 비교 sudo ls -al fd 열고있는 파일 디스크럽터 cat statm 메모리 사용정보 cat status

pstree -u = ps xf

kill -l 모든 시그널은 프로세스 구현자(개발자)에게 개발여부가 달림 implementation SIGHUP 주로 종료지만 재설정으로도 쓰임 SIGQUIT 정상종료후 코어덤프 생성 SIGTERM 정상종료 SIGINT 강제종료 = Ctrl+C SIGKILL 개발자가 핸들링할 수 없음 kill -HUP pid kill -INT pid kill -KILL pid kill -1 pid killall -s 신호명 프로세스명 killall -u 사용자명 프로세스명 killall -i interactive -v verbose 결과

lsof 파일 사용중인 프로세스 -i 네트워크 이용중인 프로세스 -u

fuser 파일/디렉토리 사용중 프로세스/사용자 조회 sudo fuser /var/log/nginx/* sudo fuser /var/log/*

strace 프로세스 -t 출력결과에 타임스탬프 -tt timestamp.msec -f fort프로세스도 추적

NIC 네이밍 ifconfig -a 펌웨어/바이오스가 할당 eno1 PCI ex 1 ens1 물리위치 enp2s0 참고 freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceN~ enp0s3 = ethernet network periperal GUI 도구가 상시 관리중일때 CLI로 설정해도 먹히지 않는 경우가 있음 NetworkManager cd /etc/netplan cat 01-networ~.yaml 편집후 sudo netplan apply 혹은 재부팅, 수동설정 네트워크관리위해 system-networkd활성화 필

arp -an 조회 arp -d ip주소 삭제 arp -s ip주소 mac주소 주소고정추가

route -n 조회 add del route add default gw 10.0.2.2 route add -net 192.168.0.0 netmask 255.255.255.0 gw 10.0.2.2 route add -host 192.168.1.1 dev enp0s3

ip link addr addr show enp0s3 route neigh l2/l3 ip rule ip rule show ip route show table main ip route get 8.8.8.8 ip route get 8.8.8.8 from 10.0.2.15

PBR policy based routing ip rule add from 192.168.0.0/32 table 1 priorit 100 ip route add default via 10.0.2.15 table 1 ip route show table 1 ip route flush cache

ip addr add 10.0.2.15/24 dev enp0s3 ip link set enp0s3 up ip route add default via 10.0.2.2 ip route add 192.168.0.0/24 via 10.0.2.2 dev enp0s3 ip route help man in route

netstat -a 모든 소켓 -r 라우팅 정보 -n 호스트명 대신 ip주소 -i 모든 네트워크 인터페이스 -s 프로토콜별 네트워크 통계 -p 해당 소켓과 관된 프로세스

nslookp 도메인명 질의네임서버 nslookup google.com 8.8.8.8 /etc/resolv.conf 기본 도메인 서버 cat /etc/systemd/resolved.conf systemctl status systemd-resolved

tcpdump -i 인터페이스 -w 덤프파일 저장 -r 저장된 덤프 로딩 -c 캡쳐할 패킷수 -s 패킷 캡쳐 길이, 0은 모든 길이 -v, -vv, -vvv 상세정보 -n, -nn 호스트네임 및 포트에 대한 resolve 끄기 host 해당 호스트와 통신 src dst net 해당 대역 port src port portrange icmp, tcp, udp tcpdump -i enp0s3 src 1.2.3.4 and dst port 80 tcpdump dst 192.168.0.2 and src net not icmp tcpdump 'src 8.8.8.8 and (dst port 3389 or 22)' tcpdump -i enp0s3 -w test.pcap -c 10 tcpdump -i enp0s3 -s0 -nn tcpdump -i enp0s3 host 8.8.8.8