Linux Essential κ³Όμ μ 리
μ 01μ₯. Linux Command μ 02μ₯. λλ ν 리 μΆκ° κ΄λ¦¬
hostnamectl set-hostname (μ΄λ¦)
ipμ€μ μ°½ λΆλ¬μ€κΈ° nm-connection-editor
ip μ€μ μ°½μ μ΄λλ· λͺ©λ‘μμ λλ°μ΄μ€λ₯Ό μλ λ§₯μ£Όμλ‘ μ νν΄μΌνλ€. μλνλ©΄ μ΄κ²μ κΈ°μ‘΄ mainμ μ€λ μ· νκ²μ΄κΈ° λλ¬Έμ λ€λ₯Έ λ§₯μ£Όμλ₯Ό μ¬μ©ν΄μΌ μ€λ₯κ° μλ€.
μ μ© ν, nmcli connection up ens 33μΌλ‘ μ΅μ’ μ μ©νλ€.
-λͺ λ Ήμ΄ λ©λ΄μΌλ‘ νμ man -k calendar = μΊλ¦°λμ ν€μλ λ©λ΄μΌ man -kλ λ€μ λͺ λ Ήμ΄κ° λμ§ κΈ°μ΅μ΄ μλ λ μ°λ©΄ μ’μ
man -f passwd = ν¨μ€μλμ κ΄λ ¨λ λ§€λ΄μΌ νμ λ²νΈλ λ©λ΄μΌ μΈμ λ²νΈ. κ° μΈμ λ§λ€ μ λ³΄κ° λ€λ¦. μ± λ²νΈ λΌκ³ μκ°νλ©΄ νΈνλ€
β Linux Manual Section --------------------------------------------------------- Section 1 : μ¬μ©μ λͺ λ Ή(μ€νκ°λ₯ν λͺ λ Ή λ° μ νλ‘κ·Έλ¨) Section 2 : μμ€ν νΈμΆ(μ¬μ©μ 곡κ°μμ νΈμΆλ 컀λ 루ν΄) Section 3 : λΌμ΄λΈλ¬λ¦¬ κΈ°λ₯(νλ‘κ·Έλ¨ λΌμ΄λΈλ¬λ¦¬μμ μ 곡) Section 4 : νΉμ νμΌ(μ: μ₯μΉ νμΌ) Section 5 : νμΌ νμ(λ§μ κ΅¬μ± νμΌ λ° κ΅¬μ‘°μ κ²½μ°) Section 6 : κ²μ(μ€λ½ νλ‘κ·Έλ¨μ© μΉμ ) Section 7 : λ²λ‘, νμ€ λ° κΈ°ν(νλ‘ν μ½, νμΌμμ€ν ) Section 8 : μμ€ν κ΄λ¦¬ λ° κΆν λͺ λ Ή(μ μ§ λ³΄μ μμ ) Section 9 : 리λ μ€ μ»€λ API(λ΄λΆ 컀λ νΈμΆ)
ctrl+shift+t = νννλ‘ μλ‘ λμ°κΈ° ctrl+shift+n = μλμ° ννλ‘ μμ°½ λμ°κΈ°
μνΈλ³κ²½: passwd λ³κ²½ν μ¬μ©μ μ΄λ¦ μ격 μ μ: ssh μ¬μ©μμ΄λ¦@localhost
μμ€ν κΈ°λ³Έ μ 보 νμΈ uname date cal
cat λͺ λ Ήμ΄ = cat etc/ ~~ μμΌλ‘ κ²½λ‘λ₯Ό κ²μνμ¬ ν΄λΉκ²½λ‘μ λ¬Έμλ₯Ό μλ‘ νμΈ
uname Linux server1.example.com 4.18.0-240.el8.x86_64 #1 SMP Fri Sep 25 19:48:47 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
리λ μ€ λ λν·μ λν μ 보λ€μ λͺ¨μλλ μ¬μ΄νΈ Red Hat Enterprise Linux - Red Hat Customer Portal γ΄ centosμ μ 보λ₯Ό νμΈν λ, μ¬μ©νλ€.
μμ°½ λμ°κΈ° crtl+shift+n
μ¬μ©μ λλ ν 리 μ΄λ
μ΄μ λλ ν 리 μ΄λ= cd - μμ μλ λλ ν λ¦¬λ‘ μ΄λ= cd ../μλλ ν 리 μμ λλ ν 리 μ΄λ= cd .. λλ ν 리 μ΄λ cd /μ΄λμ μνλ νμ λλ ν 리 cd = νλλ ν 리 μ΄λ
λλ ν 리 κ΄λ¦¬ λͺ λ Ήμ΄ γ΄ λ¦¬λ μ€μμ κ΄λ¦¬λΌλ λ§μ΄ λΆλλ€λκ²μ λ³κ²½ μμ μΆκ°κ° κ°λ₯νλ λ»μ λ§νλ€
ls λͺ λ Ήμ΄ - λͺ©λ‘μ 보μ¬μ£Όλ λͺ λ Ήμ΄ ls -l = ν΄λΉ λλ ν 리 μμ μλ ν΄λλ€μ κΆνκ³Ό μ 보λ₯Ό νμν΄μ€λ€ ld -ld =νμ¬ λλ ν 리μ κΆνκ³Ό μ΅μ’ μ¬μ©λ μκ°μ ννν΄μ€λ€. γ΄κΆνμ λν μ€λͺ rwx μ½κ³ , μ°κ³ ,μ€ννλ κΆνμ λ»ν¨. λͺ λ Ήμ΄λ‘ ννλ λλ rwx r__ w μμΌλ‘ μ§μνμ§ μλκ²λ _λ‘ ννν΄μ€λ€. γ΄ μ¬κΈ°μ ls μ -lμ λΆμ¬μ£Όλ©΄ λ λ§μ μ 보λ₯Ό ννν΄μ€λ€. ld - lR = νμ¬ λλ ν 리 μμ λͺ¨λ νμΌμ κΆνκ³Ό μ 보λ₯Ό νμ ν¨ ls -al = .μΌλ‘ μμνλ μ¨κ²¨μ§ λλ ν 리λ νννμ¬ νκΈ°ν΄μ€λ€. ls -i = κ° νμΌμ μΈλ±μ€ λλ²λ₯Ό μΆλ ₯ν΄μ£Όλ μν μ μννλ€. ls - li = λλ ν 리μ μλ³λ²νΈλ₯Ό νμν΄μ€λ€. ls -lh = λλ ν 리μ μ©λ λ¨μλ₯Ό νμ° ν λ , μλμΌλ‘ λ¨μλ₯Ό νΈνκ² λ³΄κΈ° μν΄ λ³΄μ ν΄μ€
[μ€λ¬΄μ] μ€λ¬΄μμ λ§μ΄ μ¬μ©νλ cmd cd /Log_dir ls- -altr
[μ°Έκ³ ] alias (μ μΈ) alias ls = βls -l | grep β^-ββ (νμΈ) alias (ν΄μ ) # unalias ls
νμΌ λλ λλ ν λ¦¬λ§ μΆλ ₯ μΌλ°μ μΌλ‘ 리λ μ€μμ λͺ λ Ήμ΄λ₯Ό λ§λ€μ΄μ μ¬μ©νκΈ°λ νλ€.
mkdir λͺ λ Ήμ΄ mkdir -p dir3/dir2/dir1 γ΄ μλ -pλ₯Ό μΆκ°ν΄μ€λ€λ©΄ μμμμ νμ λλ ν 리λ₯Ό νλ²μ μμ±
rmdir λͺ λ Ήμ΄ ν΄λκ° λΉμμ Έ μλ κ²½μ°μλ μ§μΈ μ μλ λͺ λ Ήμ΄ μ΄λ€. μ μ¬μ© x rm -rf dir1 = -rfλ μ§μΈλ νμΌλ§λ€ νλ²μ© μ¬νμΈμ λ°λλ° κ·Έκ²μ λ°©μ§νκ³ λλ ν 리λ₯Ό μμ ν΄μ£Όλ λͺ λ Ήμ΄μ΄λ€.
νμΌ/λλ ν 리 μμ λ₯Ό μ£Όμ ν΄μΌν¨!!!!
touch λͺ λ Ήμ΄ touch λͺ λ Ήμ΄λ ν΄λ λ΄μ bin νμΌμ μμ± touch file1 /* file1 μ΄λΌλ νμΌμ νλ μμ±νλ€. touch -t 08301300 file1 = file1μ μκ°μ 보λ₯Ό λ³κ²½νλ€.
cp λͺ λ Ήμ΄ =copy λͺ λ Ήμ΄ cp file1 file2 = file1 νμΌλ΄μ©μ file2λ‘ μμ± cp file1 dir1 = file1 νμΌλ΄μ©μ dir1 λλ ν 리μ file1μΌλ‘ μμ± cp -r dir1 dir2 = -rμ μΆκ°νμ¬ dir1μ λλ ν 리 μμ μλ νμΌκΉμ§ λκ°μ΄ 볡μ¬νμ¬ dir2λΌλ ν΄λλͺ μΌλ‘ 볡μ¬νμ¬ μμ± γ΄ μ΅μ : -r, -i, -f echo 'linux200' > file1
cp file1 dir1 = file1μ dir1μ file1μ΄λΌλ μ΄λ¦μΌλ‘ λκ°μ΄ νν linux200μ΄λΌλ λ΄μ©μ κ°μ§ file1μ μμ±
μ€λ¬΄μ - μ€μ νμΌμ λ°±μ νλ κ²½μ° cp -p httpd.conf httpd.conf.orig ` cp -a
μ€λ¬΄μ - λ‘κ·ΈνμΌ λΉμ°κΈ°
# cat /dev/null > file.log
# > file.log
μμΌλμΉ΄λ λ¬Έμ ls file* = file~λΌλ νμΌλ€μ λͺ¨λ κ²μ
mv λͺ λ Ήμ΄ mv file1 file3 = ν λλ ν 리 λ΄μ file1μ file3λ‘ μ΄λ¦μ λ³κ²½νλ€. mv fire* dir1 = file~ λΌκ³ μμνλκ²λ€μ λͺ¨λ dir1 λλ ν 리μ λ£λλ€. mv dir 1 dir2 =dir1μ dir2λΌκ³ νκ³ λ³΅μ¬ν΄μ λ£λλ€. μ΅μ : -i, -f
rm λͺ λ Ήμ΄ rm -rf = 묻μ§μκ³ λ°λ‘ μμ νλ λ°©λ², μ£Όλ‘ μ΄ λ°©λ²μ μ¬μ©νλ€. μ€λ¬΄μ: μ§μ΄ νμΌ λ³΅κ΅¬νκΈ°
rm f
cat cat -n file1 cat file1 file2 > file3 = νμΌ 3μ 1, 2μ λ΄μ©μ λͺ¨λ μ§μ΄λ£μ cat /etc/services | more = κΈ΄ μΆλ ₯λ¬Έμ νμ΄μ§ λ¨μλ‘ λ³΄κ² ν΄μ£Όλ μ½λ
more cmd cmd | more ps -ef | more cat /etc/serveices | more netstat -an | more systemctl list-unit-files
head cmd head /etc/passwd= κΈΈκ²λμ΄ head -5 /etc/passwd = 5μ€ κΉμ§λ§ μΆλ ₯
alias pps='ps -ef | head -1 ; ps -ef | grep $1'
tail cmd tail -f /val/log/massages top tail -f /val/log/massages | egrep -i '(warn|fail|error|crit|alert|emerg)'
ssh μ¬μ©μ μ΄λ¦ = μ격μ μ λͺ λ Ήμ΄ telnet μλΉμ€ κΈ°λνκΈ° yun install telnet telnet-server systemctl enable βnow telnet.socket γ΄ ν λ·μλ² μμ€ν μ μ€μΉνκ³ λ°λ‘ κΈ°λ βnow μ λΆμ¬μ£Όλ©΄ λΆν μ΄λ μ€ννΈ λλ€ ν΄μ€
systemctl start telnet.socket = μμνκ³ (--nowλ₯Ό μ¨μ£Όλ©΄ x) systemctl enable telnet.socket= λΆν μμλ κΈ°λ
wc cmd = μλμΉ΄μ΄νΈ wc -c λ¬Έμμ, -l = λΌμΈμ, -w = λ¨μ΄μ cat /etc/passwd | wc -l
μΆκ°= rpm = λ λν·μμλ§ μ°λ μννΈμ¨μ΄ κ΄λ¦¬μ (μ€μΉλκ±° 보μ¬μ€) ps -ef νλ‘μΈμ€ μ 보λ₯Ό νμ μΆκ°= df λͺ λ Ήμ΄= λμ€ν¬μ λ¨μκ³΅κ° μμ£Όλ‘ μ 보λ₯Ό μΆλ ₯ν΄μ€λ€ μ°Έκ³ = λ°μ΄ν° μμ§( data gathering) ps -ef | tail -n +2 | wc -l cat /etc/passwd | wd -l rpm -pq | wc -l cat /val/log/messges | grep βjan 19β | grep βstarted Telnet serverβ | wc-l = μλ²κ° λͺλͺ μ© μ¬μ©νκ³ μλμ§ νμ νλ μ©λ λΌμΈμΉ΄μ΄νΈλ‘ μ¬μ©μλ³ νμ€μΈκ±Έλ‘ νμ
su cmd = μ¬μ©μ μ ν == su μ¬μ©μ μ΄λ¦ su μ su - μ μ°¨μ΄μ : μ΄μ μ¬μ©μκ° μ¬μ©νκ³ μλ νκ²½λ³μκ° κ·Έλλ‘ μ€λκ° γ΄ μ€μμΉμ ν λλ, κΈ°λ³Έμ μΌλ‘ su - μ¬μ©μμ΄λ¦ μμΌλ‘ μ¬μ©νλκ²μ΄ μ’λ€.
sudo cmd(/etc/sudoers, /etc/sudoers.d/*) sudo su - μ¬μ©μ μ΄λ¦ sudo -l = λͺ©λ‘ νμΈ sudo -i = κ΄λ¦¬μ κ³μ μΌλ‘ μμμ μ sudo λͺ λ Ήμ΄λ€ = κΆνμ μμμ μΌλ‘ κ°μ Έμ κΆννμ λͺ λ Ήμ΄ μν
suμ sudoμ μ°¨μ΄μ : suλ μμ ν κ³μ μ λ³ννλκ²μ΄κ³ , sudoλ μμλ‘ κ°μ Έμ€λκ²μΌλ‘ 보μ μ, sudoλ₯Ό μ¬μ©νλκ²μ΄ 보μμ μ’λ€.
μΆκ° = usermod =μ¬μ©μμ λν μμ
id , groups λͺ λ Ήμ΄λ κΈ°μ΅λ§ ν΄λμ γ΄ λ€λ₯Έμ¬μ©μλ‘ μ ννκ² λλ©΄ νλ²μ© ν΄μ£Όμ. μ©μ΄ = pts/0 β κ°μμλ²/ 0λ²μ§Έ
last cmd ** = 보μμμΌλ‘ μ€μν cmd μ μκΈ°λ‘!! last -i last -f /val/log/wtmp.20230128 lastlog(/val/log/lastlog) = μ¬μ©μμ λ§μ§λ§ λ‘κ·ΈμΈ μκ°μ μλ €μ€ λ΄ μλ²μ μ‘΄μ¬νλ κ³μ μ€μμ 1λ λμ μ μνμ§ μμ κ³μ μ μ°Ύκ³ μΆλ€! μμΌλ‘ μ¬μ©μλ₯Ό ꡬλ³νμ¬ μ²λ¦¬ν λ κ²μ
lastb cmd = μ¬μ©μλ€μ λ§μ§λ§ λ‘κ·ΈμΈ νλ κΈ°λ‘ λͺ©λ‘μ 보μ¬μ€λ€. lastb (val/log/btmp)= λ‘κ·ΈμΈμ μ€ν¨ν κΈ°λ‘λ€μ μ μ₯
who cmd ** = μ¬μ©μκ° μ¬μ©ν λͺ λ Ήμ΄λ₯Ό 보μ¬μ€ who = νμ¬ μλ²μ μ μμ€μΈ λͺ¨λ μ¬μ©μ γ΄ (/val/run/utmp) = μ°Έμ‘° νμΌκ²½λ‘
w cmd = λ‘κ·ΈμΈ λ μ¬μ©μλ€μ΄ μ¬μ©νλ λͺ λ Ήμ΄λ₯Ό νμΈ while true ***** (λ°λ³΅ μ€νλ¬Έ) do cmd sleep 2 donecle μ°Έκ³ - watch cmd
νμΌ μ’ λ₯
λ§ν¬νμΌ νλλ§ν¬νμΌ = lnμμ νΉλ³ν λ§ν¬ μμ΄ μ€ν dd if=/dev/zero of=/home/file1 bs=1M count=500 β500λ©κ°μμ± lnμΌλ‘ λ§ν¬λ₯Ό κ±Έμ΄ μλ‘μ΄ νμΌ234λ₯Ό μμ± λ€λ₯Έκ±Έ μ§μλ μ©λμ κ·Έλλ‘ μ°¨μ§νλ€. μ¦, λ§ν¬λ₯Ό κ±Έμ΄λ νμΌ1μ μ§μλ λ§ν¬λ 234μ€ νλλΌλ μ΄μμλ€λ©΄ μ©λμ κ·Έλλ‘ μ°¨μ§νλ€.
μ¬λ³Όλ¦ λ§ν¬ νμΌ = μ¬λ³Όλ§ν¬κ° λ λ§μ΄ μ¬μ© μ©μ΄+ λ§μ΄κ·Έλ μ΄μ =νμΌ μ΄λ
-μ₯μΉ β μ₯μΉ λλΌμ΄λ² β-/βμ΄μ체μ μ΄μ체μ μμ μ₯μΉ λλΌμ΄λ²λ₯Ό ν΅ν΄ μ₯μΉμ μ κ·Όμ΄ κ°λ₯νλ€ μ₯μΉλ₯Ό μ μ΄νκΈ° μν΄ μ΄μ체μ λ΄μ /dev/μ₯μΉμ΄λ¦ μμΌλ‘ μ₯μΉμ λν μ 보μ μ΄λ¦μ μ μ₯νμ¬ μ΄ νμΌμ ν΅ν΄ μ₯μΉλ₯Ό μ μ΄,μ κ·Όνλ€. μ¦ μ΄μ체μ μμ μ₯μΉλ‘ λ°λ‘ μ κ·Όμ΄ κ°λ₯νκ²μ΄ μλλΌ κ΄λ¬Έμ μν μ μννλ μ₯μΉ λλΌμ΄λ²λ₯Ό μ€μΉνμ¬ μ κ·Όμ΄ κ°λ₯νλ€.
** μμ νμΌμ λ³Ό μ μλ λͺ λ Ήμ΄ : ll λ§ν¬ μ΄λ¦μ΄λ κ·Έλ₯ ll μ¬μ©!!! tty: κ°μν°λ―ΈνΈκ³Ό λ²νΈλ₯Ό λ³Ό μ μλ€. γ΄ ll /dev/sda
***----ls -l |grep '^b' ==bλ‘ μμνλκ²λ§ κ²μνκΈ°!!!
β----------- rw-r--r-- 1 root root 1945 6μ 11 14:13 file1 β-------------- File Type : λ³κ²½ λΆκ°λ₯ Permission Mode: chmod Link Count : ln Owner : chown Group : chgrp File Size : Mtime : touch -t File Name : mv
chown cmd =νμΌμ κΆν,μμ κΆμ λ°κΎΈκΈ° μν΄ μ¬μ©νλ€. chown user01 file1
ls -l file1= νμΌ1μ κΆνμ 보μ μμ± λ νμΈ # chown -R fedora:fedora /home/fedora
chgrp cmd= νμΌμ μ¬μ©μ κ·Έλ£Ήμ λ°κΎΌλ€. (c hownμΌλ‘λ λ³κ²½κ°λ₯)
-chmod cmd = νμΌμ μ κ·Ό κΆνλ³κ²½(νΌλ―Έμ λ³κ²½) γ΄ νλμ λ¬Έμκ° λͺ λ Ήμ΄λ€μ λνν΄μ νννλκ²
μ¬λ³Όλ¦λͺ¨λ == chmod u(μ¬μ©μμ μ½μλ€ νμΈ) + r (κΆν)file1(νμΌμ΄λ¦) μ₯νλͺ¨λ(8μ§μλͺ¨λ) ***** (μ£Όλ‘ μ₯νλͺ¨λ μ¬μ©!) chmod 744(u_g_o) file1 - μ μ κ·Έλ£Ή κΈ°ν (4_2_1) γ΄ rwx (- - -) (llλ‘ κΆννμΈ)
***** λλ ν 리μ rwxμ λν΄ r= (ls -l) λͺ©λ‘μ λ³Ό μ μλ κΆν w= (λλ ν 리 μμ ν΄λ,νμΌμ λν μμ κΆν , νμΌμ΄ μν μλ¨ν΄λμ wκΆνμ΄ μμΌλ©΄ o x= (cd) =λλ ν 리μ λ€μ΄κ° μ μλκ°? β λλ ν 리λ rμ΄λ w κΆνμ μν΄μ λ°λμ xκΆνμ΄ νμνλ€
- λͺ λ Ήμ΄ μΈμ°κΈ°! : touch = νμΌ μμ± mkdir = ν΄λ μμ± chmod κΆν λΆμ¬
umask cmd =νμΌ λλ ν 리 μμ±μ, κΈ°λ³Έ μ μ© κΆνμΈ λν΄νΈ νΌλ―Έμ μ μ‘°μ νλ λͺ λ Ήμ΄ γ΄ μ΄κ±Έ μ€μ ν΄μ£Όλ©΄ μ²μ λλ ν λ¦¬κ° μμ±λλ©΄ μ€μ νλλ‘ μμ±λλ€ umask 022 == κΈ°λ³Έ κΆν = 755 umaskκ° ν΄μλ‘ λ³΄μμ΄ μ’μμ§ ** umaskλ μ€λ¬΄μμ μ λ§νλ©΄ λ°κΎΈμ§λ§λΌ κ²½λ‘ = /etc/bashrc(κ΄λ¦¬μ) $HOME/bashrc(μ¬μ©μ)
mac= μ μλ €μ§ μλΉμ€λ₯Ό μν΄ ν λΉνλ ν¬νΈ λ²νΈ ex)ssh(22).telnet(23),smtp(25) λ± ip=νΈμ€νΈλ₯Ό ꡬλΆνλ λ²νΈ ν¬νΈλ²νΈ=μλΉμ€λ₯Ό ꡬλΆνλ λ²νΈ μ§μ ipλΌκ³ νλ€λ©΄ ν¬νΈλ²νΈλ₯Ό κ°μ‘± ꡬμ±μμΌλ‘ λ³΄κ³ 1νΈμ§μ μλΉ ,λλ μ΄λ°μμΌλ‘ ꡬλΆκ°λ₯
μμ±, μμ = vi νμΌ μ΄λ¦ i,o,O,h = μ λ ₯λͺ¨λ esc= escλͺ¨λ μ¬μ© μμ = x,dd μ μ₯/μ’ λ£: μ¬ννΈ+: -μ½λμ λ ₯λͺ¨λ- wq! μ λ ₯μ μ’ λ£ γ΄ μ€μ μ λ°λΌμ λ°©ν₯ν€λ λ리νΈν€ κ° λ¨Ήμ§ μμ μ μκΈ° λλ¬Έμ μμ!
: / κ²μν λ¨μ΄ , : κ²μν μ€ μ«μ μ€λλ² νμ: set number λ¨μ΄ λ¨μ μ΄λ: w,b 첫λΌμΈ,λλΌμΈ μ΄λ: 0^, $ (escλͺ¨λ) νμ΄μ§λ¨μ μ΄λ: 컨+f, 컨+B (νμ΄μ§)G, κ·Έλ₯ Gλ λ§νμ΄μ§(escλͺ¨λ) vi νΈμ§κΈ° λͺ¨λ μ’ λ₯: λͺ λ Ήλͺ¨λ,μ λ ₯λͺ¨λ,μ΅νμλͺ¨λ
vi νΈμ§κΈ°μ μμ κΈ°λ₯ νμ΄μ§λ₯Ό κ²μνκ³ μ§μ°λ©΄ κ²μνμ€μ μλλ§ μ§μμ§λ€ dd λλ₯΄λ©΄ κ·Έ μ€ μμ , 3dd λλ₯΄λ©΄ 3μ€ μ§μμ§ λΌμ€νΈλΌμΈ λͺ¨λμμ 11,15d λ‘ μ λ ₯νλ©΄ 11~15μ€ μμ΄μ§ escλͺ¨λμμ d1Gλλ₯΄λ©΄ νμ¬μ»€μλΆν° μ λ ₯μ€κΉμ§ μμ vi νΈμ§κΈ°μ μ λ ₯ κΈ°λ₯ i: νμ¬μ»€μμμ μ λ ₯ - I:νμ¬μ»€μ μλ ν μ²μμ μ λ ₯ a:νμ¬μ»€μ μ΄νμ μ λ ₯ -A: νμ¬μ»€μκ° μλν λ§μ§λ§λΆν° μμ o:νμ¬μ»€μ μλνλΆν° -O: νμ¬μ»€μμ μ ν λΆν° μμ
κ·Έ λ°μ μ μ©ν κΈ°λ₯λ€
λ€λ‘κ°κΈ° : u(escmod) -μμΌλ‘κ°κΈ°: ctrl+r
νμ¬μ»€μ μ€ λ³΅μ¬: yy -λΆμ¬λ£κΈ°:p (Pλ νμ¬μ»€μ μλ‘ λΆ)
yy: 컀μλ‘λΆν° 3μ€ λ³΅μ¬ -1,3 co 5: 13μ€ λ³΅μ¬ 18μ€ μλλ‘ λΆ
1,3 m 5: 13μ€μ 5μ€ μλλ‘ μ΄λ
5,10s/^(첫μ€λΆν°λΌλλ»)/#/ : 5~10μ€ μ£Όμμ²λ¦¬
5,10s/^/ /:μμ 4μ€ λμ΄μ°κΈ° μΆκ° βZZ: μ μ₯νκ³ λκ°κΈ°(escmod)
Vi νΈμ§κΈ° νκ²½μ€μ $HOME/ .vimrc(run commend) set nu set ai set ts=4 λ²νΈλ³΄μ΄κΈ°:set number
[μ°Έκ³ ] vim νμ₯μ: μμ νμΌ
mail cmd: λ©μΌκ΄λ ¨ cmd mail λ°λμ¬λ ctrl+d λλ₯΄λ©΄ 보λ mail -u μ μ μ΄λ¦ = κ΄λ¦¬μ κ³μ μμ λ€λ₯Έ μ¬μ©μμ λ©μΌ νμκ°λ₯ μΈλΆλ©μΌλ³΄λ΄κΈ° γ΄ mail -s βμ λͺ©β μ΄λ©μΌμ£Όμ < /etc/hosts
wall < /etc/MESS/work.txt: txt νμΌ μμ κΈμ μ μ μ¬μ©μμκ² κ³΅μ§ν¨
[μ°Έκ³ ] touch /etc/nologin(μλ‘μ΄ μ¬μ©μ μ μ κΈμ§ν¨) wall < /etc/MESS/work.txt β¦. fuser -cu /home fuser -ck /home -μμ λ€ μ§ν- rm -f /etc/nologin(μ¬μ©μλ€μ λ‘κ·ΈμΈμ λ€μ νμ©
talk
wall: μλ² λ΄μ λ‘κ·ΈμΈ λμ΄ μλ μ¬μ©μμκ² λμμ λ©μμ§λ₯Ό μ μ‘ wall βλ©μμ§β
cmp/diff cmd: νμΌμ λΉκ΅ν λ μ¬μ©νλ€. λκ°νμΌμ΄ λ€λ₯΄λ©΄ λ€λ₯Έ λΆλΆμ μ€κ³Ό νλ¦° λΆλΆμ μ©λμ μλ €μ€λ€.
cmp λΉκ΅νμΌ1 λΉκ΅νμΌ2 : νλ¦° μ€μ΄λ μ©λλ§ μΆλ ₯ diff λΉκ΅νμΌ1 λΉκ΅νμΌ2 : νλ¦° λΆλΆκΉμ§ μΆλ ₯ν΄μ€ diff -c λΉκ΅νμΌ1 λΉκ΅νμΌ2 : νμΌ1,2 μ 체λ₯Ό 보μ¬μ€ λΉκ΅ diff -r λλ 1 λλ 2= λλ ν 리 λ΄μ λ€λ₯Έμ΄λ¦μ νμΌμ μλ €μ€ diff httpd.conf httpd.conf.OLD λ₯Ό μ λ ₯νλ€λ©΄ μμ λ μ νμ
[μ€λ¬΄ μ] μ€μ νμΌ λΉκ΅ diff httpd.conf httpd.conf.OLD [μ€λ¬΄ μ] λλ ν 리 λ§μ΄κ·Έλ μ΄μ μ’ λ£ ν λΉκ΅ diff -r /wal1 /wal2
sort cmd : μ λ ¬ λͺ λ Ήμ΄ -sort νμΌμ΄λ¦ -r λ΄λ¦Όμ°¨μ -sort νμΌμ΄λ¦ -k 3(3λ²μ§Έ νλλΆν°) -n(μ«μμ λ ¬): νλ μ§μ μ λ ¬ γ΄ 3λ²μ§Έ νλλΆν° (uid ꡬλΆμΌλ‘) -sortλ₯Ό νμ©ν μ λ ¬λ°©μ γ΄ ps -ef | head | sort -k 3(μ«μμ λ Ή), -μνλ μλ¬Έ γ΄ sort -k 3 = 3λ²μ§Έ νλλ₯Ό μ€μ¬μΌλ‘ νμΌμ μ λ ¬( -n=μ«μ, -nr λ°λ) [μ€λ¬΄μ] μ©λ νμΈνκΈ°! γ΄ du -sk * | sort -nr = μ©λμ΄ ν° μμΌλ‘ 보기
file cmd [cmd] file /etc/passwd νμΌμ νμ₯μ,μ’ λ₯λ₯Ό μλ €μ€ γ΄# file /etc/hosts /etc = μ¬λ¬κ° νμΌ μ§μ [μ 무μμμ κ²½μ°] γ΄ νμ₯μκ° λ³κ²½λλ μμ λν΄μ λ€λ₯Έμ’ λ₯μ μ΄μ체μ κ°μ νμΌ μ μ‘μ΄ λ§μκ²½μ°, νμΌμ νμ₯μκ° λ³νλ κ²½μ°κ° μ’ μ’ μλ€. =리λ μ€.txt ->μλμ°.txt = μ΄λ κ² λ°λ³΅νλ€λ³΄λ©΄ νμ₯μκ° μ¬λΌμ§κΈ°λν¨
[κΉ¨μμ½λ[ = μ΄λ¦ λ³κ²½: mv λ³κ²½ν νμΌ λ³κ²½ν μ΄λ¦ -νμΌ μμΆνκΈ°: zip file.zip μμΆν νμΌλ€ μ΄λ¦ -νμΌ μμΆν΄μ : unzip μμΆνμΌ.zip
-l (-l : list files) ν¨ν΄μ΄ μλ νμΌμ΄λ¦λ§μ μΆλ ₯νλ€. -n (-n : number line) ν¨ν΄μ ν¬ν¨νλ μ€μ μΆλ ₯ν λ μ€λ²νΈμ ν¨κ» μΆλ ₯νλ€. -v (-v : inVerse, except) ν¨ν΄μ ν¬ν¨νλ μ€μ μ μΈνκ³ μΆλ ₯νλ€. -c (-c : count) ν¨ν΄μ μ°Ύμ μ€μ μλ₯Ό μΆλ ₯νλ€. -i (-i : ignore case, λλ¬Έμ/μλ¬Έμ) ν¨ν΄μ μ°Ύμ λ λμλ¬Έμλ₯Ό ꡬλΆνμ§ μλλ€.
grep cmd grep option βpatternβ file1 options: -i,-l,-v,-r,-n,--color, -A pattern: * . ^root root$ [abc] [a-c] [^a](aκ° μλλ©΄ λμ)
cmd | grep root γ΄ cat /etc/passwd
[μ€μ΅μ] cat /var/log/messages | egrep -i '(warn|err|fail|crit|alert|emerg)' γ΄ λ©μμ§ λ‘κ·Έμμ egrepμΌλ‘ μ¬λ¬κ°μ ν€μλλ₯Ό κ°μ΄ κ²μ!
=alias λ±λ‘ μ½λ = #!/bin/bash
if [ $# -ne 1 ] ; then echo "Usage: $0 " exit 1 fi
export LANG=C
RE1=$(date +'%b')
RE2=$(date +'%d')
if [
(νμ1) # find / -name core -type [f|d] (# find / -name "oracle" -type f) (νμ2) # find / -user user01 -group class1 (νμ3) # find / -mtime [-7|7|+7] (νμ4) # find / -perm [-755|755] (νμ5) # find / -size [-300M|300M|+300M] (νμ6) # find / -name core -type f -exec rm -f {} ;
-find .(.μ νμ¬ ν΄λ μλμ λν΄μ) , /(μμν΄λμ λν΄) find . -mtime 3 -type f (μμ μΌμ΄ 3μΌμ νμΌ κ²μ) find . -mtime -3 -type f (μμ μΌμ΄ 3μΌμΌ μλ νμΌ) find . -mtime +3 -type f(μμ μΌμ΄ 3μΌμ΄ μ§λ¨)
find . -perm -400 -type f -ls γ΄ κΆνμ -400 μ΄νλ‘ κ°μ§ μ λ€ λΆλ¬μ€κΈ° find . -perm 400 -type f -ls γ΄ κΆνμ΄ 400μΈ νΌλ―Έμ νμΌ μ°ΎκΈ°
[μ€λ¬΄μ] μ€λλ λ‘κ·Έ νμΌ μμ
[μ€λ¬΄μ] νμΌμμ€ν μ΄ κ°μκΈ° ν(Full) λλ κ²½μ° μ
γ΄ μμΌκ°μ μμ λ νμΌλ€ μ€μμ μ©λμ΄ 1κΈ°κ° μ΄μμΈκ²
γ΄ μλμ€λ©΄ λ°μΌλ‘ μ€μ¬μ ν λ² λ κ²μ. μ΄λ°μμΌλ‘ μ€μ¬κ°λ©°!
/var/server/log/file.log - μ΄λ°μμΌλ‘ κ²μν΄μ μ©λμ΄ ν° νμΌμ΄ λμ€λ©΄! γ΄ lsof(list open file)
lsof | grep /var/server/log/file.log = μ΄λ€ νλ‘μΈμ€κ° μ΄ νμΌμ μ‘κ³ μλμ§ νμΈνλ€ !
[μ€λ¬΄μ] μλ¬ λ©μΈμ§ κ²μ (μμ€μ½λκ° μ‘΄μ¬νλ κ²½μ°) μλμ½λO: find /src -type f -exec grep -l βserver Errorβ {} ; γ΄ μλ§μ νμΌ μ€ μλ² μλ¬λΌκ³ λ¨λκ±Έ μ°ΎμλΌ μμ€μ½λX: ꡬκΈκ²μμΌλ‘ site:redhat.com βServer Errorβ μμΌλ‘ κ²μμ°ΎκΈ°!
μμΆ (ν¨μ¨ gzip<bzip<xz) [gzip/gunzip cmd] -gunzip -c file1.gz (-cλ νμΌ μ κΉ νμ΄μ μμ νμΈν¨, -dλ μμΆν΄μ ) -gzip -v file2( -vλ μ€κ°μ μμΆνλκ±Έ ν μ€νΈλ‘ μΆλ ₯) -gzip file1 = file1μ μμΆ -gunzip file1 = μμΆν΄μ
[zcat] zcat file1.gz νμΌμ μ μ μ΄μ΄μ νμΈν΄μ μκΉ¨μ§
γ΄ μμΆνμΌμ μλ catμΌλ‘ νμΈνλ©΄ κΉ¨μ§λ€
[bzip2/bunzip2 cmd] -bzip2 file1 =μμΆ -bunzip2 -c file1.bz2 =μμΆν΄μ 1 -bzip2 -d file1.bz2 =μμΆν΄μ 2
[xz/unxz cmd] -xz file1 = μμΆ -unxz -c file1.xz =μμΆνμΌ νμΈ -unxz file1.xz = μμΆ ν΄μ
μμΉ΄μ΄λΉ tar cvzf file.tar.gz file1 file2 tar tvzf file.tar gz tar xvzf file.tar gz tar cvjf file.tar.gz file1 file2 tar tvjf file.tar gz tar xvjf file.tar gz tar cvJf file.tar.gz file1 file2 tar tvJf file.tar gz tar xvJf file.tar gz
(μ€λ¬΄ μ) μΈν°λ·μμ λ°μ νμΌ μμΆ ν΄μ λ°©λ² file.gz ---- gzip -----> # gunzip file.gz (# gzip -d file.gz) file.bz2 ---- bzip2 ----> # bunzip2 file.bz2 (# bzip2 -d file.bz2) file.xz ---- xz -------> # unxz file.xz (# xz -d file.xz) file.tar.gz ---- tar/gzip -> # tar xvzf file.tar.gz (# tar xvf file.tar.gz) file.tgz file.tar.bz2 ---- tar/bzip2-> # tar xvjf file.tar.bz2 (# tar xvf file.tar.bz2) file.tbz file.tar.xz ---- tar/xz ---> # tar xvJf file.tar.xz (# tar xvf file.tar.xz) file.txz file.zip ---- zip ------> # unzip file.zip file.jar ---- jar ------> # jar xvf file.jar
β리λ€μ΄λ μ β μ λ ₯ 리λ€μ΄λ μ -wall < /etc/MESS/work.txt μΆλ ₯ 리λ€μ΄λ μ -ls -l
[νΉμλ¬Έμμλ―Έ] >μ κ°―μμ λ°λ₯Έ μλ―Έμ°¨μ΄! CMD 2> filename λ³κ²½ CMD 2>> filename λ΄μ©μΆκ°ν΄μ λ³κ²½ν΄μ€
μλ¬ λ¦¬λ€μ΄λ μ [cmd] ls -l /test /nodir > dirfilename1 γ΄μ μμ μΈ μΆλ ₯ κ²°κ³Όλ₯Ό νμΌλ‘ μλ‘ λ§λ€μ΄μ μ μ₯
γ΄ dirfilename1μ μ μμΆλ ₯κ²°κ³Όμ μλ¬μΆλ ₯κ²°κ³Όλ₯Ό κ°μ΄ μ μ₯
[μ€μ΅μ] μ€ν¬λ¦½νΈ λ‘κ·Έ νμΌ μμ±
[μ€μ΅μ] μΆλ ₯ λ΄μ©μ΄ κΈ΄ λͺ λ Ήμ΄ μν μ, μΆλ ₯ νλ©΄ λΆμ
γ΄ κΈ΄ config μΆλ ₯λ¬Έμ config.logμ λ£μ΄μ νμΈ
[μ€μ΅μ] μΌλ°μ¬μ©μκ° λͺ λ Ή μνμ μλ¬ λ©μΈμ§λ₯Ό μ§μ°λ κ²½μ° $ find / -name core -type f > 2>/dev/null γ΄ μΌλ°μ¬μ©μκ° λ³Ό κ²½μ° μλ¬κ° λ§μ΄ λ° μ μμΌλ μλ¬λ λΉΌκ³ κ²μ!
βνμ΄ν = λͺ λ Ήμ΄λ₯Ό κ°κ³΅ μ μ¬μ©. μΆκ° λͺ λ Ήμ΄!-- β Pipe(|) κΈ°νΈκ° λ§μ΄ μ¬μ©λλ νμ
[μ€λ¬΄μ] λͺ¨λν°λ§ ꡬ문 + λ°μ΄ν° μμ§ (cmd | tee -a httpd.cnt) while true do ps -ef | gerp httpd | wc -l | tee -a httpd.cnt sleep done
[μ€μ΅μ] μ¬λ¬ ν°λ―Έλ νλ©΄μ 곡μ νλ κ²½μ° #script -a /dev/null | tee /dev/pts/1 | tee /dev/pts/2 μ€ν¬λ¦½νΈ 곡μ ν°λ―Έλ 1 κ²½λ‘ ν°λ―Έλ2 κ²½λ‘ (ttyλ‘ νμΈ)
βλ°°μμ κΈ°λ₯β
[κΉ¨μμ½λ] txt νμΌμ λ¬Έμλ₯Ό λ°λ‘ λ£μ΄μ μμ± γ΄ echo 1111(λ΄μ©) > λ§λ λ¬Έμμ μ΄λ¦
βλ³μβ
μ§μλ³μ - exportλ₯Ό μμ°λ©΄ μ§μλ³μ
νκ²½λ³μ - exportλ‘ μ μ μ€μ μ ν΄μ£Όλ©΄ νκ²½λ³μ
νΉμλ³μ - $$
[μμ€ν / μ νκ²½λ³μ(set/env)] PS1 λ³μ: export PS1=β[\u@\h \w]$ β home/.bashrc λͺ λ Ήμ΄ λ§μ§λ§μ \μ μ¬μ©νλ©΄ λ€μμ€λ‘ λμ΄κ°μ μ΄μ΄μ μ°λ©΄ λ¨. λ³΄ν΅ λͺ λ Ήμ΄κ° λ무 κΈΈμ΄μ νμΈμ΄ νλ€λ λ€μμ€λ‘ μΆκ° λͺ λ Ή μ λ ₯ PATH λ³μ: export PATH=$PATH:/root/scripts ($home/.bash_profile) HOME λ³μ PWD λ³μ USER λ³μ LOGNAME λ³μ UID λ³μ TERM: export TERM=vt100 LANG: export LANG=ko_LR.UTF-8
βλ©νμΊλ¦ν°β ββ ββ `` \ ;
βcmd νμ€ν 리β HISTSIZE=512 ν¬κΈ° μ§μ HISTFILE=$HOME/.BASH_HISTORY = κ²½λ‘μ§μ HISTFILESIZE=
βμ리μ΄μ€β = μ€μλ§λ‘ λ§λ€κΈ°!***** alias aa='cd /test && rm -rf /test/*' =aaλ₯Ό ν μ€νΈν΄λ λΉμ°κΈ°λ‘ μ¬μ©
βνκ²½νμΌβ /etc/profile
root user01 user02
~/.bash_profile ~/.bash_profile ~/. bash_profile
~/.bashrc ~/.bashrc ~/.bashrc
-/etc/profile - /.bash_profile -/.bashrc
[νλ‘μΈμ μ 보] (/proc/PID/*) μ νλ‘μΈμμ λν μ λ³΄κ° μμ νλ‘μΈμ€μ μ 보λ /proc/*μ μ‘΄μ¬ μ λ° κ²μ μ, ps -ef |grep νμΌμ΄λ¦ μΌλ‘ κ²μ
[νλ‘μΈμ κ΄λ¦¬] νλ‘μΈμ€ κ΄λ¦¬1 1.νλ‘μΈμ€ μ€ν -fg) # gedit -bg) # gedit & (λμ΄μνλ‘ λͺ λ Ήμ΄ μ λ ₯ κ°λ₯)
-
νλ‘μΈμ€ νμΈ -ps -f =- f(full listing)λ λ λ§μ μΈμ, μ΅μ μ νμΈ ν μ μκ² ν΄μ€λ€. -ps -e= e(every)μ΅μ μ νΉμ ν°λ―Έλμ΄ μλ λ°λͺ¬ νλ‘μΈμλ μΆλ ₯
-
νλ‘μΈμ€ μ’ λ£ (kill pidμ λ ₯)
1 SIGHUP νλ‘μΈμ€ μ¬μμ(HangUp), ν°λ―Έλμ μ μ΄ νλ‘μΈμ€ μ’
λ£λ₯Ό λ³΄κ³ νλ λ° μ¬μ©νλ€. λν νλ‘μΈμ€λ₯Ό μ’
λ£νμ§ μκ³ λ€μ μ΄κΈ°ν(μ€μ μ¬λ‘λ)νλ λ°μλ μ¬μ©νλ€.
(EX): # kill -1 450
2 SIGINT ν€λ³΄λ μΈν°λ½νΈ(Interrupt, <Ctrl + C>), νλ‘κ·Έλ¨μ΄ μ’
λ£λλ€. μ°¨λ¨νκ±°λ μ²λ¦¬ν μ μλ€.
(EX): # kill -2 450
3 SIGQUIT ν€λ³΄λ μ’
λ£(CTRL + ), SIGINTμ μ μ¬νμ§λ§ μ’
λ£ν λ νλ‘μΈμ€ λ€νκ° λ°μλλ€.
(EX): # kill -3 450
9 SIGKILL κ°μ μ’
λ£(force exit signal), κ°μμ€λ½κ² νλ‘κ·Έλ¨μ΄ μ’
λ£λλ€. μ°¨λ¨, 무μ λλ μ²λ¦¬ν μ μλ€. νμ μΉλͺ
μ μ΄λ€.
(EX): # kill -9 450
15 SIGTERM μ μ μ’
λ£(exit), κΈ°λ³Έ μκ·Έλ, νλ‘κ·Έλ¨μ΄ μ’
λ£λλ€. SIGKILLκ³Ό λ¬λ¦¬ μ°¨λ¨, 무μ λλ μ²λ¦¬ ν μ μλ€. νλ‘κ·Έλ¨ μ’
λ£λ₯Ό μ μ€μΉ μμ²νλ λ°©λ²μ΄λ€. μ체 ν΄λ¦°μ
(cleanup)μ΄ κ°λ₯νλ€.
(EX): # kill -15 450)
18 SIGCONT νλ‘μΈμ€κ° μ€μ§λ κ²½μ° μ¬κ°νκΈ° μν΄ μ μ‘λλ€. μ°¨λ¨ν μ μλ€. μ²λ¦¬νλλΌλ νμ νλ‘μΈμ€κ° μ¬κ°λλ€.
(EX): # kill -18 450
19 SIGSTOP νλ‘μΈμ€λ₯Ό μΌμ μ€μ§νλ€. μ°¨λ¨ λλ μ²λ¦¬ν μ μλ€.
(EX): # kill -19 450
20 SIGTSTP ν€λ³΄λ μ€μ§, SIGSTOPμ λ¬λ¦¬ μ°¨λ¨, 무μ λλ μ²λ¦¬ν μ μλ€. SUSP ν€ μ‘°ν©(CTRL + Z)μ μ¬μ©νλ€.
νλ‘μΈμ€ (μ‘, job) κ΄λ¦¬2 β’ μ‘ μ€ν fg) # ls bg) # ls & β’ μ‘ νμΈ
β’ μ‘ μ’ λ£
[νλ‘μΈμ λͺ¨λν°λ§]
# lsof /usr/sbin/sshd
# lsof /tmp
# lsof /dev
# lsof /home/user01
# lsof /usr/sbin/sshd
# lsof -p 450
# lsof -i (# netstat -antup)
# lsof -i TCP (# netstat -antp)
# lsof -i UDP (# netstat -anup)
[νμΌμ μ‘] scp cmd # scp file1 server2:file2 =보λ΄κΈ°
sftp cmd
#
[μ격μ μ] ssh cmd
λλ ν 리 λͺ©μ / λͺ¨λ λλ ν 리μ κ°μ₯ μμ λλ ν 리μ΄λ€. Root νμΌ μμ€ν μ΄λΌκ³ λ λΆλ¦°λ€. λͺ¨λ νμΌ μμ€ν μ λ§μ΄νΈ ν¬μΈνΈκ° μ‘΄μ¬νλ€.
/usr μ€μΉλ μννΈμ¨μ΄, 곡μ λΌμ΄λΈλ¬λ¦¬ ν¬ν¨λ νμΌ λ° μ½κΈ° μ μ© νλ‘κ·Έλ¨ λ°μ΄ν°, μ€μν νμ λλ ν 리μλ λ€μμ΄ ν¬ν¨λλ€. β’ /usr/bin : μ¬μ©μ λͺ λ Ή β’ /usr/sbin : μμ€ν κ΄λ¦¬ λͺ λ Ή β’ /usr/local : λ‘컬 μ¬μ©μ μ§μ μννΈμ¨μ΄ (EX) (Win)Program Files
/etc μ€μ μ κ΄λ ¨λ νμΌλ€μ΄ μ‘΄μ¬, μμ€ν κ³ μ μ κ΅¬μ± νμΌμ΄ μ‘΄μ¬νλ€. β’ OS λΆν μ μ€μ μ 보 β’ μλΉμ€ μ€μ νμΌ β’ λ³΄μ, κΈ°ν μ¬λ¬κ°μ§ μ€μ νμΌλ€μ΄ μ‘΄μ¬ (EX) (Win)μ μ΄ν
/var μ¬λΆν νμλ μ μ§λ μμ€ν κ³ μ μ κ°λ³ λ°μ΄ν°κ° μ‘΄μ¬νλ€. λμ μΌλ‘ λ³κ²½λλ νμΌ(μ: λ°μ΄ν°λ² μ΄μ€, μΊμ λλ ν 리, λ‘κ·ΈνμΌ, νλ¦°ν°λ‘ μ μ‘λ λ¬Έμ, μΉ μ¬μ΄νΈ μ½ν μΈ )μ /varμ μ‘΄μ¬ν μ μλ€. β’ /var/log/* : λ‘κ·Έ λλ ν 리
/run λ§μ§λ§ λΆν° μ΄ν μμλ νλ‘μΈμ€μ λ°νμ λ°μ΄ν°μ΄λ€. μ¬κΈ°μλ νλ‘μΈμ€ ID νμΌκ³Ό μ κΈ νμΌ λ±μ΄ ν¬ν¨λλ€. λλ ν 리 λ΄μ©μ μ¬λΆν νλ©΄ λ€μ μμ±λλ€. μ΄ λλ ν 리λ μ΄μ λ²μ μ CentOSμ μλ /var/run, /var/lockμ ν΅ν©νλ€. β’ {/var/run|/var/lock} -> /run
/home μΌλ° μ¬μ©μμ ν λλ ν 리μ΄λ€. μΌλ° μ¬μ©μμ κ°μΈ λ°μ΄ν° λ° κ΅¬μ± νμΌμ μ μ₯νλ λλ ν 리μ΄λ€. (EX) (Win)C:\Users\soldesk\
/root root μ¬μ©μ ν λλ ν 리μ΄λ€.
/tmp μ΄λμμλ μΈ μ μλ μμνμΌμ© 곡κ°μ΄λ€. 10μΌλμ μμΈμ€, λ³κ²½ λλ μμ λμ§ μμ νμΌμ μ΄ λλ ν 리μμ μλμΌλ‘ μμ λλ€. λ€λ₯Έ μμ λλ ν 리λ /var/tmpμ μ‘΄μ¬νλ€. 30μΌ μ΄μ μμΈμ€, λ³κ²½ λλ μμ λμ§ μμ νμΌμ μλμΌλ‘ μμ λλ€. (EX) (Win)TMP=C:\Users\soldesk\AppData\Local\Temp
/boot λΆν νλ‘μΈμ€λ₯Ό μμνλ λ° νμν νμΌλ€μ΄ μ‘΄μ¬νλ€. β’ Boot Loader(GRUB) ⒠컀λ(Kernel) β’ λ¨νμΌμμ€ν (initrd)
/dev μμ€ν μμ νλμ¨μ΄μ μμΈμ€ νλ λ° μ¬μ©λλ νΉμ μ₯μΉ νμΌμ ν¬ν¨νλ€. (EX) (Win)μ₯μΉκ΄λ¦¬μ
media/ usb κ°μ μμ λ§μ΄νΈ ν¬μΈνΈλ‘ μ¬μ©λλκ² mnt/ ""
-----------------[Git μ¬μ©λ² *****]----------------- GIT μ¬μ΄νΈ : https://github.com/
- git κ³μ μμ±
- github repository μμ±
- μ¬λ¦΄ νμΌ μ€λΉ + .gitignore = 곡κ°λ₯Ό νμ§ μμ νμΌ,λλ ν 리λ₯Ό μ§μ + README.md + bin/.sh + doc/.hwp + env/*.bashrc.txt
- νμΌ μ¬λ¦¬κΈ°: https://github.com/shb003/01_LinuxEssential.git ------------------------------------------------ echo "# 01_LinuxEssential" >> README.md git init = νμ¬ ν΄λ μλ gitμ μ°λν λ‘컬ν΄λλ₯Ό μμ± git add README.md = νμΌμ git μ€μ μ μΆκ° (μ μ₯ν΄μ€μΌν¨) git commit -m "first commit" git branch -M main -μ΄κΈ°κ΅¬μ± git remote add origin https://github.com/shb003/01_LinuxEssential.git γ΄ λμ μ격 μ μ₯μμ μ΄λ¦μ λΆμΈλ€. -μ΄κΈ°κ΅¬μ± git push -u origin main
λΈλ°μΉλ 리λͺ¨νΈ μ€μ μ΄ λλ¬λ€λ©΄
git add README.md -νμΌμΆκ°
git commit -m "first commit" - νμΌμ λν μ€λͺ
μΆκ° (νμ)
git push -u origin main - gitμ¬μ΄νΈμ λ΄κ° μ
λ ₯ν νμΌ μ 보λ€μ μ
λ ₯
------------------------------------------------------
branch(κ°μ§)name : git config --global init.defaultBranch <name>
git config --global user.name "shb003"
git config --global user.email "dodoto999@gmail.com"
(*) λ‘κ·ΈμΈμ΄ μλλ€λ©΄ ν ν°λ°©μμΌλ‘ λ³κ²½ν΄μΌνλ€
[token λ§λ€κΈ°]
git μ¬μ©μ μ μ - λ벨λ‘νΌ μ
ν
- κ°μΈ μ μ μ½μΈ - ν ν°(ν΄λμ)
γ΄ shb003 Token = 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
γ΄ token push μμ
- git push -u origin main
-------------------------------------------------------------
[μλ‘μ΄ νμΌ μΆκ°]
touch addfile.txt -ν
μ€νΈ νμΌ μΆκ°
git add . - ν΄λ μλμ λͺ¨λ νμΌ git μμλ±λ‘
git commit -m "2nd commit" -μ€λͺ
μΆκ°
git push origin main -githubλ‘ μ°λ
----------------------------------------------------------------
cd /test
git clone https://github.com/shb003/01_LinuxEssential.git
####################### μ 2μ₯ μ₯μΉ κ΄λ¦¬(λμ€ν¬ μ₯μΉ κ΄λ¦¬) #######################
# ls /
[μ°Έκ³ ] νμΌμμ€ν
ꡬ쑰/ λλ ν 리 μ©λ νμΈ CMD
# man 7 hier
# man 7 file-hierachy
μ₯μΉκ΄λ¦¬(ex: λμ€ν¬ μ₯μΉ κ΄λ¦¬)
λμ€ν¬ μ₯μ°©
* μ₯μΉ μΈμ μμ
* νν°μ
μμ
* νμΌ μμ€ν
μμ
* λ§μ΄νΈ μμ
-
μ₯μΉ μΈμ(device reconfiguration) (μ μμ§μ) λμ€ν¬s ꡬ쑰: sector- track - cylinder - parition - disk λμ€ν¬ μ’ λ₯: IDE(SATA), SCSI(SAS), SSD λμ€ν¬ μ΄λ¦ μ²΄κ³ * IDE DISK: /dev/hda, /dev/hdb, dev/hdd * SCSI DISK: /dev/sda, /dev/sdb, /dev/sdc, /dev/sdd ..... * Virtual DISK: /dev/vda, /dev/vdb, /dev/vdc .....
(μ₯μΉμΈμ μμ ) λμ€ν¬ μΆκ°
- poweroff
- λμ€ν¬ μ₯μ°©
- poweron
- lsblk --fs -p
-
νν°μ μμ (1) μ μ μ§μ νν°μ μ’ λ₯ * BIOS F/N - MBR νν°μ νμ * UEFI F/W - GPT νν°μ νμ νν°μ μ΄λ¦ μ²΄κ³ (MBR 체κ³) * primary partition(1-4) * Extended partition -Logical partition(5-15) νν°μ μ΄λ¦ μ²΄κ³ (GPT νν°μ νμ) *partition(1~128)
(1) νν°μ μμ
νν°μ
μμ
ν΄
* fdisk CMD - 2TB μ΄ν (2TB μ΄νμ μμ
μμλ§ μ¬μ©)
---------------------
* gdisk CMD - 2TB μ΄κ³Ό
* parted CMD - 2TB μ΄κ³Ό
νν°μ
μμ
μμ
1. fdisk /dev/sdb
2. p= νν°μ
νμΈ, n = νν°μ
μμ±, d = νν°μ
μ κ±°, w=μ μ₯νκ³ μ’
λ£
3. μ μ₯ μμ ν, partprobeλ‘ λ§λ¬΄λ¦¬
fdisk νμ₯ νν°μ
1. νμ₯ νν°μ
μμ±
γ΄ n - p - μνλ νν°μ
λ²νΈ - enter - μνλ μ©λ
2. μ΄λ―Έ νμ₯ νν°μ
μμμ λ§λ€ μ μμ. nλ₯Ό μ
λ ₯νλ©΄ λ²νΈ μ§μ μμ΄ λ°λ‘ λλ¨Έμ§λ₯Ό λ¬Όμ΄λ΄
3. μμμ μ€μ 건λλ°κ³ λλ²μ§Έ μ©λλ§ μνλ μ©λμΌλ‘ μ€μ
4. λλ¨Έμ§λ κΈ°νΈμ λ°λΌ μΆκ°
νμ₯νν°μ
(Extended Partition), λ
Όλ¦¬νν°μ
(Logical partition)μ μ μ‘΄μ¬νλ κ²μΈκ°?
γ΄ 1κΈ°κ°λ₯Ό 4κ°μ νν°μ
μΌλ‘ λλ μ μμ
νλ€λ©΄ primary νν°μ
μΌλ‘ λλ μ€ μ μμ§λ§,
4κ° μ΄μμ΄λΌλ©΄ νμ₯νν°μ
μΌλ‘ λ
Όλ¦¬ νν°μ
λΆλ¦¬ μμ
μ ν΄μ£Όλκ²μ΄ μ’λ€.
[gdisk μμ
]
- gdisk partition id (Hex code) - μΈμλ¬μΌ νλ νμ
μ ν₯μ€ μ½λ
* 8200 : Linux swapml
* 8300 : Linux filesystem
* 8e00 : Linux LVM
* fd00 : Linux RAID
- fdisk partition id (Hex code)
82 : linux swap
83 : linux
[parted μμ
]
1. parted /dev/sdc
2. mklabel λΌλ²¨νμ
3. mkpart
4. μ΄λ¦μ μ무거λ ex: data1
5. μμ€ν
νμ
μ λ³΄ν΅ ext4
6. μμμ©λκ³Ό λ μ©λ μ€μ . λ¨μ μ©λ λ€μ±μ°λ κ±°λ©΄ endλ₯Ό 100%λ‘ μ€μ
+ partedλ‘ μ©λμ λ± λ§κ² μ€μ νμ¬ μμ
μ, μ©λμ μ΄λμ λ μ¬μ λ‘κ² μ‘μμ€μ μ€μ λ‘ 200Mλ₯Ό
μ‘μλ€λ©΄ 190Mμ λλ©΄ νν°μ
μ μ‘μμ€λ€.
3. νμΌ μμ€ν
μμ
(1) μ μ μ§μ
- νμΌμμ€ν
μ 보 νμΈ
# man -k ext4|xfs
# man 5 fs
- νμΌμμ€ν
μ’
λ₯
* ext3/ext4, xfs
- νμΌμμ€ν
ꡬ쑰 (ex: ext4)
* DISK
--------------------(10)
MBR
----------(5)
BOOT SECTOR
+--> --------------------(10)
| SUPER BLOCK |
|---|
GROUP 0
ext4 *Backup super block *Gloup Descriptor table | -block bitmap, inode bitmap | -inode table, data block | | GROUP 1 | *Gloup Descriptor table | -block bitmap, inode bitmap | -inode table, data block | | GROUP 2 | *Backup super block | *Gloup Descriptor table | -block bitmap, inode bitmap | -inode table, data block | .... +--> --------------------(10) Super block ----------- GROUP 0 GROUP 1 GROUP 2 ....
# dumpe2fs /dev/sdb1 (# tune2fs -l
# xfs_info /dev/sdb1
(2) νμΌ μμ€ν
μμ
- κΈ°ν λ§μ΄νΈ κ΄λ¦¬ (1) cd/dvd λ§μ΄νΈ (μλλ§μ΄νΈ) γ΄ Automount # cd /run/media/$USER/$LABEL ; ls # cd ; umount /run/media/$USER/$LABEL (μλλ§μ΄νΈ) # mkdir -p / mnt/cdrom ; mount -t iso9660 -o ro /dev/cdrom /mnt/cdrom # cd ; umount /mnt/cdrom
####################### μ 3μ₯ νμΌμμ€ν μ κ²κ³Ό λͺ¨λν°λ§ ####################### νμΌμμ€ν μ κ² fsck CMD # fsck /dev/sbd1 # fsck -y /dev/sbd1
# fsck /dev/sbd1
# fsck ext4 /dev/sbd1
# fsck -l ext4 /dev/sbd1
(ext4) # fsck ext4 /dev/sbd1
(xfs) xfs_repaire /dev/sbd1
[μ€λ¬΄μ] "fsck -y /dev/sdb1" μ¬μ©νλ κ²½μ°μ λ‘κ·Έ μμ±λλ€
# fsck -y /dev/sdb1 2>&1 | tee -a tsck.log/*
[μ€λ¬΄μ] μνΌλΈλ‘ 볡ꡬ
(μλ) # fsck -y /dev/sdb1
(μλ) # dumpe2fs /dev/sdb1 | grep -i superblock
# fsck -b 32768 /dev/sdb1
[μ€λ¬΄μ} bad block
λ°°λλΈλ(bad block)μ μ’
λ₯
- 물리μ μΈ λ°°λλΈλ(Physical badblock)
- λ
Όλ¦¬μ μΈ λ°°λλΈλ(Logical badblock)
# badblocks -v /dev/sdb1 /* μλΉν μ€λ μκ°μ΄ κ±Έλ¦Ό */
# e2fsck -c -p -f -v /dev/sdb1 (# e2fsck -cpfv /dev/sdb)
alias df='df -h -T'
5. κΈ°ν λ§μ΄νΈ κ΄λ¦¬
(2) iso μ΄λ―Έμ§ νμΌ κ΄λ¦¬
mkisofs -o /μ΄λ¦/κ°μ Έμ¬ κ²½λ‘
# mkisofs -o linux.ios /etc/sysconfig/*
# mkdir -p /mnt/iso ; mount -t(typeμ§μ ) iso9660 -o ro,loop /test/linux.iso /mnt/iso
[κΉ¨μ μμ] lsblk --fs = νμΌ κ΅¬μ‘°μ μμ λ΄μ©λ€μ νΈλ¦¬ νμμΌλ‘ μ μ₯
(3) usb λ©λͺ¨λ¦¬ λ§μ΄νΈ
FAT32
(μλλ§μ΄νΈ)
automount
# cd /run/media/$USER/&LABEL ; ls
# cd ; umount /run/media/$USER/&LABEL
(μλλ§μ΄νΈ)
# mkdir -p /mnt/usb ; mount -t vfat /dev/sde2 /mnt/usb
# cd /mnt/usb ; ls
# cd ; umount /mnt/usb
NTFS
# yum -y install epel-release
# yum install ntfs-3g
(μλλ§μ΄νΈ)
automount
# cd /run/media/$USER/&LABEL ; ls
# cd ; umount /run/media/$USER/&LABEL
(μλλ§μ΄νΈ)
# mkdir -p /mnt/ntfs ; mount.ntfs /dev/sde2 /mnt/ntfs
# cd /mnt/ntfs
-RAM λμ€ν¬ λ§μ΄νΈ
(μλλ§μ΄νΈ)
# mkdir -p /mnt/ram ; mount -t tmpfs -o size=5g none /mnt/ram
# cd /mnt/ram ; ls
# cd ; umount /mnt/ram
- NFS μ격 λ§μ΄νΈ
[μ μ 쑰건] μ격μλ²μ 곡μ μ€μ μ΄ λμ΄ μμ΄μΌνλ€
(μλλ§μ΄νΈ)
# mkdir -p /mnt/nfs ; mount -t nfs
# systemctl restart nfs-server
#
(6) cifs μ격 λ§μ΄νΈ
# mkdir -p /mnt/cifs
# mount -t cifs //μμ μ ip/곡μ λ ν΄λ /mnt/cifs -o username=soldesk
# cd /mnt/cifs = μ¬μ©ν ν΄λλ‘ μ΄λ
# cd ; umount /mnt/cifs = μ¬μ© μ’
λ£ ν, λ§μ΄νΈ μ’
λ£
####################### -----μ 5μ₯ LVM κ΄λ¦¬------ #######################
β LVM μμ μμ
β’ Partition System ID λ³κ²½(fdisk CMD) -> PV μμ±(pvcreate CMD) t-L-κ°μ΄λλ₯Ό λ³΄κ³ μνλ νμ μΌλ‘ λ³κ²½ : ex: 8e # pvcreate /dev/sda1 # pvcreate /dev/sda1 /dev/sdb1 /dev/sdc1 # pvcreate /dev/sd[abc]1 # pvcreate /dev/sda /dev/sdb /dev/sdc -> PV μ κ±° # pvremove /dev/sda1 # pvremove /dev/sda1 /dev/sdb1 /dev/sdc1 # pvremove /dev/sd[abc]1
-> PV μμ± μ, νμΈλ² # fdisk -l | grep LVM # μμ± κ°λ₯ν PV λͺ©λ‘ νμΈ # pvs # μμ±λ PV λͺ©λ‘ νμΈ # pvcreate CMD # PV μμ± # pvdisplay /dev/λμ€ν¬ μ ν = μμΈν νμΈ
-> VG μμ±(vgcreate CMD) # vgcreate vg1 /dev/sdc1 /dev/sdd1 /dev/sde1 # vgcreate vg1 /dev/sd[cde]1 # vgcreate vg1 /dev/sd[cde]1 -s 16M /* PE Size : 16MB */ -μ¬μ΄μ¦ λ¨μ μμ£Όλ©΄ 4Mλ¨μλ‘ λμ΄!
-> VG μμ # vgremove vg1 # vgremove /dev/vg1
-> VGμ λμ€ν¬ μΆκ°/μ κ±° # vgextend vg1 /dev/sdf1 # vgreduce vg1 /dev/sdf1
-> VG μ΄λ¦ λ³κ²½ # vgrename /dev/vg1 /dev/vg1_backup # vgrename vg1 vg1_backup
-> VG μ 보 νμΈ # vgs # vgdisplay (# vgdisplay vg1) # vgscan
-> LV μμ±(lvcreate CMD) # lvcreate -L 10G vg1 /* LV μ΄λ¦ μλ μμ± : lvol#(μ©λ 10G) / # lvcreate -L 1500M -n lv1 vg1 # lvcreate -L 1500 -n lv1 vg1 / μ©λ λ¨μκ° μμΌλ©΄ MB */ # lvcreate -l 60%VG -n lv1 vg1 # lvcreate -l 100%FREE -n lv1 vg1
β LV μμ
-> LV μ΄λ¦ λ³κ²½ # lvrename /dev/vg1/lv1 /dev/vg1/lv2 # lvrename vg1 lv1 lv2 /* vg1(lv1 -> lv2) / -> LV κ³΅κ° λ리기/μ€μ΄κΈ° # lvextend -L 12G /dev/vg1/lv1 / lv1 μ©λμ 12Gλ‘ λ§μΆ€ / # lvextend -L +1G /dev/vg1/lv1 / lv1 μ©λμ 1G λ§νΌ μΆκ° */ # lvextend -l +100%FREE /dev/vg1/lv1
# lvreduce -L 3G /dev/vg1/lv1
# lvreduce -L -3G /dev/vg1/lv1
# lvreduce -l -3 /dev/vg1/lv1 /* lv1 μ©λμ 3 LE(Logical Extend)λ§νΌ κ°μ */
-> LV μ 보 νμΈ # lvs # lvdisplay (# lvdisplay /dev/vg1/lv1) # lvscan
[μ§λ¬Έ] μ΄κΈ° vm κ΅¬μ± ν 리λ μ€ μ€μΉ μμ / μ©λμ 60Gλ‘ λ릴 μ μλκ°? /dev/cs/root(39G) -> /dev/cs/root(60G) λ΅ = #lvextend -l 100%FREE /dev/cs/root
-> F/S μμ±(mkfs CMD) -> λ§μ΄νΈ(mount CMD, /etc/fstab)
[κ΅¬μ± μμ]
- λμ€ν¬ 8eλ‘ lvm μ€μ , κ°μΈνν°μ λμ€ν¬ ꡬμ±
- pvcreateλ‘ λ§λ€κΈ°
- vgλ‘ λ§λ€μ΄λ pvλ€ λ€ λ¬ΆκΈ°
-μμ κ³ν 1. DISK μ€λΉ (μΆκ° λ° μΈμ) 2. νν°μ μμ
parted /dev/sdc mklabel media fdisk /dev/sdc /dev/sdc1 partition id:8e ####################### -----μ 6μ₯ RAID------ #######################
- RAID 7 리μΌνμμ λ°λ‘ μ¬μ©ν΄μ μμ μ±μ΄ λμ νμ§λ§ μ€ν λ¦¬μ§ κ°κ²©μ΄ λμ
####################### -----μ 7μ₯ SWAP------ #######################
-SWAP μ΄λ? λμ€ν¬λ΄μ μ‘΄μ¬νλ κ°μμ μΈ λ©λͺ¨λ¦¬ 곡κ°, 물리μ μΈ λ©λͺ¨λ¦¬(RAM) μ°μ₯ 곡κ°μ²λΌ μ°μ΄λ 곡κ°
β μ€μ κ΄λ ¨ μ΄μ(SWAP Issue)?
- μΈμ μ€μμ μΆκ°νλκ°?
- μ€μ 곡κ°μ ν¬κΈ°? (μ΄κΈ° μ€μΉμ) (μ΄μμ)
- μ€μμ μΆκ°νλ©΄ μ±λ₯μ΄ μ’μμ§λκ°? γ΄ κ·Έλ μ§μλ€. νμ§λ§ μ΄μ체μ κ° λ©μΆλκ²μ λ°©μ§νκΈ° μν΄ μΆκ° νλκ²μ΄λ€.
-SWAP κ΄λ¦¬ * SWAP FILE ννλ‘ μΆκ°/μμ νκΈ° # mkdir -p /swap # dd -if=/dev/zero of=/swap/swapfile bs=1M count=10240 # mkswap /swap/swapfile # swapon swap/swapfile # vi /etc/fstab # rm -f /swap/swapfile
* SWAP Partition ννλ‘ μΆκ°/μμ νκΈ°
# fdisk /dev/sdb (t=82)
# mkswap /dev/sdb1
# swapon /dev/sdb1
# vi /etc/fstab
# swapoff /dev/sdb1
# vi /etc/fstab
* swap LV ννλ‘ μΆκ°/μμ νκΈ°
#fdisk /dev/sdb (t=8e)
#pvcreate /dev/sdb1
#vgcreate cs /dev/sdb1
#lvcreate cs -n swap2 -L 10G
#mkswap /dev/cs/swap2
#swapon /dev/cs/swap2
#vi /etc/fstab
#swapoff /dev/cs/swap2
#vi /etc/fstab
############################ -----μ 8μ₯ μννΈμ¨μ΄ κ΄λ¦¬------ ############################
rpm cmd #rpm -qa | grep openssh [μ°Έκ³ ] μΈν°λ· - rpm νμΌ γ΄ rmpfind.net γ΄ rpm.pbone.net
-μ€μΉ
#rpm -ivh|Fvh|Uvh [--nodeps] [force] PKG.rpm
μ€μΉ μ
λ°μ΄νΈ μ
κ·Έλ μ΄λ(μ νΈ!)
#rpm -qa | grep PKG = μ 체 ν¨ν€μ§ νμΈ μ΅μ
#rpm -e PKG
#rpm -qf /usr/bin/php-cli
-μμ
#rpm -e [--nodepes](νΈνμ±λ¬΄μ) PKG
yum/dnf cmd
-μ€μΉλͺ
λ Ήμ΄
# yum [-y] install pkg
# yum [-y] update pkg
# yum [-y] localinstall pkg.rpm
# yum download pkg
#yum list (νμΈλͺ
λ Ήμ΄)
# yum list installed = μ€μΉλ ν¨ν€μ§ λͺ©λ‘ νμΈ
# yum list installed [--downloadonly] = κ²½λ‘μλ λ€μ΄λ‘λλ§ ν΄λ
# yum list avalable
# yum search php
# yum list 'php-7.2.24*'
# yum provide '*/httpd.conf'
- yum history
# yum history = μ€μΉ,μμ λ΄μ νμΈ
# yum histoty info (λ²νΈ) = κ·Έ λ²νΈμ λν λ‘κ·ΈκΈ°λ‘
# yum history redo 20
# yum history undo 43
# yum history rollback 41
# yum [-y] remove pkg =μμ λͺ
λ Ήμ΄
[μ°Έκ³ ] yum update
# yum check-update 2>&1 | tee rpm.log ( μ
λ°μ΄νΈ νμΈνκ³ |κ·Έ λ΄μ©μ λ‘κ·Έλ‘ λ°λ‘ μ μ₯)
[2(μ€λ₯μΆλ ₯)>&1(μ μμΆλ ₯)μ λ»] =file.logμ μ μμ μΈ μΆλ ₯κ²°κ³Ό μΈμλ λ£λλ€λ λ»
# yum update
- yum repository κ΄λ¦¬
# yum repolist ,all
# yum-config-manager --disable epel = λͺ©λ‘μμ μ μΈ
# yum-config-manager --enable epel = λͺ©λ‘μ μΆκ°
[μ°Έκ³ ] /etc/yum.repo.d/*.repo λ§λ€κΈ°
(γ±) μλμΌλ‘ μμ±νκΈ° (yum-config-manager)
# yum-config-manager --add-repo file:///mnt/cdrom/BaseOS
# yum-config-manager --add-repo file:///mnt/cdrom/AppStream
(γ΄) μλμΌλ‘ μμ±νκΈ°
# yum /etc/yum.repo.d/CD.repo
-----------------------------
[MYCDBaseOS]
name= CentOS Stream 8 -BaseOS
baseurl=file:///mnt/cdrom/BaseOS
enabled=1
[MYCDAppStream]
name=CentOS Linux - AppStream
baseurl=file:///run/media/root/CentOS-8-3-2011-x86_64-dvd/AppStream
enabled=1
-yum group cmd
# yum group install <gpkg>
# yum group update <gpkg>
# yum group list
# yum group list hidden | egrep -i 'security|development'
# yum group info <GPKG>
# yum group remove <gpkg>
μ¬μ©λ¦¬λ
μ€ μ»€λ λ²μ : 4.18.0-408.el8.x86_64
source code
#cd /test ; rm -rf * = μ¬μ© x
#cd /test && rm -rf * = μμ΄μΌλ§ μ§μ°κΈ° λλ¬Έμ μμ !!
#cd /test && wget http://www.example.com/httpd.tar.gz
#tar xvzf http.tar.gz -C /usr/local/src
#cd /usr/local/src $$ comfigure --prefix=/usr/local/apache2 && make && make install
# /usr/local/apache2/bin/apachect1 start
[μ°Έκ³ ] νΌλΈλ¦ ν€ κ°: FE1AA336F722C534B40466F1D7F385BF5C0F4E5C
γ΄ ν€ λ³΄λ λͺ
λ Ήμ΄ # gpg --list-key
rpm μ νμ€μΉ νμνμΌλ€ rpm -Uvh php-cli-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64.rpm php-common-7.2.24-1.module_el8.2.0+313+b04d0a66.x86_64.rpm
ν¬λ‘¬μ€νλͺ λ Ήμ΄ -----chrome &--------
############################ -----μ 9μ₯ λΆν κ³Όμ ------ ############################
[리λ μ€ λΆν κ³Όμ ] -F/W λ¨κ³ -λΆνΈ λ‘λ(Boot Loader) λ¨κ³ -컀λ(Kernel) λ¨κ³ -systemd λ¨κ³
- λΆν
κ³Όμ
β 1 λ¨κ³ : F/W λ¨κ³
- post
- λΆν 맀체(floppy -> disk -> cd -> net) β 2 λ¨κ³ : λΆνΈ λ‘λ(Boot Loader) λ¨κ³
- /boot/grub2/grub.cfg
- kernel
- initramfs β 3 λ¨κ³ : 컀λ(Kernel) λ¨κ³ -kernel -> initramfs(systemd) β 4 λ¨κ³ : systemd λ¨κ³\
β μλΉμ€ μ μ΄
*** # systemctl is-failed httpd => # systemctl --failed --type=service γ΄ failμ΄ λ°μν λΆλΆμ νμΈνλ€.
- κ·Έλν½, λ©ν°λͺ¨λ μ€μ νκΈ°
-λΆν κ³Όμ μμ text ctl λͺ¨λμμ μ€μ λ³κ²½ (eλ‘ edit λͺ¨λ λ€μ΄κ°κΈ°) (γ±) /dev/cl/root --> /sysroot(ro) ==> "rd.break" # mount -o remount,rw /sysroot # chroot /sysroot (γ΄) /dev/cl/root --> /(ro) ==> "init=/bin/bash" # mount -o remount,rw / (γ·) /dev/cl/root --> /(ro), μμ€ν μ΄κΈ°ν ==> "systemd.unit=emergency.target" # mount -o remount,rw / (γΉ) /dev/cl/root --> /(rw), μμ€ν μ΄κΈ°ν, λλ¨Έμ§ νμΌμμ€ν λ§μ΄νΈ ==> "systemd.unit=rescue.target"
(5) μ₯μ μ²λ¦¬(ex:μμ λͺ¨λ) (γ±) rd.break reboot -> GRUB menu -> μ λΉν 컀λ μ ν -> e -> linux λΌμΈ μ ν -> rd.break # mount βo remount,rw /sysroot # chroot /sysroot # passwd root # toucg /.autorelabel -> exit exit
(γ΄) init=/bin/bash reboot -> GRUB menu -> μ λΉν 컀λ μ ν -> e -> linux λΌμΈ μ ν -> init=/bin/bash # mount βo remount,rw /sysroot # chroot /sysroot # passwd root # toucg /.autorelabel -> μ¬λΆν
(γ·) systemd.unit=emergency.target reboot -> GRUB menu -> μ λΉν 컀λ μ ν -> e -> linux λΌμΈ μ ν -> systemd.unit=emergency.target # mount βo remount,rw / μ₯μ μ²λ¦¬ -etc νμΌ μ€λ₯ μ μ¬μ© # exit
(γΉ) systemd.unit=rescue.target reboot -> GRUB menu -> μ λΉν 컀λ μ ν -> e -> linux λΌμΈ μ ν -> systemd.unit=rescue.target - λ§μ΄νΈκ° μ΄λ―Έ λμ΄μμ μ₯μ μ²λ¦¬ -etc νμΌ μ€λ₯ μ μ¬μ© # exit
μ§λ¬Έ β μ€λ linux vm μ΄λ―Έμ§λ₯Ό κΈ°λνλλ° root μνΈλ₯Ό λͺ¨λ₯΄λκ²½μ°? λ΅λ³ β root μνΈλ₯Ό 볡ꡬνλ€. # reboot GRUB menu μ λΉν 컀λ -> e -> linux μμνλ λΌμΈ -> -> re.break -> <ctrl+x> # mount βo remount,rw /sysroot # chroot /sysroot # passwd root # (selinux on μ) touch /.autorelabel #exit; exit
[μ€μ΅] (systemd phase) /etc/rc.local (/etc/rc.d/rc.local) νμΌμ μ¬μ©ν λΆν μ μ€νλͺ λ Ή λ±λ‘
[μ€μ΅2] (bootload phase) GRUB2 μνΈ μ€μ νκΈ°
=> /boot/grub2/user.cfg
[μ€μ΅3] (systemd phase) μλ‘μ΄ μλΉμ€ λ±λ‘
[μ€μ΅4] (grub phase) GRUBκ° κΉ¨μ§ κ²½μ° CD λΆν
# lsblk --fs -p
# fdisk -l /dev/sda
[μ€μ΅5] (systemd phase) /etc/fstab νμΌ μλͺ»λ μ€μ μ μ root μνΈ μ λ ₯
-> μ λΉν μ€μ
- systemd λ°λͺ¬ = λͺ¨λ μμ€ν μ λΆλͺ¨ νλ‘μΈμ
############################ -----μ 10μ₯ μ¬μ©μκ·Έλ£Ήκ΄λ¦¬------ ############################
μ©μ΄: μΈμ¦(authentication), μΈκ°(Authorization), μν (role)
μ¬μ©μ κ΄λ¦¬ μ¬μ©μ μ 보 νμΌ /etc/passwd /etc/shadow μ¬μ©μ κ΄λ¦¬ νμΌ useradd cmd # useradd user01 # useradd -M /oracle oracle - νν΄λ μμ±x( #chown -R oracle:oinstall /oracle) # passwd user01 # useradd -e 2023-03-08 user04 - κ³μ μ κΈ°κ°μ μΆκ° # useradd -D -g 10 - μ μ μμ± κΈ°λ³Έκ° λ³κ²½ # useradd -D -b /users '' # useradd -D -s /bin/sh ''
usermod cmd
# usermod -u 2000 user01 - uid change
# usermod -s /bin/sh user01 - shells κ²½λ‘ λ³κ²½
# usermod -c 'μ λΉν λ΄μ©' user01
userdel cmd
# userdel user01 = κ²μμ μ λ³΄λ§ μμ
# userdel -r user01 = μ 보μ μμ λͺ¨λ μμ
κ·Έλ£Ήκ΄λ¦¬ κ·Έλ£Ή μ 보 νμΌ /etc/group κ·Έλ£Ή κ΄λ¦¬ λͺ λ Ή groupadd CMD # groupadd class1 # useradd -aG class1,class2 user01 - μ μ μκ² μλΈκ·Έλ£Ή μΆκ° groupmod CMD # groupmod -g 3000 class1 groupdel CMD #groupdel class1
μνΈκ΄λ¦¬ chage CMD # chage -l user01 # chage -M 90 -W 7 user 01 # chage -E 2023-12-31 user01
[μ€λ¬΄μ] μ¬μ©μ κ³μ μ λν exfiere date μ€μ νκΈ°
μΆκ° - # useradd -e 2023-12-31 user01
λ³κ²½ - # usermod -e 2023-12-31 user01 (# chage -E 2023-12-31 user01)
[μ€λ¬΄μ] Max Days + Warn Days
μ μ - /etc/login.defs (PASS_MAX_DAYS=30, PASS_WARN_AGE=7)
κ°μΈ - # chage -M 30 -W 7 user01
############################ -----μ 11μ₯ μ€μΌμ€λ§------ ############################
at CMD (atd.service) # at 1300 -μ€μ # at -l (#atq) -νμΈ # at -r N (#atrm N) -μ·¨μ
crontab CMD β μμ μ μΈ # crontab -e (-e : Edit, # vi /var/spool/cron/<μ¬μ©μμ΄λ¦>)
β μμ νμΈ # crontab -l (-l : List, # cat /var/spool/cron/<μ¬μ©μμ΄λ¦>)
β μμ μμ # crontab -r (μ£Όμ) (-r : Remove, # rm /var/spool/cron/<μ¬μ©μμ΄λ¦>)
[λ°λ³΅μΆλ ₯λ¬Έ μκ°λ§λ€ μΆλ ₯] #!/bin/bash
ps u | awk '{print $7}' | grep pts/ | sort -u > /root/bin/pts.list cat pts.list | while read BTS do cat /etc/MESS/CoffeeTime.txt > /dev/$BTS done
[μ€λ¬΄μ] λ§€μ 첫λ²μ§Έ μ£Ό μΌμμΌ λ /root/bin/backup.sh μ€ν¬λ¦½νΈ μ€ννκ³ μΆλ€
* crontab CMD + script.sh
# crontab -e(edit)
0 3 * * 0 /root/bin/script.sh
# vi script.sh
------------------------------------------
#!/bin/bash
DAY=$(date +%d)
if [ &DAY -le 7 ] ; then
/root/bin/backup.sh
fi
-------------------------------------------
[μ€λ¬΄μ] wasuser, oracle μ¬μ©μλ§ crontab λͺ λ Ήμ΄λ₯Ό μννλλ‘ νκ³ μΆλ€. # cd /var/spool/cron # ls backupuser user01
# vi /etc/cron.allow
backupuser
user01
wasuser
oracle
[μ€λ¬΄μ] κ³ κ°μ λ¬Όμ(?) [κ³ κ°μ μ§λ¬Έ] μΌλ°μ μΈ μλΉμ€(EX: httpd)λ μ€μ νμΌ(EX: httpd.conf)μ μμ νκ³ λλ©΄ λ°λͺ¬μ μ¬κΈ°λνλλ°, crontab μλΉμ€λ μ€μ νμΌμ μμ ν λ€μμ λ°λͺ¬μ μ¬κΈ°λνλκ°?
(볡μ) /etc/cron.allow νμΌμ μμ νκ³ /etc/cron.deny νμΌ νΈμ§νλ€. # rm -f /etc/cron.allow # > /etc/cron.deny -> user01 μμ
[μ€λ¬΄μ] κ΄λ¦¬μ μ€μΌμ€λ§ μ€μ
(γ±) crontab -e => /var/spool/cron/root/$USER
(γ΄) # vi /etc/crontab
(γ·) # vi /etc/cron..{hourly,daily,weekly,monthly}/*
############################ -----μ 12μ₯ λ°±μ κ³Ό 볡ꡬ------ ############################
λ‘컬 λ°±μ /볡ꡬ tar CMD [μ°Έκ³ ] μλκ²½λ‘/μ λκ²½λ‘ (λλλ‘ μλκ²½λ‘) γ΄ μλκ²½λ‘λ κ²½λ‘λ‘ μ§μ λ€μ΄κ°μ μΉ΄νΌλ₯Ό ν΄μ€μΌνμ§λ§ μ λκ²½λ‘λ λ€μ .μ΄ μλλΌ /home μΌλ‘ μ λ κ²½λ‘λ₯Ό μ ν΄μ€μ μ§μ μν΄λ λλ€. # cd /home # tar cvzf /backup/home.tar.gz . # tar tvzf /backup/home.tar.gz # cd /home ; tar xvzf /backup/home.tar.gz
γ΄ νλ²μ λ³΅κ΅¬κ° λμ΄μ νΈνμ§λ§ λ°μ΄ν°κ° λ λ§μ΄ μμΈλ€
Full Backup + Difference Backup
# cd /home
# tar -g /backup/backup.time -czf /backup/home_full.tar.gz .
# tar -g /backup/backup.time -czf /backup/home_inc1.tar.gz .
- νλ
# cd /hoem
# tar -g /backup/backup.time -xzf /backup/home_full.tar.gz
# tar -g /backup/backup.time -xzf /backup/home_inc1.tar.gz
-----------------------μ€μ!!!----------------------------
***** cp -r /test1/* /test2 = cpλ‘ λ³΅μ¬ μ, λ¬Έμ μ
γ΄ *λ .μΌλ‘ μμνλ μ€μ νμΌμ cp νμ§μκ³ , μκ° λν λ€λ₯΄κ² μ μ₯λλ€
κ·Έλ¦¬κ³ μ€λμ κ·Έλ£Ήλ λͺ¨λ μ€νμμ μ€λκ·Έλ£ΉμΌλ‘ λ³κ²½λλ€. κΆνλ€ λν
μλ‘ λ§λ€μ΄μ Έ 보μμ€μ λν λ€λ₯΄κ² μ€μ λλ€.
[ν΄κ²°λ²]
# cd /test1
cf(vλ 보μ¬μ£ΌκΈ° μΆλ ₯μ΄κΈ°λλ¬Έμ λΉΌλ λ¨)
# tar cvf - . | (cd /test2 ; tar xvf -)
file.tarλ‘ λ°μλΌ file.tarλ₯Ό νμ΄λΌ
- μ file.tarλ‘ μ§μ ν΄λλ©΄ μλλ μ΄μ
γ΄ -λ λ°λ‘ μμΆνμΌμ λκΈ°λκ²μ΄μ§λ§, file.tarλ‘ μ§μ νλ©΄ μμΆνκ²μ
κ²½λ‘μ λμΌνλλ° μ©λμ΄ λλ°°λ‘ λ λ€. λ§μ½ μμΆκ²½λ‘μ μ©λμ΄ μλ€λ©΄ -λ‘
λ°λ‘ μμΆν΄μ κ²½λ‘μ νμ΄λ²λ¦΄ μ μλ€.
---------------------------------------------------------
- ν΄μ ν νμΌμ μλ‘ λΉκ΅ν΄μ λ€λ₯Έ μ μ μ°Ύλλ€.
(λ¨μλΉκ΅)
# find /test1 | wc -l
# find /test2 | wc -l
(μ λ°λΉκ΅)
# diff --recursive /test1 /test2
--λ‘컬백μ
--
[EX] μ΄μ체μ μ 체백μ
- λ€λ₯Έ μ©λλ‘λ μ¬μ©κ°λ₯( --exclude)
- μ 체μ λ°±μ
μ μ½μ§λ§ , μ νν λΆλΆλ§ νλ²μ λ°±μ
λ°λκ²μ μ΄λ ΅λ€.
κ·Έλ κΈ° λλ¬Έμ μ΄ λ°©λ²μ μ¬μ©νμ¬ μ μΈ λλ ν 리λ₯Ό μ§μ νμ¬ μ νλ°κΈ°κ° κ°λ₯νλ€
# tar cvzf /backup/test.tar.gz \
> --exclude=/test/dir1 \
> --exclude=/test/dir6 \
> --absolute-name /test
- μ λκ²½λ‘ νμμ΄λΌ μ΅μμ ν΄λλ‘ κ°μ νμ΄μ€μΌνλ€
[μ΄μ체μ λ°±μ
λ³Έ λ§λ€κΈ°]
# mkdir -p /RootBackup
# time tar cvzf /RootBackup/full.tar.gz \
--exclude=/proc \
--exclude=/tmp \
--exclude=/media \
--exclude=/sys \
--exclude=/run \
--exclude=/mnt \
--exclude=/RootBackup \ - μ΄κ±° μν΄μ£Όλ©΄ μμΆνμΌμ κ³μλ§λ€μ΄μ fullλλ€.
--absolute-name /
[Ex5] μΌλΆ 볡μ/ μ 체 볡μ
-볡μμμΉ ο¬ λ°±μ (μ λκ²½λ‘) -> 볡μ (cd /) ο¬ λ°±μ (μλκ²½λ‘) -> 볡μ (cd /home) -볡μλ°μ΄ν°
- (μ 체 볡μ) # tar xvzf /backup/backup.tar
- (μΌλΆ 볡μ) # tar xvzf /backup/backup.tar user01 user02/ .bashrc -- (1) λ°±μ λ°μ΄ν° μμ± βββ dir1 β βββ dir2 β β βββ dir3 β β β βββ file1 β β βββ file2 β βββ file3 βββ dir4 β βββ file4 βββ dir5 β βββ file5 βββ dir6 β βββ dir7 β β βββ file6 β βββ file7 βββ file8
2-μ 체볡μ
3-μΌλΆλ³΅μ
tar -tvf /backup/test.tar | head === μ λκ²½λ‘μΈμ§ μλκ²½λ‘μΈμ§ νμΈ!! (.μΌλ‘ μμνλ©΄ μλ)
μ격 λ°±μ
/볡ꡬ
rsync CMD
L /backup1 -> L /backup2
#rsync -a --delete /backup1/ /backup2
L /backup -> R main:/backup/server1
#rsync -az --delete -e ssh /backup/ main:/backup/server1
R main:/backup/server1 -> L /backup
#rsync -az --delete -e ssh main:/backup/server1/ /backup
[μ°Έκ³ ] $HOME/ .bashrc
alias RS='rsync -az --delete -e ssh'
alias LS='rsync -a --delete'
rsync μλ²/ν΄λΌμ΄μΈνΈ
[λ€νΈμν¬ νμΈ]
# netstat -a(all)n(new)tup(proc,pid) | grep :κ²μλ²νΈ
(rsync server)
# yum install rsync-daemon rsync
# vi /etc/rsyncd.conf
----------------------------------------
uid=nobody /* μ¬μ©μ μμ΄λ */
gid=nobody /* κ·Έλ£Ή μμ΄λ */
use chroot=no /* yes : μ§μ λ κ²½λ‘ μ΄μΈμ λ€λ₯Έ κ²½λ‘λ‘ μ μ λͺ»νκ² ν¨ */
max connections=5 /* μ΅λ μ μμ μ : 0μ 무μ νμ λνλ */
timeout=60 /* Clientμ μ μμ΄ idleμνμΌ λ μ μμ λμ΄λ²λ¦΄ μ΄ λ¨μ μκ° */
[Backup] /* rsync μλΉμ€λͺ
*/
comment=Rsync Backup Server /* rsync μλΉμ€μ λν μ€λͺ
*/
path=/backup1 /* λ―Έλ¬λ§λ λ°μ΄ν°μ κ²½λ‘ (λμνμΌκ²½λ‘) */
read only=no
----------------------------------------
# systemctl enable --now rsyncd.socket
(rsync client)
# rsync -avz --delete -e ssh server::Backup /mirror
리λ μ€ λ€νΈμν¬ /μλΉμ€/보μ κ³Όμ
------------1μ₯ λ€νΈμν¬ μ€μ ----------------
μ£Όμμ’ λ₯
- MAC (Media Access Control Address) λ€νΈμν¬ μΈκ·Έλ¨ΌνΈμ λ°μ΄ν° λ§ν¬ κ³μΈ΅μμ ν΅μ μ μν λ€νΈμν¬ μΈν°νμ΄μ€μ ν λΉλ κ³ μ μλ³μμ΄λ€.
- μ΄λλ· μμμ ν΅μ ν λ μ¬μ©νλ μ£Όμ
- IP Address μ»΄ν¨ν° λ€νΈμν¬μμ μ₯μΉλ€μ΄ μλ‘λ₯Ό μΈμνκ³ ν΅μ μ νκΈ° μν΄μ μ¬μ©νλ νΉμν λ²νΈμ΄λ€. -ipv4: 32bit 4byte 4octet 10μ§μ - 192.168.10.10 -ipv6: 128bit 16byte 8octet 16μ§μ - fe80::20c29ff:fea5:1263
- Port Address ν¬νΈ μ£Όμλ μννΈμ¨μ΄μμλ λ€νΈμν¬ μλΉμ€λ νΉμ νλ‘μΈμ€λ₯Ό μλ³νλ λ Όλ¦¬ λ¨μμ΄λ€. ν¬νΈλ λ²νΈλ‘ ꡬλ³λλ©° μ΄ λ²νΈλ₯Ό ν¬νΈ λ²νΈλΌκ³ νλ€. ν¬νΈ λ²νΈλ IP μ£Όμμ ν¨κ» μ°μ¬ ν΄λΉνλ νλ‘ν μ½μ μν΄ μ¬μ©λλ€. μλ₯Ό λ€μ΄, ftp://000.000.000.000:21 λΌλ URL μμ 맨 λ§μ§λ§μ μλ 21μ΄ ν¬νΈ λ²νΈ
NetworkManager?
- ens33(λ³κ²½κ°λ₯)= λ€νΈμν¬ μ»€λ₯μ λ²νΈ = μμ λ€νΈμν¬ μ 보λ€μ΄ λ€μ΄μλ€.
- Network interface
- connection/profile
λ€νΈμν¬ κ΄λ ¨ μ€μ νμΌλ€ * /etc/hosts μμ΄νΌ(IP)μ νΈμ€νΈ μ΄λ¦(hostname) λλ λλ©μΈ μ΄λ¦(Domain Name)μ λ§΅ν(Mapping)νλ μν μ κ°μ§λ€. * /etc/hosts.conf μ΄λ¦ μμ²(λλ©μΈ μμ², Naming Service Request)μ λλ©μΈ/μ΄λ¦ κ²μ μμλ₯Ό λνλΈλ€. * /etc/resolv.conf * /etc/sysconfig/network-scripts/ifcfg-* λ€νΈμν¬ κ΄λ ¨ λͺ λ Ήμ΄λ€ * cthtool ens33 * ip addr * ip route * cat /etc/resolv.conf * netstat -nr == ip κ²μ΄νΈμ¨μ΄ νμΈ λ€νΈμν¬ μ€μ κ΄λ ¨ ν΄ * nmcli CMD * nmcli ν΄ nm-connection-editor ν΄ nmcli general permissions : λ€νΈμν¬ κΆνμ μ΄κ΄μ μΌλ‘ λ΄
λ€νΈμν¬ μλλ¦¬μ€ μμ
* ip λ³κ²½ μμ
* nic μΆκ° μμ
* νΈμ€νΈ μ΄λ¦ λ³κ²½
* ν ꡬμ±, λ³Έλ© κ΅¬μ±
(γ±) team0
# nmcli connection add \
type team
ifname team0
con-name team0
team.runner activebackup
(γ΄) team0 (team0-portl, team0-port2)
nmcli connection add \
type etherner \
slave-type team \
ifname ens33 \
con-name team-port1 \
master team0
(γ·) team0
nmcli connection modify team0 \
ipv4.method manual \
ipv4.addresses 192.168.10.100/24 \
ipv4.gateway 192.168.10.2 \
ipv4.dns 168.126.63.1 \
ipv4.dns-search example.com
(γΉ) team0
nmcli connection up team0
(κ·Έλ°)
# nmcli connection add \
type team \
ifname team0 \
con-name team0 \
config'{"runner": {"name": "activebackup"}}'
nmcli connection add \
type etherner \
slave-type team \
ifname ens36 \
con-name team-port1 \
master team0
[λ€νΈμν¬ λ³΅μ] network μ€μ μ μμ
νκΈ° μ μνλ‘ λ리기(ens33,36)
* ens33 : ip(192.168.19.20/24), gw(192.168.10.2), dns(168.126.63.1)
* ens36 : connection/profile => x
COMMON_OPTIONS:
type <type>
ifname <interface name> | "*"
[con-name <connection name>]
[autoconnect yes|no]
[save yes|no]
[master <master (ifname, or connection UUID or name)>]
[slave-type <master connection type>]
team:[config <file>|<raw JSON data>]
team-slave:master <master (ifname, or connection UUID or name)>
[config <file>|<raw JSON data>]
IP_OPTIONS:
[ip4 <IPv4 address>] [gw4 <IPv4 gateway>]
[ip6 <IPv6 address>] [gw6 <IPv6 gateway>]
------------2μ₯ SELinuxκ΄λ¦¬----------------
SELINUX? SELINUX λͺ¨λ * enforcing * permissive * disabled
disabled <-> permissive,enforcing * disabled -> enforcing # vi /etc/selinux/config SELINUX=enforcing # reboot * enforcing -> disabled # vi /etc/selinux/config SELINUX=disabled # reboot * enforcing -> permissive # setenforce 0 # vi /etc/selinux/config SELINUX=permissive
SELINUX Context # semanage fcontext -l # semanage fcontext -a -t http_sys_contene_t '/virtual(/.*)?' # restorecon -Rv /virtual SELINUX Boolean # semanage boolean -l # semanage boolean -l -C = μ΄κΈ° ꡬμ±μνμ λΉκ΅ν΄ λ€λ₯Έ μ μ μλ €μ€ # setsebool -P httpd_enable_httpd on SELINUX port # semanage port -l = νμΈ # semanage port -a -t http_port_t -p tcp 8888 = μΆκ° SELINUX Troubleshooting (γ±) λ¬Έμ μμΈ νμ # cat /var/log/messages | grep -i preventing # sealert -l UUID == μμ ν΄κ²° λ°©λ²μ΄ μμ or # cat /var/log/audit/audit.log | grep -i 'avc: denied' # sealert -a /var/log/audit/audit.log (γ΄) λ¬Έμ ν΄κ²° λ°©λ² - μ΄ μ€μμ λ¬Έμ κ° μμ μ μλ€. * SELINUX context λ¬Έμ ν΄κ²° * SELINUX boolean λ¬Έμ ν΄κ²° * SELINUX port λ¬Έμ ν΄κ²°
-------------3μ₯ λ°©νλ²½ κ΄λ¦¬----------------
[firewalld?(nftables)] firewalldλ λμ λ°©νλ²½ κ΄λ¦¬μλ‘ nft λͺ λ Ήμ μ¬μ©νλ nftables νλ μμν¬μ λν νλ‘ νΈμνΈμ΄λ€.
(CLI) firewall-cmd CMD (alias fwcmd)
(GUI) firewall-config (firewall-config ν¨ν€μ§(λ€μ΄λ‘λ))
firewall-cmd CMD
# firewall-cmd --permanent --add-service=http --add-service=https
# firewall-cmd --permanent --add-port=1521/tcp
# firewall-cmd --reload (alias fwreload)
[λ¦¬μΉ κ·μΉ]
κ°λ¨ν λ°©νλ²½ μ€μ μ μμ fwcmd λ‘ λ±λ‘νλ©΄ λμ§λ§ μ¬λ¬κ°μ§ μ€μ μ΄ νμνλ€λ©΄
λ¦¬μΉ κ·μΉμ μ¬μ©νμ¬ μ€μ νλκ²μ΄ μ 리νλ€.
# firewall-config λ‘ μ€μ νλκ²μ΄ μ’λ€.
-------------4μ₯ DNS Server--------------
- dns μλ²μ μν = μ΄λ¦κ³Ό ipλ₯Ό λ§€μΉμμΌμ£Όλ μν μ μννλ€.
- λ€μ΄λλ―Ή dns = μ격μλ²μμ nsupdateλ₯Ό ν΅ν΄ dns μ€μ μ μ격μΌλ‘ λ°κΎΈλκ²
- μΊμ±= μ 보λ₯Ό μμλ‘ λ³΄κ΄νλκ²
- νλ‘κ·Έλ¨: bind. bind-urills
- λ°λͺ¬ & ν¬νΈ.νλ‘ν μ½: named(53/tdp, 53/tcp)
- μ€μ νμΌ: /etc/named,conf/ (/etc/named.rfc1912.zones)
- μλΉμ€ μ€μ νμΌ : /var/named*
[μ€μ΅] μ΄κΈ° λλ©μΈ κ΄λ¦¬ -/etc/hosts
λλ©μΈ μ€μ μ λ¬Έμ νμΈ
cat /etc/resolv.conf μ ipμ£Όμ νμΈ 1. nameserverμ ipκ° λ€λ₯Έκ²½μ° nmtuiλ‘ eth0μ dns ipμ£Όμλ₯Ό λ°κΎΌλ€ λ°©νλ²½ 리μ€νΈλ‘ νμΈ systemctl status namedλ‘ νμΈ
dnssec : λ°μ΄ν°μ μλ³μ‘°λ₯Ό λ°©μ§νκΈ° μν μλ¨μΌλ‘ μ¬μ©λλκ² γ΄ μ¬μ©νλ κΈ°μ : 곡κ°ν€ μνΈν , μλͺ λ°©μ
λλ½
----------5μ₯ Apache web Server----------
- μΉμλ²: μ μ 컨ν μΈ λ₯Ό μ 곡 (jpg,ntw) ex= apache httpd
- Web Application Server: λμ 컨ν μΈ μ 곡 ( .jsp , .asp) =tomcat
β νλ‘κ·Έλ¨: httpd, mod_ssl
β λ°λͺ¬ & ν¬νΈ & νλ‘ν μ½: httpd(80/tcp, 443/tcp)
β μ€μ νμΌ: /etc/httpd/conf/httpd.conf
β νμ μ€μ νμΌ: /etc/httpd/conf.d/*.conf
β μλΉμ€: httpd.service
- ν¨ν€μ§ μ€μΉ
- μλΉμ€ ꡬμ€
3.μλΉμ€ κΈ°λ #systemctl enable --now http.service 4. λ°©νλ²½ λ±λ‘ # firewall-cmd --permanent --add-service={http,https} # fwreload --------------------μΉμλ² μ¬μ©--------------------- [μ€μ΅] μ΄κΈ° μΉμλ² μ€μ μ κ² # firefox https://www.example.com = httpsλ‘ λΆλ¬μμ μΈμ¦μ κ³Όμ μ κ±°μΉ¨ # curl -k http://www.example.com = ν°λ―Έλλ‘ λΆλ¬μμ νμΈ -kλ μΈμ¦μκ° μμ΄ λ°μνλ μνμ κ°μνκ³ μ€ννλ€λ λͺ λ Ήλ¬Έ # curl -I http://www.example.com = ν€λμ λ³΄λ§ νμΈνκΈ° μν λͺ λ Ήμ΄
[μ€μ΅] κ΄λ¦¬μ μΉμλ² κ΅¬μΆ(www.example.com) * /etc/httpd/conf/httpd.conf{ServerAdmin, ServerName}
[μ€μ΅] ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨ μ¬μ© *curl, firefox λ§ν¬λ‘ μ¬μ©
[μ€μ΅] CGI μ¬μ© =β’ μΉμλ²μ ν΄λΌμ΄μΈνΈκ°μ νμν μ 보 κ΅νμ κ°λ₯νκ² ν΄μ£Όλ μΉμΈν°νμ΄μ€.
[μ€μ΅] μ¬μ©μ μΉμλ² κ΅¬μΆ(www.example.com/~user01) # vi /etc/httpd/conf.d/userdir.conf(UserDir public_html) $ chmod 711 /home/user01/ = user01μ κΆνμ λ³κ²½ν΄μ€μΌ λ°μμ λ΄ $ mkdir /home/user01/public_html $ echo 'User01WebPage' > /home/user01/public_html/index.html
[μ€μ΅] μ¬μ©μ μΉμλ² κ΅¬μΆ2(www.example.com/~user01) # /etc/httpd/conf/http.conf(Alias /user01 /home/user01/public_html)
(*) Apache Web Server μ€ν (νμ¬) # systemctl start|stop|restart|status httpd.service (λΆν ) # systemctl enable|disable httpd.service
[μ€μ΅] CGI μ€μ - bash shell μ¬μ© * /etc/httpd/conf.d/vhost.conf(scriptAlias /cgi-bin/ /vhost.conf)
[μ€μ΅] CGI μ€μ - perl μ¬μ© # yum install mod_perl(epel-release) * /etc/httpd/conf.d/perl.conf
[μ€μ΅] PHP μ¬μ© # yum -y install php * /etc/httpd/conf.d/php.conf
[μ€μ΅] .htaccess - μΉνμ΄μ§ λ³΄νΈ * /etc/httpd/conf.d/vhost.conf(AllowOverride AuthConfig * /www1/cgi-bin/.htaccess * htpasswd -c /etc/httpd/passwd webmaster
[μ€μ΅] κ°μνΈμ€νΈ (virtual Hosting) -νλμ μΉμλ²μ μ¬λ¬κ°μ μΉμλ²λ₯Ό λ§λλκ² (γ±) μ΄λ¦ κΈ°λ° κ°μ νΈμ€ν (Name-based Virtual Hosting) (γ΄) ν¬νΈ κΈ°λ° κ°μ νΈμ€ν (port-based Virtual Hosting) (γ·) IP κΈ°λ° κ°μ νΈμ€ν (IP-based Virtual Hosting)
[μ€μ΅] μΉμλ² μ 보/μν/ν΅κ³ λͺ¨λν°λ§ * 1) μ 보 => http://www.example.com/server-info * 2) μν => http://www.example.com/server-status * 3) ν΅κ³ => http://www.example.com/usage * webalizer (/etc/webalizer.conf) * /etc/httpd/conf.d/webalizer.conf
[μ€μ΅] μΉ μ€νΈλ μ€ ν΄ = webstress tool
μΉμλ²μ μ 보λ₯Ό νμΈνλ μ¬μ΄νΈ : https://sitereport.netcraft.com/
[μ€μ΅] λ²μ μ₯λ²/OS μ 보 μ¨κΈ°κΈ° * /etc/httpd/conf.d/default.conf(servertoken prod)
[μ€μ΅] ATJM(Apache + tomcat + hsp +MariaDB) Apache|nginnx|IIS - Tomcat|JBoss - MYSQL/MariaDB/PostgreSQL
[보μ] * μΉ λ°©νλ²½ (WAF) * modsecurity # yum install mod_security # yum install mod_security_crs # systemctl restart httpd * μΉ μ·¨μ½μ λ¬΄λ£ μ κ² μλΉμ€
[μ°Έκ³ ] Apache - Tomcat μ μ°λνλκ°? (γ±) λΆν λΆμ° (γ΄) ν΄λ¬μ€ν°(μΈμ ν΄λ¬μ€ν°) - μ₯μ μ²λ¦¬ (γ·) μνμΉ μΉμλ²μ 보μ κΈ°λ₯ λ° μΆκ° κΈ°λ₯ μ¬μ©
-------------------[μ°Έκ³ ] ν΄λΌμ΄μΈνΈ μͺ½μμ νμΈ λ°©λ² -------------------- # ping 192.168.10.30 -c 1 -> server2 alive νμΈ # nmap -p 80,443 192.168.10.30 -> server2 firewall μ€μ # firefox http://192.168.10.30 -> httpd.service κΈ°λ/μ€μ # curl http://www.example.com -> dns μ€μ
μνμΉ HTTP μΉμλ² μ€μ λ° λ³κ²½κ³Ό NGINX μ€μ λ° κ΅¬μ± https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/deploying_different_types_of_servers/setting-apache-http-server_deploying-different-types-of-servers
----------6μ₯ FTP Server----------
β νλ‘κ·Έλ¨: vsftpd, ftp
β λ°λͺ¬ & ν¬νΈ & νλ‘ν μ½: /usr/sbin/vsftpd, 21/tcp, 20/tcp, 1024/tcp μ΄μ
β μ£Ό μ€μ νμΌ: /etc/vsftpd/vsftpd.conf
β νμ μ€μ νμΌ: /etc/vsftpd/{user_list, ftpusers}
β μλΉμ€: vsftpd.service
β vsftpd κ΄λ ¨ νμΌλ€
νμΌ μ’ λ₯ μ€λͺ /etc/vsftpd/vsftpd.conf = vsftpd νλ‘κ·Έλ¨μ μ£Ό μ€μ νμΌ /etc/vsftpd/ftpusers = vsftpd μλ²μ μ μν μ μλ μ¬μ©μ μ μ /etc/vsftpd/user_list = vsftpd μλ²μ μ μν μ μλ μ¬μ©μ μ μ /var/ftp = Anonymous FTP μ¬μ©μλ₯Ό μν λλ ν 리
--------------ftp μλ²κ΅¬μ±μ μ°¨--------------------------
- ν¨ν€μ§ μ€μΉ
- μλΉμ€ ꡬμ±
3.μλΉμ€ κΈ°λ #systemctl enable --now vsftpd.service 4. λ°©νλ²½ λ±λ‘ # firewall-cmd --permanent --add-service=ftp # fwreload
[μ€μ΅] μ΄κΈ° ftp μλ² μ€μ μ κ² [μ€μ΅] vsftpd FTP server κ΅¬μΆ [μ€μ΅] ftp μλ² μ¬μ©μ μ κ·Ό μ μ΄ */etc/vsftpd/{ftpusers,user_list} [μ€μ΅] ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨ [μ€μ΅] μΈμ νμ μμ μ€μ * idle_session_timeout=9000 * data_connection_timeout=9000 [μ€μ΅] μΌλ° μ¬μ©μ chroot κ΅¬μ± * chroot_local_user=YES * allow_writeable_chroot=YES * chroot_list_enable=YES * chroot_list_file=/etc/vsfrpd/chroot list * echo 'root' >> /etc/vsfrpd/chroot list [μ€μ΅] μ΅λͺ ftx enable=YES anonymos enable=YES
[μ€μ΅] μ΅λͺ ftp μ λ‘λ κΈ°λ₯ μ€μ * /var/ftp/pub/incoming(603) 3 --- μ‘Έμμ μ΄ λΆλΆ νκΈ° λͺ»ν¨---
[보μ] FTP 보μ * μ κ·Ό μ μ΄ * νΈμ€νΈ μ κ·Ό μ μ΄ -> firewalld * μ¬μ©μ μ κ·Ό μ μ΄ -> /etc/vsfrpd/{user_list. ftpusers} *userlist_deny=NO, /etc/vsfrpd/user_list * μμ μ μ΄ * max_clients, max_per_ip * idle_session_timeout , data_connection_timeout * ν¨ν€μ§ μ λ°μ΄νΈ/ν¨μΉ * yum update vsfrpd * chroot κ΅¬μ± * ftp -> sftp/ftps * ftp ν¬νΈ
- ftp ν¬νΈ -active mode -Passive Mode
- ftp λ‘κ·Έ νμΈ λͺ λ Ήμ΄: tail -f /var/log/xferlog -λ€μ΄λ‘λμ λν΄ tail -f /var/log/secure - μΈμ¦μ λν΄
----------7μ₯ Mail Server----------
- μ©μ΄:
- MTA , MUA
- SMTP/ESMTP(λ©μΌ 보λΌλ) / POP3, IMAP4 (λ©μΌ λ°μλ)
MAIL(sendmail) Server β ν¨ν€μ§: sendmail β λ°λͺ¬ & ν¬νΈ & νλ‘ν μ½: /usr/sbin/sendmail, 25/tcp, 465/tcp β μ£Ό μ€μ νμΌ: /etc/mail/sendmail.cf β μλΈ μ€μ νμΌ: /etc/mail/*, /etc/aliases β μλΉμ€: sendmail.service
POP3/IMAP4(dovecot) Server
β ν¨ν€μ§: dovecot
β λ°λͺ¬ & ν¬νΈ & νλ‘ν μ½: /usr/sbin/dovecot, 110/tcp, 143/tcp, 995/tcp, 993/tcp
β μ€μ νμΌ: /etc/dovecot/dovecot.conf
β μ€ν¬λ¦½νΈ: dovecot.service
--------------POP3/IMAP(postfix) Mail(sendmail) μλ²κ΅¬μ±μ μ°¨-------------------------- ------Mail(sendmail)------
- ν¨ν€μ§ μ€μΉ
- μλΉμ€ ꡬμ±
3.μλΉμ€ κΈ°λ #systemctl enable --now sendmail.service 4. λ°©νλ²½ λ±λ‘ # firewall-cmd --permanent --add-service={smtp,smtps} # fwreload
---POP3/IMAP(postfix)------
- ν¨ν€μ§ μ€μΉ
- μλΉμ€ ꡬμ±
3.μλΉμ€ κΈ°λ #systemctl enable --now dovecot 4. λ°©νλ²½ λ±λ‘ # firewall-cmd --permanent --add-service={pop3,pop3s,imap,imaps} # fwreload
[μ€μ΅] μ΄κΈ° mail (sendmail) μλ² μ€μ μ κ² [μ€μ΅] μ΄κΈ° POP3/IMAP(dovecot) μλ² μ€μ μ κ²
(1) (main) example.com λ©μΌ ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨(EX: evolution μ¬μ©) β’ 192.168.10.10μμ μ€μ νλ€. β’ (μ£Όμ) root μ¬μ©μλ‘ ν μ€νΈ νμ§ μκ³ , μΌλ° μ¬μ©μ(EX: user01)λ‘ ν μ€νΈ νλ€. -> Evolution νλ‘κ·Έλ¨μ ν΅ν΄ μ€μ νλ€.
β νλ‘κ·Έλ¨ μ€μΉ
β‘ νλ‘κ·Έλ¨ μ€ν Linux Pannel > Application > Office > Email or
β Welcome νλ©΄ -> Next β Restore from backup νλ©΄ -> Next β Identity νλ©΄ -> Required Information Full Name : user01 Email Address : user01@example.com -> Next β Receiving Email νλ©΄ -> Server Type: POP -> Configuration Server: mail.example.com Username: user01 -> Next β Receiving Options νλ©΄ -> Next β Sending Email νλ©΄ -> Server Type: SMTP -> Server : mail.example.com -> Next β Account Summary νλ©΄ -> Next β Done νλ©΄ -> Apply
μ볼루μ (evolution) > νΈμ§(Edit) > κΈ°λ³Έ μ€μ (Preferences) > λ©μΌ κ³μ (Mail Account) μ¬μ©μ μμ λ³κ²½: [v] user01@example.com [v]κΈ°λ³Έκ° [v] μ΄ μ»΄ν¨ν° [v] κ²μν΄λ
[μ€μ΅] Squirrelmail (λ€λμ₯ λ©μΌ) μΉμλ²μ νμμΌλ‘ λ©μΌμ 보λ΄κ³ λ°μ μ μκ² λ³΄μ¬μ£Όλκ²μ΄μ§ μ§μ λμνλκ²μ΄ μλλ€.
- [μ€μ΅x] Anti-SPAM(spamassessin)
- [μ€μ΅x] Anti-Virus
νμΌ λ°μ΄λ¬μ€ νμΈ: https://www.virustotal.com/gui/home/upload
----------8μ₯ NFS Service----------
NFS λ²μ : NFSnv, NFSv4(4/0, 4.2) NFS λ°λͺ¬: nfs, mountd NFS νμΌ: (server) /etc/exports / (client) /etc/fatab NFS λͺ λ Ή (server) exportfs CMD / (Client)showmount ,CMD mount CMD
-------------------NFS V4 server-------------------------------------- β νλ‘κ·Έλ¨: nfs-utils β λ°λͺ¬ & ν¬νΈ & νλ‘ν μ½:nfs(2049/tcp) β μ£Ό μ€μ νμΌ: /etc/exports β νμ μ€μ νμΌ: /etc/exports.d/*.exports β μλΉμ€: nfs-server.service
-NFS server
- ν¨ν€μ§ μ€μΉ
- μλΉμ€ ꡬμ±
3.μλΉμ€ κΈ°λ #systemctl enable --now nfs-server 4. λ°©νλ²½ λ±λ‘ # firewall-cmd --permanent --add-service={nfs,rpc-bind,mountd} # fwreload
-------9μ₯ SMB/CIFS Server------
- CIFS = SMB + NetBIOS
- SMB κ΄λ ¨ λͺ λ Ή: (Server) (Client) SMB client CMD
β νλ‘κ·Έλ¨: samba, samba-clinet, cifs-utils β λ°λͺ¬ & ν¬νΈ : smbd(139/tcp, 445/tcp), nmbd(137/udp, 138/udp) β μ£Ό μ€μ νμΌ: /etc/samba/smb.conf β μλΉμ€: smb.service, nmb.service, winbind.service
-samba μλ² κ΅¬μ± μ μ°¨
- ν¨ν€μ§ μ€μΉ
- μλΉμ€ ꡬμ±
3.μλΉμ€ κΈ°λ #systemctl enable --now smb nmb 4. λ°©νλ²½ λ±λ‘ # firewall-cmd --permanent --add-service=samba # fwreload
# testparm -v = μ’ λ μμΈν μΆλ ₯! κΈ°λ³Έκ°μ νμΈ ν λ μ¬μ©νλ€.
# testparm -s -v = -sλ μ€κ°μ μν°λ₯Ό μΉλ κ³Όμ μ μλ΅ν¨! μ£Όλ‘ μ΄κ±° μ!!
# testparm -sv | sed '/homes/,$d'
# testparm -sv | sed '/homes/,$d'| grep -i 'read only'
β’ valid users = 곡μ λλ ν 리μ μ κ·Ό ν μ μλ μ¬μ©μ λͺ©λ‘ β’ write list = 곡μ λλ ν 리μ rw κΆνμ΄ κ°λ₯ν μ¬μ©μ λͺ©λ‘
----------------------smb μ¬μ©μ λ§λ€κΈ°--------------------------- # useradd -M -s /sbin/nologin smbuser1 # useradd -M -s /sbin/nolgoin smbuser2
(SMB μ¬μ©μ μΆκ°/μμ ) # smbpasswd -a|-x smbuser1
(SMB μ¬μ©μ νμ±/λΉνμ±)# smbpasswd -e|-d smbuser1
--------------------리λ μ€μμ μλμ°λ‘ νμΌ κ³΅μ νμΈ---------------------------- (λλ²μ§Έ λ°©λ²) λ°ννλ©΄μμ νμΈνκΈ° -> "root's Home" μμ΄μ½ λλΈν΄λ¦ -> μλ‘ λ¬ 'root' μ°½μμ 'Other Locations' λΆλΆ μ ν -> "Connect to Server" λΆλΆμ 'Enter server address...' λ€μμ μ λ ₯ smb://192.168.10.202/ -> 곡μ λ μμμ΄ λ³΄μΌκ²μ΄λ€. 곡μ λ μμ μ€ samba_share μ ννκ³ μ°ν΄λ¦ νκ³ mount μ ν
[μ 리] (γ±) 리λ μ€ κ³΅μ (/samba) ο------mount------ο μλμ° λ§μ΄νΈ *μμλ§μ΄νΈ: <win + E> νμΌ νμκΈ° μ΄μ΄μ μ μ£Όμμ°½μ \μλμ£Όμ λ₯Ό μ λ ₯νλ©΄ μ μ λ¨. γ΄ μ΄λ μ¬λΆν νλ©΄ λ λΌκ°λ μμμ μΈ λ°©νΈ *μꡬλ§μ΄νΈ: μλ μ£Όμλ‘ μ μνμ¬ κ³΅μ ν΄λλ₯Ό μ°ν΄λ¦ νμ¬ λ€νΈμν¬ νμΌ κ³΅μ λ₯Ό μ νν΄μ€λ€
(γ΄) μλμ° κ³΅μ (/samba) ο------mount------ο 리λ μ€ λ§μ΄νΈ *μμλ§μ΄νΈ:
Or
*μꡬλ§μ΄νΈ:
# mkdir βp /mnt/share
# vi /etc/fstab
# //192.168.10.202/samba_share /mnt/server cifs credentials=/root/cred 0 0
# mount a
β‘ κ·Έλ£Ή μΆκ° λ° κ³΅μ λλ ν 리 μ€μ
(μ ν μμ ) β ν¨ν€μ§ μ€μΉ
[μ€μ΅] μ΄κΈ° smb/cifs μλ² μ€μ μ κ² [μ€μ΅] 리λ μ€ κ³΅μ μλ²μ μλμ° ν΄λΌμ΄μΈνΈ μ κ·Ό [μ€μ΅] μλμ° κ³΅μ μλ²μ 리λ μ€ ν΄λΌμ΄μΈνΈ μ κ·Ό [μ€μ΅] 리λ μ€ κ³΅μ μλ²μ 리λ μ€ ν΄λΌμ΄μΈνΈ μ κ·Ό
-------10μ₯ Log server------
-
μμ / λ‘κ·Έ λͺ¨λν°λ§
-
μμ€ν κΈ°λ³Έ λ‘κ·Έ νμΌλ€
- OS κΈ°λ‘: /var/log/messages /var/log/secure, /var/log/boot.log /var/log/{wtmp,btmp}
- μλΉμ€ κΈ°λ‘ : dns /var/log/messages web /var/log/httpd/* ftp /var/log/xferlog
-
rsyslog μ²΄κ³ (/etc/rsyslog.conf) - 리λ μ€κ° κΈ°λ‘μ λ¨κΈ°λ 체κ³
-Log server β rsyslog μλ²μ λν΄μ β ν¨ν€μ§: rsyslog β λ°λͺ¬ & ν¬νΈ & νλ‘ν μ½: rsyslogd(514/tcp, 514/udp) β μ£Ό μ€μ νμΌ: /etc/rsyslog.conf β λΆ μ€μ νμΌ: /etc/rsyslog.d/*.conf β μλΉμ€: rsyslog.service
-log server μλ² κ΅¬μ± μ μ°¨
- ν¨ν€μ§ μ€μΉ
- μλΉμ€ ꡬμ±
3.μλΉμ€ κΈ°λ #systemctl enable --now rsyslog 4. λ°©νλ²½ λ±λ‘ # firewall-cmd --permanent --add-port={514/tcp,514/udp} # firewall-cmd --permanent --add-service=syslog-tls # fwreload
[μ€μ΅] μ΄κΈ° λ‘κ·Έ μλ² μ€μ μ κ² [μ€μ΅] κΈ°λ³Έ λ‘κ·Έ νμΌ(μΈμ¦λ‘κ·Έ κΈ°λ‘, /var/log/secure) [μ€μ΅] κΈ°λ³Έ λ‘κ·Έ νμΌ(λ©μΌλ‘κ·Έ κΈ°λ‘, /var/log/maillog) [μ€μ΅] κΈ°λ³Έ λ‘κ·Έ νμΌ(μ€μΌμ€λ¬ κΈ°λ‘, /var/log/cron) [μ€μ΅] μλ‘μ΄ λ‘κ·Έ νμΌ(/var/log/file.log) * μ μ€ν¬λ¦½νΈλ₯Ό μ¬μ©ν λ‘κ·Έ μμ± * rsyslog 체κ³λ₯Ό μ¬μ©ν λ‘κ·Έ μμ± (logger CMD) [μ€μ΅] λ‘κ·Έ μλ² κ΅¬μΆ 1/2 [μ€μ΅] visutl syslog μλ² μ€μΉ [μ€μ΅] evenrlog-to-syslog μ€μΉ [μ€μ΅] graylog server μ€μΉ * graylog server * Elasticsearch * mongoDB [μ€μ΅] λ‘κ·Έ νμΌ κ΄λ¦¬ * OS κΈ°λ‘ (λ‘κ·Έ νμΌμ΄λ¦μ΄ κ³ μ λμ΄ μλ κ²½μ°) -> logrotate * μλΉμ€ κΈ°λ‘ (λ‘κ·Έ νμΌμ΄λ¦μ΄ κ³ μ λμ΄ μμ§ μμ κ²½μ°) -> find + crontab [μ€μ΅] λ‘κ·Έ νμΌ λΆμ * λ©μΈμ§μ λμ΄λ λ³λ‘ νμΈμ΄ κ°λ₯νλ€. γ΄ cat file.log | egrep -i '(warn|error|fail|crit|alert|emerg) * λ©μμ§ μκ° ( cat file.log | egrep 'Feb 21 1[0-2]:') * λ©μμ§ μμ± μ£Όμ²΄ * λ©μμ§ μμ± μλ² * λ¨μ΄ κ²μ¬ .... [μ€μ΅] system journal /etc/systemd/journald.conf -> /run/log/journal -> /var/log/journal journalctl CMD # journalctl -p warning # journalctl --since ... until ... # journalctl -u named -f # journalctl -o verbose * μ λ μꡬ μ μ₯ μ€μ # vi /etc/systemd/journal.conf Storage=p
29νμ΄μ§ νλ€ λ§ Enter Password: admin 8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918
[root@main ~]# pwgen -N 1 -s 96 5OPoSXI9YoyzGWAez7kXa4ud3uKPpFAhWQa9e2jmLY8qnlSS8qtC4V4ENcJNo3looiaLFAPfwakvz4xmeBIJt9PWq4uR3sAX
-------11μ₯ DHCP Server------
DHCP Server β ν¨ν€μ§: dhcp-server , dhcp-client β λ°λͺ¬ & ν¬νΈ & νλ‘ν μ½: dhcpd(67/udp) β μ£Ό μ€μ νμΌ: /etc/dhcp/dhcpd.conf β μλΉμ€: dhcpd.service
-dhcp server μλ² κ΅¬μ± μ μ°¨
- ν¨ν€μ§ μ€μΉ
- μλΉμ€ ꡬμ±
3.μλΉμ€ κΈ°λ #systemctl enable --now dhcpd 4. λ°©νλ²½ λ±λ‘ # firewall-cmd --permanent --add-port={dhcp,dhcp-client,dhcpv6} # fwreload
[μ€μ΅] μ΄κΈ° μλ² μ€μ μ κ² [μ€μ΅] DHCP μλ² κ΅¬μ± [μ€μ΅] DHCP ν΄λΌμ΄μΈνΈ 리λ μ€ (λμ ip) [μ€μ΅] DHCP ν΄λΌμ΄μΈνΈ μλμ° (λμ ip) [μ€μ΅] DHCP ν΄λΌμ΄μΈνΈ 리λ μ€ (κ³ μ ip)
-------12μ₯ OpenSSH Server------
SSH Server β νλ‘κ·Έλ¨: openssh, openssh-clients, openssh-askpass, openssh-server β λ°λͺ¬ & ν¬νΈ & νλ‘ν μ½: sshd(22/tcp) β μ£Όμ€μ νμΌ: /etc/ssh/sshd_config(sshd), /etc/ssh/ssh_config(ssh CMD) β μλΉμ€: sshd.service β sshd(22) : ssh/scp/sftp
-dhcp server μλ² κ΅¬μ± μ μ°¨
- ν¨ν€μ§ μ€μΉ
- μλΉμ€ ꡬμ±
3.μλΉμ€ κΈ°λ #systemctl enable --now sshd.service 4. λ°©νλ²½ λ±λ‘ # firewall-cmd --permanent --add-port=ssh # fwreload
[μ€μ΅] root μ¬μ©μμ λν password authentication * /etc/ssh/sshd_config -permitRootLogin yes -passwordAuthentication yes [μ€μ΅]
λλ½
-------13μ₯ OpenSSH Server------
NTP Server β ν¨ν€μ§: chrony β λ°λͺ¬ & ν¬νΈ & νλ‘ν μ½: chronyd(123/udp) β μ£Όμ€μ νμΌ: /etc/chrony.conf β μλΉμ€: chronyd.service
-dhcp server μλ² κ΅¬μ± μ μ°¨
- ν¨ν€μ§ μ€μΉ
- μλΉμ€ ꡬμ±
3.μλΉμ€ κΈ°λ #systemctl enable --now chronyd.service 4. λ°©νλ²½ λ±λ‘ # firewall-cmd --permanent --add-port=ntp # fwreload
[μ€μ΅] μ΄κΈ° μλ² μ€μ μ κ² [μ€μ΅] NTP μλ² κ΅¬μ± - main [μ€μ΅] NTP ν΄λΌμ΄μΈνΈ κ΅¬μ± -server1 [μ€μ΅] NTP ν΄λΌμ΄μΈνΈ κ΅¬μ± -server2 [μ€μ΅] μκ° λκΈ°ν μ€μ΅
-------14μ₯ MariaDB λ°μ΄ν°λ² μ΄μ€------
MariaDB Server β ν¨ν€μ§: mariaDB, mariaDB-server β λ°λͺ¬ & ν¬νΈ & νλ‘ν μ½: mtsqld(3306/tcp) β μ£Όμ€μ νμΌ: /etc/my.cnf β μλΈ μ€μ νμΌ: /etc/my.cnf.d/*.cnf β μλΉμ€: mariadb.service
-dhcp server μλ² κ΅¬μ± μ μ°¨
- ν¨ν€μ§ μ€μΉ
- μλΉμ€ ꡬμ±
3.μλΉμ€ κΈ°λ #systemctl enable --now mariadb.service 4. λ°©νλ²½ λ±λ‘ # firewall-cmd --permanent --add-service=mysql # fwreload 5. μ΄κΈ° 보μ μ€μ # mysql_secure_installation # mysql -u root -p 6. SELinux(?)
[μ€μ΅] μ΄κΈ° μλ² μ€μ μ κ² [μ€μ΅] DB κ΄λ¦¬ [μ€μ΅] Table κ΄λ¦¬ [μ€μ΅] DB TABLE κ΄λ¦¬
----ISCSI Target/Initiator-------
-------------------------μ©μ΄ μ μ---------------------------- β (μ§λ¬Έ1) κ°λ³ iSCSI λμ(target) λ° μ΄λμμμ΄ν°(initiator)λ₯Ό μλ³νκΈ° μν κ³ μ ν μ΄λ¦μ 무μμΈκ°? IQN
β (μ§λ¬Έ2) κ°λ³ νμ΄λ² μ±λ(Fibre Channel) ν¬νΈ λ° λ Έλλ₯Ό μλ³νκΈ° μν κ³ μ ν λ²νΈλ 무μμΈκ°? WWN
β (μ§λ¬Έ3) iSCSI μλ²μ μ€ν λ¦¬μ§ λ¦¬μμ€λ 무μμΈκ°? νκ²
β (μ§λ¬Έ4) iSCSI μλ²μ μ€ν λ¦¬μ§ λ¦¬μμ€ λΈλ‘ μ₯μΉλ 무μμΈκ°? LUN
β (μ§λ¬Έ5) μννΈμ¨μ΄ λλ νλμ¨μ΄μ ꡬνλ iSCSI ν΄λΌμ΄μΈνΈλ 무μμΈκ°? Initiator
β (μ§λ¬Έ6) λ¨μΌ iSCSI μ΄λμμμ΄ν° λλ λμμ 무μμΈκ°? node
ISCSI Target β ν¨ν€μ§: targetcli β λ°λͺ¬ & ν¬νΈ: iscsid(3260/tcp) β μ£Όμ€μ νμΌ: /etc/target/saveconfig.json β μλΈ μ€μ νμΌ: /etc/iscsi/initiatorname.iscsi (μ΄λμμμ΄ν°μ μ΄λ¦λ€) β μλΉμ€: target.service
ISCSI Initiator β ν¨ν€μ§: iscsi-initiator-utils β λ°λͺ¬ & ν¬νΈ: iscsid β μ£Όμ€μ νμΌ: /etc/iscsi/iscsi.conf β μλΈ μ€μ νμΌ: /etc/iscsi/initiatorname.iscsi (μ΄λμμμ΄ν°μ μ΄λ¦λ€) β μλΉμ€: iscsid.service
**ISCSI Target Configuration
-ISCSI Targe μλ² κ΅¬μ± μ μ°¨
- ν¨ν€μ§ μ€μΉ
2.μλΉμ€ κΈ°λ #systemctl enable --now targetcli.service 3. μλΉμ€ κ΅¬μ± μμμμ± #targetcli >exit 4. λ°©νλ²½ λ±λ‘ # firewall-cmd --permanent --add-service=iscsi-target # fwreload 5. SELinux(?)
**ISCSI Initiator Configuration
-ISCSI Initiator μλ² κ΅¬μ± μ μ°¨
- ν¨ν€μ§ μ€μΉ
2.μλΉμ€ κΈ°λ # vi /etc/iscsi/initiatorname.iscsi # systemctl enable --now iscsid.service 3. κ²μ # iscsiadm -m discovery -t st -p 192.168.10.20 4. λ‘κ·ΈμΈ # iscsiadm -m node -T IQN -p PORTAL -l 5. μμ # lsblk μ λΉν μμ 6. SELinux(?)
-targetcliμ ν΅ν λ§μ΄νΈ κ΅¬μ± κ΅¬μ‘° /dev/sdf νν°μ νμΌμμ€ν λ§μ΄νΈ
/dev/sdg, /dev/sdh νν°μ PV->VG->LV νμΌμμ€ν λ§μ΄νΈ
-------μμ€ν¬λ¦½νΈ μ€μ΅νκ²½ ꡬμΆ----------
---------λ°°μ μ νλ‘κ·Έλλ°-----------
-
μ μ μ§μ
-
λͺ λ Ήμ΄ grep CMD # grep OPTIONS PARRERNS file1 OPTIONS: -i, -v ,-l , -n, -r, -w PARRERNS: * . ^root root$ [abc] .... sed CMD p cmd) # sed -n '1,3p' /etc/host d cmd) # sed ;'1,3d' /etc/host s cmd) # sed -i '/main/s/192.168.10.10/192.168.10.20/' /etc/host
awk CMD # awk 'statement {action}' νμΌμ΄λ¦ # awk -F: '$3 >= 1000 && $3 <= 60000 {print $1}' /etc/passwd # df -h / | tail -1 | awk '{print $6}' | awk -F% '{print $1}' # ifconfig eth0 | grep inet | grep -v inet6 | awk '{print $2}' | awk -F: '{print $2}' # ps -elf | awk '$2 == "Z" {print $0}' + CMD(cut cmd ...) μ μ΄(sort) μ μ΄ - μ€λ³΅λκ²μ νλλ‘λ§ νμ # sort -u file1
μ μ΄ - μ€λ³΅λλ κ²λ§ νμ # sort file1 | uniq -d μ μ΄ - μ€λ³΅λ μλκ²λ§ νμ # sort file1 | uniq -ucut λͺ λ Ήμ΄ - νλλ₯Ό μλΌλ΄λ μν λ‘ λ§μ΄ μ¬μ© # cut -c1-5 /etc/hosts - λ¬Έμ κ° μ€μ μ 1~5μλ¦¬λ§ νν # cat /etc/hosts | tr '[a-z]' '[A-Z]' γ΄ μλ¬Έμλ₯Ό λλ¬Έμλ‘ λ°κΏμ μΆλ ₯ # cat /etc/hosts | egrep -v '(^$|^#)' | cut -f 1 # cut -d ":" -f 1 /etc/passwd (# awk -F: '{print $1}' /etc/passwd) # ifconfig eth0 | grep 'inet addr:' | awk '{print $2}' | cut -d":" -f2
paste λͺ λ Ήμ΄ - λ€μμ νμΌμ νλ²μ λ³Όλ μμΌλ‘ μ λ ¬ν΄μ μΆλ ₯ # paste file1 file2
wc λͺ λ Ήμ΄ # wc /etc/passwd
-
μμ νΉμ± β 리λ€μ΄λ μ (Redirection) : < << > >> 2> 2>> # cat < /etc/passwd - λ΄μ©μ μΆλ ₯ # cat > file1 - νμΌμ λ΄μ©μ μ§μ μ λ ₯νμ¬ μμ± (λ§μ§λ§ ctl+d)
β νμ΄ν(pipe) : | νμ΄ν λͺ λ Ήμ΄ νμ # CMD | more # CMD | grep rsyslogd # CMD | CMD β μ μ체μ κΈ°λ₯(bash function) : set -o vi β λ³μ(Variable) : export VAR=5 λ³μμ μ’ λ₯ - μ§μλ³μ(# VAR=5) - νκ²½λ³μ(# export VAR=5) - νΉμλ³μ($$,
$?, $ !, $*, $1, $2, ....)λ³μ μ μΈ λ°©λ²(env/set) (μ μΈ) # VAR=5 (# export VAR=hello) # export VAR (νμΈ) # echo $VAR (# printf $VAR) $$ : νμ¬ μμ PID λ²νΈ μ μ₯(EX: μμ νμΌ μμ±, /tmp/.tmp.$$) $! : λ°λ‘ μ΄μ μνλ λ°±κ·ΈλΌμ΄λ νλ‘μΈμ€μ PID λ²νΈ μ μ₯ $? : λ°λ‘ μ΄μ μνλ λͺ λ Ήμ΄μ return value μ μ₯(0 ~ 255) $* : λͺ¨λ μΈμ($* == $@) $# : μΈμμ κ°μ $0 : νλ‘κ·Έλ¨ μ΄λ¦ $1 : νλ‘κ·Έλ¨μ λν 첫λ²μ§Έ μΈμ $2 : νλ‘κ·Έλ¨μ λν λλ²μ§Έ μΈμ $3 : νλ‘κ·Έλ¨μ λν μΈλ²μ§Έ μΈμ (ν΄μ ) # unset VARβ ν¨μ - aliasμ κ°μ΄ μ μΈνμ¬ λͺ λ Ήμ΄ μ²λΌ μ¬μ©ν¨! (μ μΈ) # a() { ls; date; cal; } or function a { ls; date; cal; } (μ€ν) # a (νμΈ) # typeset -f (ν΄μ ) # unset -f a [μ°Έκ³ ] CMD -> alias -> function -> script β κ·Έλ£Ήν(Grouping) ( ls ; pwd ; date ) > outputfile β 쑰건 μ°μ°μ ( && , || ) β λ©νμΊλ¦ν°(Metacharacter) : '' "" `` ; β νμ€ν 리(History) : history β νκ²½νμΌ(Environment Files) : /etc/profile, ~/.bash_profile, ~/.bashrc
-
μ μ€ν¬λ¦½νΈ μμ±
-
νλ‘κ·Έλ¨ μμ±κ³Ό μ€ν
bash -x script.sh
. ~/.bashrc
vi script.sh ' chmod +x script.sh ; ./script.sh
-
μ£Όμκ΄λ¦¬
- νμ€ μ²λ¦¬ - #
- μ¬λ¬ μ€ μ²λ¦¬ - : << EOF ~ EOF
-
μ λ ₯κ³Ό μΆλ ₯ μΆλ ₯ : echo CMD, printf CMD μ λ ₯ : read CMD
-
#!/bin/bash
#svc.sh start sshd
#svc.sh stop sshd
-------------continueλ₯Ό μ¬μ©νμ¬ λ¬Έμ λ₯Ό νμΈνλ μμ ----------------
#!/bin/bash
egrep -i '(warn|fail|error|crit|alert|emerg)' /var/log/messages > /tmp/.tmp1 γ΄ μμ’μ λ¨μ΄λ₯Ό κ²μν¨ (30μ΄ μ νμΌ)
while true - μ°ΈμΌλ do sleep 30 - 30μ΄ μ¬κ³ egrep -i '(warn|fail|error|crit|alert|emerg)' /var/log/messages > /tmp/.tmp2 γ΄ 30μ΄ λ€μ νμΌμ λ€μ κ²μ¬νμ¬ tmp1 κ³Ό 2μ μ°¨μ΄μ μ λΉκ΅ν¨ diff /tmp/.tmp1 /tmp/.tmp2 > /tmp/.tmp3 && continue γ΄ κ²°κ³Όκ°μ΄ μ μ₯λ tmp νμΌλ€μ μλ‘ λΉκ΅ν΄ κ°μΌλ©΄ continue! mailx -s "[WARN] Log Mail Check" root < /tmp/.tmp3 γ΄ κ²°κ³Όκ°μ΄ λ¬λΌ μλλ‘ λ΄λ €μμ κ΄λ¦¬μμκ² λ©μΌμ 보λ΄κ² ν¨ egrep -i '(warn|error|crit|alert|emerg)' /var/log/messages > /tmp/.tmp1 γ΄ λ€μ λ°λ³΅ν΄μ κ²μ¬νμ¬ λ΄μ©μ tmp1μ λ£μ done
(κΈ°λ₯) λͺ©μ : λ‘κ·Έ νμΌμ λͺ¨λν°λ§ νλ νλ‘κ·Έλ¨ μμ± κΈ°λ₯: β λ‘κ·Έ νμΌμ μΆκ°λ λ΄μ©μ νμΈ β λ‘κ·Έ νμΌμ μΆκ°λ λ΄μ©μ΄ μ‘΄μ¬νλ€λ©΄ λ©μΌλ‘ μ μ‘(To: root) β μ΄ νλ‘κ·Έλ¨μ μ’ λ£λλ©΄ μλλ€.(EX: Daemon) β μ¬μ©νλ λͺ λ Ήμ΄: egrep -i '(warn|fail|err|crit|alert|emerg)' /var/log/messages β 30μ΄μ νλ²μ© λ‘κ·Έ νμΌμ λ΄μ©μ μΆκ°λ λ΄μ©μ νμΈνλ€.
- diff λͺ λ Ήμ΄ μ¬μ©: diff file1 file2 = νμΌ1κ³Ό νμΌ2μ μ°¨μ΄μ λΉκ΅
---------------FTP μ¬μ© μμ ------------------------ #!/bin/bash HELP(){ cat << EOF Commands may be abbreviated. Commands are:
! debug mdir sendport site $ dir mget put size account disconnect mkdir pwd status append exit mls quit struct EOF }
ERROR(){ [ "$CMD" ] && echo "[WARN]Invalid command" }
while true do echo -n "ftp> " read CMD case $CMD in 'quit'|'bye') break ;; 'help') HELP ;; *) ERROR ;; esac
*) IO 리λ€μ΄λ μ μμ νλ‘μΈμ€ for LINE in $(cat file1) do echo $LINE done > file2 ----λ°©λ²2(κΆμ₯)--- cat file1 | while read LINE do echo $LINE done > file2
*) μκ·Έλ μ μ΄ *μκ·Έλ무μ *μκ·Έλ λ°μΌλ©΄ κ°λ°μκ° μνλ λμ
*) λλ²κΉ * bash -x script.sh * bash -xv script.sh *) μ΅μ μ²λ¦¬ getopts CMD + while CMD + case CMD (μ) # ssh.sh -p 80 192.168.10.20 while getopts p: options do case $options in p ) P_ACTION ;; ?) Usage ;; * ) Usage ;; esac done
-----------μλ² μ²΄ν¬ νμΌ-------------------- #!/bin/bash
....
if [ $# -ne 2 ] ; then echo "Usage: $0 " exit 1 fi export FIRST_IP=$1 export SECOND_IP=$2 export BASEDIR=/root/bin
ServiceList() {
SERVER=$1
ssh $SERVER systemctl -t service | sed -n '1,/^LOAD/p'
| sed '$d'
| awk '{print $1, $3}' > $BASEDIR/$SERVER.txt
}
ServiceList $FIRST_IP ServiceList $SECOND_IP
FSERVER=$BASEDIR/$FIRST_IP.txt SSERVER=$BASEDIR/$SECOND_IP.txt
cat << EOF ############################## "$FIRST_IP" ############################## $(diff $FSERVER $SSERVER | fgrep '<' | cut -c3-)
############################## "$SECOND_IP" ############################## $(diff $FSERVER $SSERVER | fgrep '>' | cut -c3-)
EOF
----vscode μλμΌλ‘ μΌμ§λλ‘ μ€μ ------
- crontab + vskill.sh
fdisk -l | grep LVM | awk '{print $1}' > pv1.txt pvs | tail -n +2 | awk '{print $1}' > pv2.txt
ENV1.sh : νκ²½μ€μ * $HOME/.bashrc ENV2.sh : νμν ν¨ν€μ§ μ€μΉ * ν¨ν€μ§ μ€μΉ (gcc, php, vscode) ENV3.sh : μλ² μΈν ν λ· μλ² - telnet-server ftp μλ² - vsftpd ftp ssh μλ² - openssh-server openssh-clients openssh-clients nginx μΉ μλ² - yum -y install nginx echo "Nginx webserver > /usr/share/nginx/html/index.html systemctl enable --now nginx.server
cat << EOF > /etc/yum.repos.d/vscode.repo [code] name=Visual Studio Code baseurl=https://packages.microsoft.com/yumrepos/vscode enabled=1 gpgcheck=1 gpgkey=https://packages.microsoft.com/keys/microsoft.asc" EOF
yum install code sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
sudo sh -c 'echo -e "[code]\nname=Visual Studio Code\nbaseurl=https://packages.microsoft.com/yumrepos/vscode\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/vscode.repo' yum install code
wget https://dl.google.com/linux/direct/google-chrome-stable_current_x86_64.rpm -O /root/bin/
yum localinstall google-chrome-stable_current_x86_64