여기에 기술된 모든 내용은 "리눅스 실무기술 300 - 박성수 저"를 기반으로 본인(?)에게 필요한 내용으로 요약되었습니다.
/etc/login.defs, /etc/default/useradd 파일을 참조하여
/etc/passwd 파일에 등록. ID/ UID/ GID, home 디렉토리, 쉘 정의
/etc/shadow 파일에 password 정보등록
/home/rsyoung 생성
/etc/skel/ 모든 파일 (히든파일포함)을 /home/rsyoung 에 복사함
/var/spool/mail/rsyoung 메일박스를 생성함
passwd -s <userid>
userdel <userid>
/etc/passwd
/etc/shadow
/etc/group
파일에서 해당 id 제거
userdel -r <userid>
/home/<userid>
/var/spool/mail/<userid>
파일까지 제거
userdel -f <userid>
심지어 로그인중이라도 삭제 ㅠ.ㅠ (잔인한놈 ㅋㅋㅋ)
현재 시스템에 접속한 정보 확인
시스템의 부팅정보
죽어있는 프로세스 정보 확인
/etc/shells의 내용을 보여줌
: chsh은 기본쉘을 변경하는 것임. 기본쉘은 로그인쉘을 의미하며
/etc/passwd의 값이 변경됨
현재쉘을 변경하는 명령은
/bin/sh
/bin/csh
/bin/bash
서버에 접속할 당시의 이름. rsyoung --> root --> mybrain으로 사용자를 변경해도
logname은 rsyoung임
서버에 접속해있는 사용자들의 계정만을 확인하는 명령.
참조하는 파일
/var/run/utmp
/var/log/wtmp
aging 정보 변경하기. aging 정보는 /etc/passwd 파일에 저장됨
. 시작하는 파일 리스트 (not hidden file only)
., .. 제외
파일종류 표시
regular file: none
execution file: *
directory: /
symbolic link: @
FIFO file: |
socket file: =
UID/ GID 표시
file명만 리스트
recursively 디렉토리까지 파일 크기별로 (K,M,G) 단위 표시
행번호를 붙혀서 출력, 빈행은 번호를 붙히지 않음
빈행도 번호를 부여함
원본파일의 소유자, 그룹소유자, 권한, 시간정보등을 보존하면서 복사하기
이동하려는 파일이 더 최근것일경우만 이동시킴
test? 파일에 대해서 test로 시작하는 prefix를 test0로 변경
test1 --> test01
*.htm 파일에 대해서 .htm --> .html로 변경
- b : 한페이지씩 앞으로 이동
- = : 현재 위치의 행번호 표시하기
- /문자열 : 지정한 문자열을 검색하기
- n : /문자열로 검색한 문자열을 차례대로 계속해서 찾기
- !쉘명령어: more 명령어 상태에서 쉘명어를 실행하기
- v : more 명령어로 열려있는 파일의 현재위치에서 vi를 실행하기
head -c 200 website
- space bar or f : 현재페이지에서 한페이지 뒤로 이동
- b : 현재페이지에서 한페이지 앞으로 이동
- Enter : 한행씩 차례대로 뒤로 이동
- 숫자 + n: 원하는페이지 만큼 뒤로 이동 (이후부턴 n만 클릭)
- q : 종료
- $ tail -f /var/log/messages
- $ tail -f /var/log/secure
- $ tail -f /va/log/maillog
- $ rev <file name>
- $ cat <file name> | expand -t <# of space>
- Tab이 # of space만큼 공백으로 변경됨
- tourch -r <original file> <target file>
- <target file>이 <original file>과 동일한 시간으로 변경됨
- $ wc -L <file name>
- $ ls -Rl /etc | grep "^d" | wc -l
- $ sort -k 2 textfile
- $ ls - l /var/log | sort -k 5
- $ ls -l /var/log | sort -rk 5
- $ cat trtest | tr '[a-z]' '[A-Z]'
- $ cat trtest | tre -d <삭제할 문자>
----------------------------------------------------------------------------------------------------------------------
ID : password: UID : GID : Description : Home Directory : Shell
----------------------------------------------------------------------------------------------------------------------
rsyoung: x : 500 : 500 : my username : /home/rsyoung : /bin/bash
(1) (2) (3) (4) (5) (6) (7)
- $ cut -d : -f 1, 2, 3 /etc/passwd
- $ cut -b1 /etc/passwd (첫바이트)
- $ cut -b1,2,3 /etc/passwd (1, 2, 3 바이트)
- $ cut -b-10 /etc/passwd (처음부터 10 바이트)
- $ cut -b10- /etc/passwd (10부터 마지막바이트)
- /usr/share/file/magic
- /usr/share/file/magic.mgc
- 위 두 파일을 참조하여 파일 종류를 표시해 줌.
- $ type test
- $ cat group | column -x
- $ cat group | column -t -s :
- $ dd if=<input file> of=<output file>
- $ diff --brief <file 1> <file 2>
- $ diff3 <file1> <file 2> <file 3>
- Globally find Regular-Expression and Print의 약자
- egrep = grep -E
- fgrep = grep -F
- 대소문자 구분없이 검색 : -i
- $ ls -l /etc | grep "^d"
- $ ls -l /etc | grep "^-"
- $ ls -l | grep "^-" | awk '{print "vi "$8}'
- 1977년 Bell 연구소의 Alfred v. Aho' Peter j. Wenberger, Brian W. Kernighan이 만듬
- $ ls -l /home | grep "^d" | awk '{print "tar cvfpz " "/backup/"$8".tar.gz" "/home/"$8}'
- Shell 파일 생성후 실행함
- $ cat spacefile | unexpand
- Symbolic Link: 원본파일을 가르키도록 링크만 시켜둔 것 (다른 파일시스템에서 적용됨)
- Hard Link: 다른 이름으로 존재하는 동일한 파일 (다른 파일시스템에서 적용안됨)
- /etc/alternatives 디렉토리와 /var/lib/alternatives 디렉토리에는 많은 링크파일들의 설정이 정의되어 있으며 시스템 설치시에 기본적으로 정의되어 있는 링크파일들의 설정값
- $ find / -empty -exec ls -l {} \;
- {}는 검색된 파일이 하나씩 치환됨을 의미
- $ find /home/rsyoung -atime -100 -exec ls -l {} \;
- $ whatis find
- $ whereis -b ifconfig
- $ df -a
- $ df -T
- $ du -s /etc
- $ hdparm /dev/hdc1
- $ hdparm -t /dev/sda
- $ hdparm -tT /dev/sda
- $ hdparm -Y /dev/hdc
- $ hdparm -y /dev/hdc
- $ badblocks -v /dev/sda1
- $ df
- $ fdisk -l /sda7 (root 명령으로 확인)
- $ fdisk -l (root 명령으로 확인)
- 리눅스의 모든 파티션들은 msdos 레이블만을 사용함
- 리눅스의 부트로더인 LILO와 GRUB은 msdos 디스크 레이블만을 인식
- 2TB 이상되는 디스크는 gpt라는 레이블을 사용해야함
- gpt 레이블은 LILO와 GRUB에서 인식되지 못하므로 시스템디스크 같은 부팅디스크는 gpt 레이블을 사용해서는 안됨.
- [파일시스템장치명] [마운트포인트] [파일시스템종류] [옵션] [dump관련설정] [파일점검옵션]
- [옵션의 종류]
+ defaults: rw, nouser, auto, exec, suid 속성을 모두가지는 속성
+ auto: 부팅시 자동마운트
+ exec: 실행파일이 실행되는 것을 허용하는 파일 시스템
+ suid: SetUID와 SetGID의 사용을 허용하는 파일 시스템
+ ro: 읽기전용
+ rw: 읽고 쓰기 파일시스템
+ user: 일반 계정사용자들도 마운트 할수 있는 파일 시스템
+ nouser: 일반 사용자들은 마운트 할 수 없는 파일 시스템 (root만 마운트)
+ noauto: 부팅시 자동마운트되지 않게 함
+ noexec: 실행파일을 실행되지 못하게 하는 파일시스템
+ nosuid: SetUID와 SetGID의 사용을 허용하지 않는 파일 시스템
+ usrquota: 개별 사용자의 쿼타 설정이 가능한 파일 시스템
+ grpquota: 그룹별 쿼타설정이 가능한 파일 시스템
- [dump관련 설정]
+ 1: 데이터백업등을 위해 dump가 가능한 파일시스템
+ 0: dump 명령으로 덤프되지 않은 파일시스템
- [파일점검 옵션]
+ 0: 부팅시 실행되는 fsck가 실행되지않게 설정
+ 1: 루트파일 시스템
+ 2: 루트파일 시스템 이외의 파일 시스템
- $ mke2fs -t ext4 -c /dev/sdb1
- $ mke2fs -t ext4 -m 20 /dev/sdb1
- 전체 파일시스템의 20%를 예비블럭으로 생성
- $ e2fsck /dev/hdc2
- /dev/hdc2가 unmount된 상태에서 수행해야 함
- $ dumpe2fs /dev/sda3 | grep superblock (Superblock 위치확인)
- $ e2fsck -b 98304 -f -y /dev/hdc2
- $ e2fsck -b 98304 -j ext3 -y /dev/hdc2 (ext3 filesystem의 경우)
- $ e2fsck -j ext3 -cv /dev/sda3
- e2fsck 옵션에서 badblocks를 실행하여 배드블럭을 찾은 후에 디스크의 배드블럭 아이노드에 추가하여 마크함으로써 배드블럭을 사용하지 못하도록 하는 방법
- $ e2fsck -b 98304 -p /dev/hdc2
- 옵션 -p가 없으며 질문에 답을 해야함..해넘어갈 수 있음 ^^;
- $ dumpe2fs /dev/sda3
- $ dumpe2fs -h /dev/sda3
- $ tune2fs -l /dev/sdb1
- $ debugfs
- q: 종료
- help: 도움말
- params: 실행옵션에 대한 파라미터 보기
- $ debugfs -w /dev/sd3
- lsdel
- lr
- $ renice -15 -p 2010
- $ renice +10 -p 3999
- $ pstree -a
- $ pstree -h
- $ pstree -p
- $ pstree -l
- $ pstree -n
- $ jobs
- $bg %1
- Ctrl + Z로 foregroud process 를 Stop 시킬 수 있으며, jobs로 확인가능
- $ fg %1
- $ kill -l
- $chkconfig --list
- $ fuser -k /usr/sbin/httpd
- $ fuser -v /usr/sbin/httpd
- $ jobs -l
- $ jobs -p
- $ pidof httpd
- $ mount -v
- $ cat /etc/mtab
- $ free
- $ free -s 3
- $ uptime
top - 15:09:38 up 4:56, 3 users, load average: 0.07, 0.08, 0.06
[현재시간] [up time] [사용자] [1분, 5분, 15분 각각의 평균부하율]
Tasks: 188 total, 1 running, 187 sleeping, 0 stopped, 0 zombie
[전체 프로세스수] [running] [sleeping] [stopped] [zombie]
Cpu(s): 11.7%us, 6.3%sy, 0.0%ni, 82.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
[사용자] [시스템] [nice 정책] [idel] [I/O waiting] [IRQ] [soft IRQ] [Steal값]
Mem: 6057416k total, 1978864k used, 4078552k free, 358080k buffers
[Total] [Used] [Free] [버퍼링된 메모리양]
Swap: 12000516k total, 0k used, 12000516k free, 770520k cached
[Total] [Swap된양] [Free] [캐싱메모리양]
- $ top
- SHIFT + M
- $ top
- SHFIT + T
- $ top
- i
- $ top
- k
- $ top
- r
- $ top
- u
- $ lastlog
- $ alias ssh123='ssh -l rsyoung abc.def.ghi.jkl'
- $ cat /proc/apm
- APM (Advanced Power Management)
- $ fc -l
- $ fc -l 250 260 (범위지정)
- $ fc -ln 250 260 (번호 생략)
- $ fc -e vi
- $ script
- exit
- $ script <filename>
- exit
- $ tmpwatch --mtime 10 /home/rsyoung
- sych 작업
- 종료메시지 전달 to 사용자
- 새로운 사용자 로그인 금지
- 지정된 시간내에 종료안된 프로세스 강제 종료
- 지정된 시간내 로그아웃 안된 사용자 강제 로그아웃
- 메모리에 남아있는 데이터를 디스크에 저장
- 시스템 종료에 관련된 정보를 시스템 로그파일에 기록 (wtmp, utmp)
- 마운트되어 있는 디바이스들을 마운트 해제
- 시스템 종료
- PID 1번
- swapper (PID 0번, 커널의 일부)가 init 프로세스를 생성함
- $ hwclock -r
- $ date
- $ hwclock -w
- permission
- attribution
- SetUID, SetGID, StickyBit
- $ chmod 4<xxx> testfile
- SetUID가 설정된 파일을 실행하였을 경우 실행되는 동안 실생시킨 사용자의 권한이 아닌 파일 소유자권한으로 실행한다.
- $ chmod 1<xxx> testdir
- testdir 디렉토리내에서 특정 파일을 생성하면 생성한 사용자의 소유로 파일이 생성됨
- SetUID는 설정하였지만 일반퍼미션에 소유자퍼미션자리에 실행권한이 설정되지않았기 대문에 S로 마킹됨. Sticky Bit의 T도 동일한 의미임.
- chattr 명령어는 파일과 디렉토리의 속성을 지정하는 명령어
- $ lsattr rc.local
- $ chattr +i rc.local
- $ lsattr rc.local
- i : immutable
- a: secure deletion - 파일삭제시 해당 블럭이 모두 0으로 셋팅
- S: synchronous updates
- $ rpm -qf /bin/ps
- $ rpm -ql httpd
- $ rpm -qs htdtp-2.2.10-2.i386
- $ rpm -qc httpd
- $ rpm -qd quota
- $ rpm -qRp quota-3.16-5.fc10.i386.rpm
- $ rpm -V httpd-2.2.10-2.i386
- $ yum list all (이미 설치되어있는 목록)
- $ yum list available (설치 가능한 모든 패키지)
- $ yum list updates (업데이트 가능한 패키지 리스트)
- $ yum list installed <패키지 명> (패키지의 인스톨여부 확인)
- $ route
- $ netstat -rn
- $ tcpdump -i eth0 -w TCPDUMP
- $ tcpdump -r TCPDUMP
- ICMP (Internet Control Message Protocol) 프로토콜 사용
- $ traceroute www.daum.net
- nmap은 사용자가 지정한 네트워크와 호스트 (서버)들을 대상으로 보안측면에서 취약한 점이 있는가를 스캐닝할 수 있고 포트기반을 스캐닝할 수 있다.
- 옵션
+ -sS: TCP SYN 스캔
+ -sT: TCP 연결 스캔
+ -sF -sX -sN: Stealth FIN, Xmas Tree, 또는 Null 스캔모드
+ -sP: Ping 스캐닝
+ -sU: UDP 스캐닝
+ -sO: IP 프로토콜 스캔
+ -sI <zombie host[:probeport]: Idlescan
+ -sA: ACK 스캔
+ -sW: Window 스캔
+ -sR: RPC 스캔
+ -sL: List 스캔
- $ nmap -sT -O -v localhost
- $ lsof | grep LISTEN
- $ lsof /lib/libdb-4.0.so
- $ lsof | grep <port num>
- $ lsof -i TCP | grep LISTEN
- $ su - root
- sudo 명령어는 /etc/sudoers 파일에 설정되어 있는 허가된 사용자들에 한하여 허용
- 일반사용자에게 root 사용자만 사용할 수 있는 명령어들의 사용을 허용하고자 할때 사용
- 파일시스템의 루트에 위치해야함
- aquota.user, aquota.group
- /usr/sbin/logrotate
- /etc/cron.daily/logrotate
- /etc/logrotate.conf
- /etc/logrotate.d
- $ /usr/sbin/logwatch
- $ cat /etc/fstab
- $ swapon -a (swapoff -a , 스왑해제)
- 시작:
+ $ /etc/rc.d/init.d/crond start
+ $ service crond start
- /etc/crontab
+ 01 * * * * root run-parts /etc/cron.hourly : 매시 1분마다 실행
+ 02 04 * * * root run-parts /etc/cron.daily : 매일 4시 02분마다 실행
+ 22 4 * * 0 root run-parts /etc/cron.weekly: 매주 일요일 4시 22분마다 실행
+ 42 4 1 * * root run-parts /etc/cron.monthly: 매월 1일 4시 42분 마다 실행
- $ cat /etc/cron.allow
- $ cat /var/spool/cron/<userid>
- $ crontab -u <userid> -e
- $ crontab -l
- $ contab -u <userid> -l
- $ at -f /root/backup.sh 22:05 (22시 05분에 예약)
- $ atq (큐확인)
- $ atrm <id> (큐에서 id 삭제)
- $ at -f /root/backup.sh 1pm+1days (1일 후 오후 1시)
- $ at -f /root/backup.sh 10182015 (2015년 10월 18일로 설정)
- $ ls -l /var/spool/at (예약된 작업이 파일로 저장됨)
- $ atrun (큐에 있는 예약된 작업 바로 실행)
- $ batch -f /root/backup.sh 20:00 (at과 동일)
- $ cat /etc/sysctl.conf
- $ sysctl -a
- $ sysctl -a | grep kernel.sysrq
- $ sysctl -w kernel.syssrq=1
- $ cat /proc/sys/kernel/sysrq
- $ modprobe -r birdge
- $ modprobe -c
- $ modprobe -d | grep <모듈명>
- $ modprobe -l
- $ modprobe -l | grep <모듈명>
- $ lsmod
- $ cat /proc/modules
- $ depmod -a
- 리눅스 부팅과정에서 "Finding modules dependance..." 에러가 발생할 경우 싱글모드로 들어가서 depmod -a 실행
-------------------------------------------------------------------------
원문 : http://linuxphil.blogspot.com/2011/06/300.html