Linux System Administration (Complete Edition) by Xero Cool (Yin Thu) PDF

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 142

Linux System Administration [Complete Edition] by Xero Cool (Yin Thu)

(DSA 45th Intake)


10th July, 2017

https://www.facebook.com/xerocool.99

Mobile : 09778206233

Mobile : 09778206233

https://www.facebook.com/xerocool.99

Linux System Administration [Complete Edition] by Xero Cool (Yin Thu)


(DSA 45th Intake)
10th July, 2017
Intro
ဟုတ္ကဲ့။ ကြ်န္ေတာ့္အမည္။ ယဥ္သူပါ။ စစ္တကၠသိုလ္ DSA 45th Intake ေက်ာင္းဆင္း ၁ ဦးပါ။ ၂၀၀၃ ခုႏွစ္မွာ DSA
ကေန ကြနပ
္ ်ဴတာသိပၸံဘြဲ႔ကို ရရွိခဲ့ပါတယ္။

ဘာမွ ေထြေထြထူးထူးေတာ့ ေျပာစရာ မရွိပါဘူး ခင္ဗ်ာ။

၂၀၁၆-ဒီဇင္ဘာမွာေပါ့။ Japan မွာ ေက်ာင္းတက္ေနတဲ့ ညီမေလး ၁ ေယာက္က Linux ကို ျမန္မာလို ရွင္းျပေပးဖို႔
အကူအညီေတာင္းလာခဲ့ပါတယ္။ ဒီလိုန႔ဲ online မွာ xero cool ဆိုတဲ့ group ေလး ဖြင့္ၿပီး Linux System
Administration ကို ျမန္မာလို စတင္ ေရးသားခဲ့ပါတယ္။

အဲဒီ xero cool group ထဲကို၊ နည္းပညာ စိတ္၀င္စားတဲ့ ညီအကို အမညီမ ေတြပါ ပါ၀င္လာခဲ့ၿပီး member 1.6K
ရွိလာခဲ့ပါတယ္။ post ေတြ တစ္ျဖည္းျဖည္းနဲ႔ မ်ားလာခဲ့ပါတယ္။ pdf အေနနဲ႔ ျဖန္႔ေ၀ေပးဖိ႔ု ေတာင္းဆိုလာၾကပါတယ္။

ဒီလိုန႔ဲ ၂၀၁၇-ဇြန္လမွာေတာ့၊ နည္းပညာစိတ္၀င္စားသူေတြ linux ကို ေလ့လာလိုသူေတြ အဆင္ေျပေျပ


ဖတ္ရွဳႏိုင္ပါေစဆိုတဲ့ ရည္ရြယ္ခ်က္နဲ႔ Linux System Administration အပိုင္း-၁ ကို online ကေန အခမဲ့ စတင္
ျဖန္႔ေ၀ျဖစ္ခဲ့ပါတယ္။

ခုဆိုရင္ ဒါက အပိုင္းႏွစ္ကိုပါ ထပ္ေပါင္းထားတဲ့ Linux System Administration [Complete Edition] ပါ။ linux ကို
စိတ္၀င္စားသူေတြ အတြက္ ကြ်န္ေတာ့္ရဲ့ လက္ေဆာင္မြန္ ၁ ခု ေပါ့ဗ်ာ။ အခေၾကးေငြန႔ဲ ျဖန္႔ခ်ီတာေတြ၊ အမည္ေျပာင္းလဲ
အသံုးျပဳတာေတြ မလုပ္ဖို႔ေတာ့ ပန္ၾကားပါရေစ။

အားလံုး အဆင္ေျပၾကလိမ့္မယ္လို႔ ေမွ်ာ္လင့္ပါတယ္။

ဒါပါပဲ ခင္ဗ်ာ။

ခင္မင္စြာျဖင့္ …………………… Xero Cool (Yin Thu) Mobile : 09778206233 (သတိရရင္ဆက္ဖို႔)


linux မိတ္ဆက္
linux, linux နဲ႔ ၾကားဖူးနားဝ ရွိၿပီး၊ linux ဆိုတာဘာလဲ သိခ်င္တဲ့သူေတြ ရွိပါလိမ့္မယ္။

ဟုတ္ကဲ့။ က်ေနာ္ သိသေလာက္ ေျပာျပပါ့မယ္။

ခု office လုပ္ငန္းေတြ ေတာ္ေတာ္မ်ားမ်ားက computer ေတြမွာ သံုးေနတဲ့၊ computer ေတြမွာ install လုပ္
ထည့္သြင္းထားတဲ့၊ operating system ကို Windows လို႔ ေခၚပါတယ္။ windows xp, windows 7, windows 8,
windows 10 စသည္ျဖင့္ေပါ့။ windows OS ရဲ့ ထုတ္လုပ္သူက microsoft ပါ။

အလားတူစြာပဲ၊ linux ဆိုတာ ဘက္စံု သံုးလို႔ရတဲ့ operating system platform တစ္ခုပါ။ ဒီ linux platform ေပၚမွာမွ
linux အသြင္ကြဲေတြ အမ်ားႀကီး ရွိပါတယ္။ ဒါေတြကို linux distro ေတြလ႔ို ေခၚပါတယ္။

linux ကို ဘယ္ေနရာမွာ ျမင္ႏိုင္မလဲဆိုေတာ့၊ အေကာင္းဆံုး ဥပမာေပးရရင္၊ က်ေနာ္တို႔ mobile phone ေတြမွာ
အသံုးျပဳထားတဲ့ Android ဆိုတာသည္လည္း linux OS တစ္ခုပါပဲ။

linux ရဲ့ ဦးဆံုး ဖန္တီးရွင္ကေတာ့ Linus Torvalds ပါ။ 1991 ခုႏွစ္မွာ စတင္ ဖန္တီးခဲ့ပါတယ္။ linux ကို
ပင္ဂြင္းငွက္ေလးနဲ႔ ကိုယ္စားျပဳေလ့ရွိပါတယ္။

ေနာက္ပိုင္းမွာ linux ဟာ hacker ေတြ ၾကားမွာ ေရပန္းစားသြားတာေၾကာင့္၊ အရွိန္အဟုန္န႔ဲ develope ျဖစ္လာၿပီး၊


နယ္ပယ္အသီးသီးရဲ့ လိုအပ္ခ်က္အရ ျဖည့္စြက္ ျပင္ဆင္ ေရးသားထားတဲ့ linux distro ေတြ အေျမာက္အမ်ား
ေပၚထြက္လာပါတယ္။

linux ဟာ နည္းပညာေလာကမွာ အရမ္း ေပါက္သြားတယ္လို႔ ဆိုရမွာပါ။ linux distro ေထာင္န႔ဲ ခ်ီၿပီး ရွိပါတယ္။
အဲဒီထဲကမွ လူသိမ်ား ထင္ရွားတာေတြကေတာ့ Debian, redhat, centOS, fedora, ubuntu, suse, backtrack, kali,
Arch,.. စသည္ျဖင့္ေပါ့။

linux ကို အသံုးျပဳရာမွာ မိမိ လိုအပ္ခ်က္နဲ႔ ကိုက္ညီမယ့္ distro ကို ေရြးခ်ယ္ အသံုးျပဳရံုပါပဲ။ linux ဟာ windows တို႔
mac OS တိ႔လ
ု ို အခေၾကးေငြ နဲ႔ ဝယ္ယူရတာ မဟုတ္ပဲ၊ free အေနနဲ႔ လြတ္လပ္စြာ ျဖန္႔ခ်ီတဲ့ OS တစ္ခုပါ။ linux OS
ေတြကို internet ကေန အလြယ္တကူ download လုပ္ ရယူႏိုင္ပါတယ္။

linux OS နဲ႔ အတူ သူ႔ကို ဖန္တီးထားတဲ့ source code ေတြကိုပါ တစ္ပါတည္း ထည့္ေပးထားတာေၾကာင့္၊
နည္းပညာရွင္ေတြ developer ေတြ အတြက္ အမ်ားႀကီး အက်ိဳး ရွိေစပါတယ္။

linux ကို personal သံုး desktop version အေနနဲ႔ေရာ လုပ္ငန္းသံုး server version အေနနဲ႔ပါ ရရွိႏိုင္ပါတယ္။

security အားေကာင္းတာေၾကာင့္၊ linux ကို bank ေတြ telecom company ေတြ ISP (Internet Service Provider)
ေတြမွာ server အျဖစ္ သံုးစြဲၾကပါတယ္။

server အတြက္ ထင္ရွားတဲ့ distro ေတြကေတာ့၊

1.Red Hat Enterprise Linux


2.Ubuntu Server
3.CentOS
4.SUSE Enterprise Linux

တိ႔ပ
ု ါပဲ။

linux ကို personal အေနနဲ႔လည္း အသံုးျပဳႏိုင္ၿပီး၊ ရံုးလုပ္ငန္း အတြက္ Open office, photo editing အတြက္ GIMP,
design ဆြဲဖို႔အတြက္ Open CAD စတဲ့ application ေတြ ရွိပါတယ္။ ေနာက္ၿပီး linux ေပၚမွာ DOTA II game ကိုလည္း
ေဆာ့ႏိုင္ပါေသးတယ္။

personal အတြက္ လူသံုး မ်ားတဲ့ distro ေတြကေတာ့၊

1.Ubuntu Linux
2.Fedora
3.Linux Mint
4.openSUSE
5.Arch Linux
6.Deepin
7.Debian

စသည္ျဖင့္ ရွိပါတယ္။

ေနာက္ၿပီး linux ကို သံုးစြဲရင္ virus အႏၱရာယ္ အတြက္ ေၾကာက္စရာ မလိုပါဘူး။ error မ်ား နည္းပါးၿပီး system crash
ျဖစ္ျခင္းမွလည္း ကင္းေဝးပါတယ္။

ဒါ့ေၾကာင့္ linux ဟာ ေရြးခ်ယ္ အသံုးျပဳသင့္တဲ့ operating system platform တစ္ခုပါ။ India ႏိုင္ငံမွာေတာ့ linux ကို
က်ယ္က်ယ္ျပန္႔ျပန္႔ အသံုးျပဳေနၾကပါၿပီ။

က်ေနာ္တို႔ Myanmar ႏိုင္ငံမွာလည္း linux ကို စတင္ အသံုးျပဳေနၾကပါၿပီ။ linux ကို စိတ္ဝင္စားေနၾကပါၿပီ။

ဒါ့ေၾကာင့္ မိမိ လိုအပ္ခ်က္နဲ႔ ကိုက္ညီမယ့္ linux distro တစ္ခုကို ေရြးခ်ယ္ အသံုးျပဳၾကပါလို႔ ဒီကေန
တိုက္တြန္းလိုက္ပါရေစ။

linux ရဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ ေပ်ာ္ရႊင္ပါေစ။
centOS
နည္းပညာလမ္းေၾကာင္းအရ၊ linux နဲ႔ ပတ္သက္ၿပီး ေလ့လာမယ္ဆိုရင္၊ စမ္းသပ္မယ္ဆိုရင္၊ centOS ကို virtual box မွာ
တင္ၿပီး ေလ့က်င့္တာ အသင့္ေတာ္ဆံုးပါ။ က်ေနာ့္ suggestion ေပါ့ေနာ္။

centOS နဲ႔ red hat, fedora သိပ္မကြာျခားလွပါဘူး။ ubuntu, kali, susue တိ႔န
ု ႔လ
ဲ ည္း အေျခခံ command ေတြ
သေဘာတရားေတြ အတူတူပါပဲ။

ေျပာစရာအေနနဲ႔၊ centOS နဲ႔ Red Hat ကြာတာကေတာ့ centOS က community ကို အေျချပဳၿပီး red hat က license နဲ႔
၀ယ္သံုးရတာပါပဲ။ RHEL မွာ လိုအပ္ခ်က္အရ packages ေတြကို သြင္းမယ္ဆိုတာနဲ႔ registeration
တန္းလုပ္ခိုင္းပါလိမ့္မယ္။ ဒါ့ေၾကာင့္ centOS ကို အသံုးျပဳရတာက ပိုလြတ္လပ္ပါတယ္။

ခုဆိုရင္ centIOS version 7 ကို ေရာက္ေနပါၿပီ။ အရင္ version အေဟာင္းမွာ မပါခဲ့တဲ့ systemctl တိ႔လ
ု ို command
ေတြလည္း ပါရွိလာပါၿပီ။

centOS Community ENTerprise Operating System ကို Active multimedia, Excellent, IT bank စတဲ့ software
အေရာင္းဆိုင္ေတြမွာ အလြယ္တကူ ၀ယ္ယူႏိုင္ပါတယ္။ online ကေန download ခ်မယ္ဆိုရင္ေတာ့
https://www.centos.org/ ကေန လြတလ
္ ြတ္လပ္လပ္ free ရယူႏိုင္ပါတယ္။

ဒါ့ေၾကာင့္ နည္းပညာပိုင္းအရ linux ကို ေလ့လာမယ္ဆို centOS ကို အသံုးျပဳပါ လို႔ ဒီေနရာကေန အဆိုျပဳပါရေစ။
virtual box
မိမိ ရင္းႏွီး ကြ်မ္း၀င္ၿပီးသား windows ကို မျဖဳတ္ပဲ ORACLE virtual box ေပၚမွာ linux ကို သြင္းယူၿပီး
စမ္းသပ္လလို႔လည္း ရပါတယ္။ ဒါက ေလ့လာခါစမွာ ပိုအဆင္ေျပပါတယ္။

virtual box ကို download လုပ္ ရယူရမယ့္ link ကေတာ့ ဒီမွာပါ။

http://download.virtualbox.org/virtualbox/5.1.22/VirtualBox-5.1.22-115126-Win.exe
kernel and shell

နည္းပညာေလာကမွာ kernel ဆိုတဲ့ အသံုးအႏွဳန္းကို ၾကားဘူးမယ္ထင္ပါတယ္။ အာ့ေတာ့ kernel ဆိုတာ ဘာလဲ


ေလ့လာၾကည့္ရေအာင္။

kernel ဆိုတာ computer operating system တစ္ခုရဲ့ မရွိမျဖစ္ အခ်က္အခ်ာအက်ဆံုး ပင္မ core program pကို
ေခၚဆိုတဲ့ အမည္ပါ။

အဲဒီ core က ဘာေတြ လုပ္ေပးသလဲ ဆိုေတာ့၊ operating system ရဲ့ အစိတ္အပိုင္း အားလံုးအတြက္ အေျခခံက်တဲ့
basic services ေတြကို ထုတ္လုပ္ေပးပါတယ္။

software ေတြက ေပးပိ႔လ


ု ိုက္တဲ့ input/output request ေတြကို cpu (central processing unit) နဲ႔ တစ္ျခား
electronic အစိတ္အပိုင္းေတြ နားလည္တဲ့ machine language အျဖစ္ ျပန္ဆို စီမံေပးပါတယ္။

ဒါ့ေၾကာင့္ computer operating system ရဲ့ အဓိက အက်ဆံုး ပင္မအပိုင္း core ကို kernel လို႔ ေခၚပါတယ္။

kernel အေၾကာင္း ၿပီးသြားေတာ့ shell အေၾကာင္း ေျပာၾကရေအာင္။ shell ဆိုတာကေတာ့ computer အသံုးျပဳသူ user
နဲ႔ kernel ရဲ့ အၾကားက ၾကားခံ interface တစ္ခုပါ။

operating system ထဲကို login ၀င္တယ္ဆိုပါစို႔၊ user name နဲ႔ password ကို စစ္ေဆးၿပီးရင္ login program ဟာ
shell ကေန တစ္ဆင့္မွ kernel ဆီ ခ်ိတ္ဆက္ရပါတယ္။

kernel ဟာ ပင္မ core ျဖစ္တာနဲ႔ အညီ ၄င္းဆီကို instruction အမွားေတြ ေရာက္သြားရင္၊ operating system
ပ်က္စီးသြားႏိုင္ပါတယ္။

shell ဟာ command line interpreter ျဖစ္ၿပီး kernel ဆီကို instruction အမွားေတြ ေရာက္မသြားေအာင္
ထိန္းေၾကာင္းေပးပါတယ္။

linux မွာ terminal ကို ဖြင့္ၿပီး မရွိတဲ့ command တစ္ခု ရိုက္ၾကည့္မယ္ဆိုရင္၊ ဥပမာ >> lulu လို႔ ရိုက္ၿပီး enter
ေခါက္ၾကည့္မယ္ဗ်ာ။

bash: lulu: command not found ဆိုၿပီး ေပၚလာပါလိမ့္မယ္။

ဒါက kernel ဆီ instruction အမွား ေရာက္မသြားေအာင္ shell က တားဆီးလိုက္တာ ေၾကာင့္ပါပဲ။

shell နဲ႔ ပတ္သက္လို႔ linux system မွာ bash shell, sh shell, csh shell, tcsh shell စသျဖင့္ ပါဝင္ၿပီး bash shell ကို
linux ရဲ့ default shell အေနနဲ႔ ထည့္သြင္းထားေလ့ ရွိပါတယ္။ terminal မွာ က်ေနာ္တို႔ ျမင္ရမယ့္ [root@linux /]#
ဆိုတာဟာ bash shell ရဲ့ interface ပါပဲ။ terminal မွာ ကိုယ္အသံုးျပဳေနတဲ့ shell အမ်ိဳးအစားကို သိခ်င္ရင္ echo $0 လို႔
ရိုက္ၿပီး ၾကည့္နိုင္ပါတယ္။ ဒါကေတာ့ shell ရဲ့ အေၾကာင္းပါ။

အားလံုးေပါင္းၿပီး၊ အတိုခ်ဳပ္ေျပာရရင္ေတာ့ kernel ဆိုတာ operating system တစ္ခုရဲ့ input/output ေတြကို


electronic အစိတ္အပိုင္းေတြ နားလည္ေအာင္ စီမံေပးတဲ့ ပင္မ core program ၊... shell ဆိုတာကေတာ့ user နဲ႔ kernel
ၾကားက filter တစ္ခုေပါ့။

kernel နဲ႔ shell အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။


linux file system hirarchy
linux ရဲ့ command ေတြ ရိုက္ထည့္ေပးရတဲ့ ေနရာ၊ run တဲ့ေနရာကို terminal လို႔ ေခၚပါတယ္။ အဲဒီ terminal ထဲမွာ
command ေတြ မ run ခင္ linux ရဲ့ file system တည္ေတာက္ပံုကို အရင္ဆံုး သိထားဖိ႔ု လိုပါတယ္။

ကိုယ့္ရဲ့ linux machine ထဲမွာ ျမင္ေနရတဲ့ directory ေတြဟာ ဘာအတြက္လဲဆိုတာ သိထားသင့္တာေပါ့ေနာ္။ ပံုေလးနဲ႔
တြဲၿပီး ေလ့လာၾကည့္ရေအာင္။

ပံုမွာ ျမင္ရတဲ့အတိုင္း၊ linux ရဲ့ file system ကို tree ပံုစံန႔ဲ တည္ေဆာက္ထားၿပီး ဒါကို file system hierarchy လိ႔ု
ေခၚပါတယ္။ file ေတြ သိမ္းထားတဲ့ေနရာကို windows မွာ folder လို႔ ေခၚၿပီး linux မွာေတာ့ directory လို႔ ေခၚပါတယ္။

ကဲ ! ပံုေလးနဲ႔ တြဲၿပီး စရွင္းလိုက္ရေအာင္။

/ >> root directory လို႔ေခၚပါတယ္။ directory အားလံုးရဲ့ အထက္မွာ တည္ရွိၿပီး၊ က်န္ directories အားလံုးဟာ root ရဲ့
ေအာက္မွာ တည္ရွိပါတယ္။ directory အားလံုးရဲ့ အခ်ဳပ္ေပါ့။

bin >> linux ကို run ဖို႔ မရွိမျဖစ္ လိုအပ္တဲ့ binary file ေတြ ပါဝင္တဲ့ directory တစ္ခုပါ။

boot >> linux ကို boot လုပ္ ဆြဲတင္ဖ႔ို လိုအပ္တဲ့ boot file ေတြ ပါဝင္တဲ့ directory တစ္ခုပါ။

dev >> တပ္ဆင္ထားတဲ့ device ေတြန႔ဲ သက္ဆိုင္တဲ့ file ေတြကို သိမ္းထားတဲ့ directory တစ္ခုပါ။

etc >> linux ေပၚမွာ တင္ထားတဲ့ software ေတြရဲ့ configuration file ေတြကို သိမ္းထားတဲ့ directory တစ္ခုပါ။

home >> ေဆာက္ထားတဲ့ user account ေတြရဲ့ home directory ပါ။ ဥပမာ၊ ပံုထဲမွာ ျမင္ရတဲ့ အတိုင္း၊ alice ဆိုတဲ့
user account ရွိရင္ သူ႔အတြက္ home directory ေအာက္မွာ alice ဆိုတဲ့ directory ေလး ေဆာက္ၿပီးသား ရွိေနမွာပါ။

root >> linux ရဲ့ super user ျဖစ္တဲ့ root account ရဲ့ home directory ပါ။ root account ဟာ သူ႔ရဲ့ home directory
ကို တျခား account ေတြလို home ေအာက္မွာ မဖန္တီးပါဘူး။ ပံုထဲကအတိုင္း / ေအာက္မွာ root ဆိုတဲ့ directory
အျဖစ္ သီးျခား ရပ္တည္ပါတယ္။

run >> boot လုပ္လိုက္တဲ့ အခ်ိန္ကစလို႔ run ေနတဲ့ process ေတြ၊ application ေတြ ရဲ့ run time data ေတြ
ပါဝင္ပါတယ္။ reboot လုပ္လိုက္တဲ့ အခါမွာေတာ့ အဲဒီ data ေတြကို ဖ်က္ပစ္ၿပီး အသစ္တစ္ဖန္ ျပည္လည္ စတင္ပါတယ္။

sbin >> system administration နဲ႔ဆိုင္တဲ့ binary file ေတြပါရွိတဲ့ directory တစ္ခုပါ။

tmp >> application ေတြကို run တဲ့အခါ ယာယီ run မယ့္ file တခ်ိဳ႔ကို သိမ္းထားတဲ့ directory တစ္ခုပါ။ အဲဒီ file
ေတြဟာ 10 ရက္အတြင္း ထပ္မံ access လုပ္ မခံရရင္ အလိုအေလ်ာက္ ဖ်က္ပစ္ခံရမွာ ျဖစ္ပါတယ္။

usr >> user သြင္းယူထားတဲ့ software ေတြ၊ user အသံုးျပဳမယ့္ command ေတြ၊ system administration
command ေတြ ပါဝင္တဲ့ directory တစ္ခုပါ။

usr/bin (usr ေအာက္က bin) >> user နဲ႔ သက္ဆိုင္တဲ့ command ေတြကို သိမ္းဆည္းထားတဲ့ directory တစ္ခုပါ။

usr/sbin (usr ေအာက္က sbin) >> user နဲ႔ သက္ဆိုင္တဲ့ system administration command ေတြကို
သိမ္းဆည္းထားတဲ့ directory တစ္ခုပါ။

usr/include (usr ေအာက္က include) >> program ေတြကို ထပ္မံ develope လုပ္ရာမွာ compile လုပ္ရန္ လိုအပ္တဲ့
header file ေတြကို သိမ္းဆည္းထားတဲ့ directory တစ္ခုပါ။

usr/local (usr ေအာက္က local) >> လက္ရွိ user နဲ႔သာ သီးျခားသက္ဆိုင္ေသာ file ေတြ ပါဝင္တဲ့ directory တစ္ခုပါ။

usr/lib (usr ေအာက္က lib) >> user ေတြရဲ့ application ေတြ အတြက္ လိုအပ္တဲ့ library file ေတြကို
သိမ္းဆည္းထားတဲ့ directory တစ္ခုပါ။

usr/share (usr ေအာက္က share) >> user ေတြ share လုပ္ ေဝမွ်ႏိုင္ဖို႔ အတြက္ လိုအပ္ေသာ file ေတြ ရွိတဲ့
directory တစ္ခုပါ။

usr/src (usr ေအာက္က src) >> linux kernel ရဲ့ source code ေတြ ပါရွိတဲ့ directory တစ္ခုပါ။

usr/X11R6 (usr ေအာက္က X11R6) >> X window system အတြက္ လိုအပ္တဲ့ file ေတြ ပါရွိတဲ့ directory တစ္ခုပါ။

var >> ပါဝင္တဲ့ အေၾကာင္းအရာေတြ မၾကာခဏ dynamically ေျပာင္းလဲေနတဲ့ variable data ေတြ ရွိတဲ့ directory
တစ္ခုပါ။ database, cache directories, log files စတာေတြ ပါဝင္ပါတယ္။

var/log (var ေအာက္က log) >> system နဲ႔ သက္ဆိုင္ေသာ log file ေတြ ပါဝင္တဲ့ directory တစ္ခုပါ။

var/spool (var ေအာက္က spool) >> စာပို႔စနစ္၊ message ပို႔စနစ္၊ printing စတာေတြန႔ဲ တစ္ျခား queue လုပ္ရတဲ့
အလုပ္မွန္သမွ်ပါဝင္တဲ့ directory တစ္ခုပါ။

lib >> linux အတြက္ လိုအပ္တဲ့ library file ေတြ ပါဝင္ပါတယ္။ windows ရဲ့ dll file ေတြလိုမ်ိဳးေပါ့။

lost+found >> disk check လုပ္တဲ့အခါ ေတြ႔ရတဲ့ ပ်က္စီးေနတဲ့ file ေတြ၊ မည္သည့္ directory နဲ႔မွ အဆက္အစပ္
မရွိတဲ့ file ေတြကို သိမ္းထားတဲ့ directory တစ္ခုပါ။ computer ကို စနစ္တက် shutdown မလုပ္တဲ့အခါ အဲဒီလို file
ေတြ ရွိေနတတ္ပါတယ္။

misc >> linux နဲ႔ သက္ဆိုင္တဲ့ အေထြေထြ file ေတြ ပါရွိတဲ့ directory တစ္ခုပါ။

mnt >> CD Rom, Flash driv, printer နဲ႔ တစ္ျခား ဆက္စပ္ device ေတြကို mount လုပ္ တပ္ဆင္တဲ့ ေနရာပါ။

media >> mount လုပ္ထားတဲ့ CD Drive ထဲက data ေတြကို ဒီေနရာမွာ အလိုအေလ်ာက္ လာေရာက္ ေဖၚျပေလ့
ရွိပါတယ္။

opt >> ထပ္မံသြင္းယူထားတဲ့ optional software ေတြ ပါဝင္တဲ့ directory တစ္ခုပါ။

proc >> pseudo-file system ေတြ ပါရွိပါတယ္။ ဒီ file ေတြဟာ system configuration parameters ေတြပါ။ hard
disk ေပၚမွာ အမွန္တကယ္ မတည္ရွိပဲ linux OS kernel ရဲ့ memory ေပၚမွာပဲ ရွိေနတဲ့ file ေတြ ျဖစ္ပါတယ္။ cpu
information ေတြ memory information ေတြ ပါ၀င္ပါတယ္။

ခုေလာက္ဆို linux ရဲ့ file system နဲ႔ directory တစ္ခုခ်င္းစီရဲ့ အေၾကာင္းကို သိေလာက္ၿပီ ထင္ပါတယ္။

ဒီ directory ေတြကို ၾကည့္ခ်င္ရင္ Terminalထဲမွာ …

cd / လိ႔ု ရိုက္ enter ေခါက္


ls လို႔ ထပ္ရိုက္ enter ေခါက္

ဒီေလာက္ပါပဲ။
linux machine ၌ Terminal ဖြင့္ျခင္း

linux နဲ႔ ရင္းႏွီးသူေတြကေတာ့ ဒီေခါင္းစဥ္ကို ၾကည့္ၿပီး ရီၾကမွာပါ။ ဟုတ္ကဲ့ ရီပါ။ ဒါေပမယ့္ ခုမွ စေလ့လာခါစ သူ ၁
ေယာက္ အတြက္ကေတာ့ ဒါက လိုအပ္ပါတယ္။

windows operating system မွာ command ေတြ ရိုက္ထည့္တဲ့ window ကို command prompt လို႔ ေခၚၿပီး၊ linux
မွာေတာ့ ဒါကို terminal လို႔ ေခၚပါတယ္။

ဟုတ္ၿပီဗ်ာ၊ user name, password ထည့္ၿပီး linux machine ထဲ login ဝင္ၿပီးၿပီ၊ linux machine ရဲ့ desktop screen
ေပၚလာၿပီ ဆိုၾကပါစို႔။

command ေတြ ရိုက္ထည့္ဖို႔ terminal ေလးကို ဘယ္လို ဖြင့္မလဲ?

၁။ desktop ေပၚမွာ mouse နဲ႔ right click ေထာက္လိုက္ပါ။ ေပၚလာတဲ့ pop up menu ထဲကေန Terminal သို႔မဟုတ္
open terminal ဆိုတာေလးကို ထပ္ႏွိပ္ၿပီး terminal ကို ဖြင့္ပါ။

၂။ ဘယ္ဘက္အေပၚေထာင့္ application menu ထဲကေန System Tools > Terminal ကို ေရြးၿပီး ဖြင့္ပါ။

၃။ keyboard ေပၚက Alter+F2 ကို တြဲ ႏွိပ္ပါ။ ေပၚလာတဲ့ dialogue box ထဲမွာ gnome-terminal လို႔ ရိုက္ enter
ေခါက္ပါ။

ဒီနည္းေတြထဲက တစ္နည္းနည္း အသံုးျပဳၿပီး Terminal ကို ဖြင့္ႏိုင္ပါၿပီ။

ကဲ !! linux ကို စတင္ေလ့လာမယ့္သူမ်ား အဆင္ေျပၾကပါေစ။

linux ရဲ့ command syntax အေၾကာင္း

linux machine ထဲကို root account နဲ႔ login ဝင္ၿပီး terminal ကို ဖြင့္လိုက္တဲ့အခါ terminal မွာ၊ ဥပမာအားျဖင့္
[root@desktop~]# လို႔ ျမင္ရပါလိမ့္မယ္။ အဲဒါကို shell prompt လို႔ ေခၚပါတယ္။

၁။ root ကေတာ့ user name ပါ။


၂။ @ ကေတာ့ at ကို ညႊန္းဆိုတဲ့ သေကၤတေပါ့။
၃။ desktop ကေတာ့ linux ကို စတင္ install လုပ္စဥ္မွာ ေပးခဲ့တဲ့ hostname (တစ္နည္းအားျဖင့္ computer name) ပါ။
hostname ကို သိခ်င္ရင္ hostname ဆိုတဲ့ command ကို သံုးၿပီး ၾကည့္ႏိုင္ပါတယ္။
၄။ ~ ကေတာ့ current account ရဲ့ home directory (/root) ကို ေရာက္ေနတယ္ လိ႔ု ျပတာပါ။
၅။ # ကေတာ့ အခု terminal ဟာ root account က ဖြင့္ထားတာ လို႔ သေဘာရပါတယ္။ တျခား user account ေတြမွာ
ဆိုရင္ေတာ့ $ သေကၤတနဲ႔ ေဖၚျပပါတယ္။

ဒါကေတာ့ terminal ဖြင့္ဖြင့္ခ်င္း ျမင္ရမယ့္ အရာေတြပါ။ ဟုတ္ၿပီ command အေၾကာင္း ဆက္သြားၾကရေအာင္။

command တစ္ခုမွာ command, option, argument ဆိုၿပီး ၃ ပိုင္း ရွိပါတယ္။

ကဲ ! command တစ္ခုကို အစမ္း ရိုက္ၾကည့္ၾကပါစို႔။

ls လိ႔ု ရိုက္ၿပီး enter ေခါက္လိုက္ပါ။ [root@linux~]# ls


root directory ထဲမွာ ရွိတဲ့ အရာ ေတြကို list ထုတ္ျပသပါလိမ့္မယ္။ hidden file ေတြ directory ေတြေတာ့ မပါဘူးေပါ့။

ဟုတ္ၿပီ၊ hidden ျဖစ္ေနတဲ့ အရာေတြကိုပါ ၾကည့္ခ်င္တယ္။

ls -a -l လို႔ ရိုက္လိုက္ပါ။ hidden ျဖစ္ေနတဲ့ အရာေတြကိုပါ ျမင္ရပါလိမ့္မယ္။ ဒီေနရာမွာ ေျပာခ်င္တာက ls သည္


command ျဖစ္ၿပီး -a -l သည္ option ျဖစ္တယ္ ဆိုတာပါပဲ။

option ဆိုတာ ကားဂီယာလိုပါပဲ။ လိုအပ္ခ်က္အရ ဘယ္လမ္းကို ဘယ္ဂီယာနဲ႔ ေမာင္းမလဲ လိုအပ္တဲ့ ဂီယာကို


ထည့္ေပးရသလိုေပါ့ဗ်ာ။ မလိုအပ္ရင္ option ကို ထည့္စရာ မလိုပါဘူး။

ကဲ ! ဟုတ္ၿပီ။ argument အေၾကာင္း ဆက္သြားၾကပါစို႔။ root directory ေအာက္မွာ ရွိတဲ့ readme ဆိုတဲ့ file ေလးကို
ဖြင့္ဖတ္ၾကမယ္ ဆိုပါစို႔။ cat ဆိုတဲ့ command ကို သံုးရပါမယ္။ cat readme လို႔ ရိုက္ၿပီး enter ေခါက္ရမယ္ေပါ့ဗ်ာ။
[root@linux~]# cat readme

ဒီေနရာမွာ cat ဆိုတဲ့ command ေရွ႔က readme ဆိုတဲ့ file အမည္ကို argument လို႔ ေခၚပါတယ္။

ဥပမာ အေနနဲ႔ command statement တစ္ခု ထပ္ေပးပါရေစ။ tail -f readme ဆိုတဲ့ command ကို ၾကည့္ရေအာင္၊
ဒီေနရာမွာ tail သည္ command, -f သည္ option, readme သည္ argument ျဖစ္ပါတယ္။

tail –f readme

ဒါ့အျပင္၊ command တစ္ခုန႔ဲ တစ္ခုကို semicolon ; ျခားၿပီး တစ္ေၾကာင္းတည္း အေနနဲ႔ run ႏိုင္ပါတယ္။ ဒီလို run ရင္
ရလဒ္ ၂ ခုကို အထက္ေအာက္ ေဖၚျပေပးပါလိမ့္မယ္။ ဥပမာ၊
[root@linux~]# which passwd ; type passwd

application တစ္ခု သို႔မဟုတ္ command တစ္ခုဟာ ဘာလဲ သိခ်င္ရင္ whatis နဲ႔ ၾကည့္ႏိုင္ပါတယ္။
[root@linux~]# whatis firefox

command ႏွစ္ခုကို pipe | ျခားၿပီးေတာ့ တစ္ဆက္တည္း run ႏိုင္ပါတယ္။ ဒီလို run ရင္ ပထမ command က ရလာတဲ့
result ကို ဒုတိယ command က လက္ဆင့္ကမ္းယူၿပီး run ပါလိမ့္မယ္။

ဥပမာ၊

၁။install လုပ္ထားတဲ့ package ေတြကို yum list inatalled ဆိုတဲ့ command နဲ႔ စာရင္းထုတ္မယ္။
၂။ရလာတဲ့ စာရင္းကို less နဲ႔ ၾကည့္မယ္။
ဒီလို အေျခအေနမ်ိဳးမွာ pipe သေကၤတ | ျခားၿပီး yum list installed | less လို႔ တစ္ေၾကာင္းတည္း run ႏိုင္ပါတယ္။
yum list installed | less

ကဲ ! ခုေလာက္ဆို linux command တစ္ခုရဲ့ အေျခခံ တည္ေဆာက္ပံုကို နားလည္ႏိုင္မယ္လို႔ ယူဆပါတယ္။

ဒီေလာက္ပါပဲ။

file paths on linux system

ဒီတစ္ခါ linux နဲ႔ ပတ္သက္လ႔ို အရိုးရွင္းဆံုး topic ေလးကို စလိုက္ရေအာင္။ file path ဆိုတာ file ေတြဆီသြားတဲ့
လမ္းေၾကာင္း အမ်ိဳးအစားေတြကို ဆိုလိုတာပါ။ အေရးမႀကီးေပမယ့္ သိထားသင့္တဲ့ အခ်က္ေလးေပါ့။

ဥပမာ >> /etc/sysconfig/network-scripts/ifcfg-eth0 (ဒါကို file path လို႔ ေခၚပါတယ္)

file path အမ်ိဳးအစား ၃ မ်ိဳး ရွိပါတယ္။

၁။ absolute file path

root directory ရဲ့ သေကၤတ / နဲ႔ စတဲ့ file path ကို ေျပာတာပါ။

ဥပမာ၊[root@linux~]# cd /etc/sysconfig

၂။ relative file path

root directory ရဲ့ သေကၤတ / နဲ႔ မစတဲ့ ရိုးရိုး file path ကို ေျပာတာပါ။

ဥပမာ၊ [root@linux~]# cd var/log

၃။ navigation file path

file ရွိရာဆီကို command တစ္ေၾကာင္းတည္းနဲ႔ မသြားပဲ directory ေတြ တစ္ဆင့္ၿပီးမွတစ္ဆင့္ ရိုက္ၿပီး သြားတာကို
ဆိုလိုတာပါ။

ဥပမာ၊ root ေအာက္က etc ေအာက္က sysconfig ေအာက္က network-scripts ေအာက္က ifcfg-eth0 ဆိုတဲ့ file
ဆီကို သြားမယ္ ဆိုပါေတာ့။

vi /etc/sysconfig/network-scripts/ifcfg-eth0 လိ႔ု တစ္ေၾကာင္းတည္း မရိုက္ပဲ ေအာက္မွာ ေဖၚျပထားသလို


တစ္ဆင့္ၿပီးမွတစ္ဆင့္ သြားတာကို ဆိုလိုတာပါ။

[root@linux~]# cd /etc

[root@linux~]# cd sysconfig
[root@linux~]# cd network-scripts

[root@linux~]# vi ifcfg-eth0

ကဲ ! file path ေတြ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

ရွင္းရွင္းလင္းလင္းပါပဲေနာ္။

linux စက္ေပၚတြင္ directory တစ္ခုမွတစ္ခုသို႔ ကူးေျပာင္းျခင္း


windows operating system မွာ file ေတြ သိမ္းထားတဲ့ ေနရာကို folder လို႔ ေခၚပါတယ္။ linux မွာေတာ့ ဒါေတြကို
directory လို႔ ေခၚပါတယ္။ ဒီ directory ေတြကို တစ္ခုကေနတစ္ခုဆီ ကူးေျပာင္း ေမႊေႏွာက္ၾကည့္ရေအာင္။

linux မွာ directory တစ္ခုကေန တစ္ခု change ဖို႔ ကူးေျပာင္းဖို႔ အတြက္၊ terminal ထဲကေနဆိုရင္၊ cd ဆိုတဲ့
command ကို သံုးၿပီး ကူးေျပာင္းရပါတယ္။
[root@linux~]# cd

ဥပမာ၊ home directory ထဲကေန root ေအာက္က var ေအာက္က log ဆိုတဲ့ directory ဆီ သြားခ်င္တယ္ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# cd /var/log

ေရာက္ရွိရာေနရာကေန home directory ကို သြားခ်င္ရင္ cd ကို သံုးပါတယ္။ cd ~ လိ႔လ


ု ည္း သံုးႏိုင္ပါတယ္။
[root@linux~]# cd
[root@linux~]# cd ~

root directory ကို သြားခ်င္ရင္ cd / ကို သံုးပါတယ္။


[root@linux~]# cd /

current directory ကို ေဖၚျပခ်င္ရင္ . သိ႔မ


ု ဟုတ္ ./ ကို သံုးတယ္။ ~+ ကိုလည္း သံုးႏိုင္ပါတယ္။
[root@linux~]# cd .
[root@linux~]# cd ./
[root@linux~]# cd ~+

parent directory ကို တစ္ဆင့္ျပန္တက္ခ်င္ရင္ .. ကို သံုးပါတယ္။


[root@linux~]# cd ..

အထက္မွာ ရွိတဲ့ dir ၂ ဆင့္ကို ျပန္တက္ခ်င္ရင္ ../.. ကို သံုးပါတယ္။


[root@linux~]# cd ../..

previous working directory ကို သြားခ်င္ရင္ cd - ကို သံုးတယ္။ လက္ရွိ ေရာက္ရွိေနတဲ့ directory မတိုင္ခင္က ၀င္ခဲ့တဲ့
directory ဆီကို ျပန္ေရာက္သြားမွာပါ။ cd - အစား cd ~- ကိုလည္း သံုးႏိုင္ပါတယ္။
[root@linux~]# cd –
[root@linux~]# cd ~-

ကိုယ္ ဘယ္ကို ေရာက္ေနလဲ? ကိုယ္ ေရာက္ရွိေနတဲ့ directory လမ္းေၾကာင္းကို ၾကည့္ခ်င္ရင္ pwd ဆိုတဲ့ command ကို
သံုးၿပီး သိနိုင္ပါတယ္။
[root@linux~]# pwd

လြယ္လြယ္ေလးပါ မခက္ပါဘူးေနာ္။

ဒီေလာက္ပါပဲ။

file ႏွင့္ directory မ်ားကို list ထုတ္ ၾကည့္ျခင္း

linux machine ထဲကို root account နဲ႔ log in ဝင္၊ terminal ကို ဖြင့္ၿပီးၿပီ ဆိုပါစို႔။ terminal မွာ [root@linux~]# လိ႔ု
ျမင္ရပါမယ္။

ဒီတစ္ခါ ေရာက္ရွိေနတဲ့ directory ေအာက္မွာ ဘာေတြ ရွိလဲၾကည့္ရေအာင္။ ဒီလို ၾကည့္ဖို႔အတြက္ ls ဆိုတဲ့ command
ကို သံုးပါတယ္။ ls command က current directory ေအာက္မွာ ရွိတဲ့ sub directory နဲ႔ file ေတြကို ျပသေပးပါတယ္။

ls လိ႔ု ရိုက္ၿပီး enter ေခါက္တဲ့အခါ directory ေအာက္မွာ ရွိတဲ့ file ေတြ directory ေတြကို ျမင္ရပါလိမ့္မယ္။

[root@linux~]# ls

ဒါေပမယ့္ hidden ေပးထားတဲ့ file ေတြ directory ေတြကို ျမင္ရမွာ မဟုတ္ပါဘူး။ hidden ျဖစ္ေနတာေတြကို
ျမင္ရဖိ႔အ
ု တြက္ -a ဆိုတဲ့ option ကို သံုးရပါတယ္။

ls -a လို႔ ရိုက္ၿပီး enter ေခါက္ၾကည့္လိုက္ပါ။ [root@linux~]# ls -a

file ေတြ directory ေတြကို ေပးထားတဲ့ read, write, execute (rwx) permission ေတြန႔ဲ တြဲလ်က္ ျမင္ခ်င္ရင္ေတာ့ -l
ဆိုတဲ့ option ကို ထပ္ျဖည့္ေပးရပါမယ္။

ls -l ေပါ့။ [root@linux~]# ls -l

file ေတြ ေဆာက္ခဲ့တဲ့ အခ်ိန္ေပၚ မူတည္ၿပီး အစဥ္လိုက္ ျပသေစခ်င္ရင္ေတာ့ -t ဆိုတဲ့ option ကို သံုးပါတယ္။

ls -t ေပါ့။ [root@linux~]# ls -t

directory တစ္ခုကို ၾကည့္တဲ့အခါ သူတို႔ရဲ့ sub directory ေတြကိုပါ တစ္ခါတည္း ျမင္ခ်င္တယ္ဆိုရင္ -R ဆိုတဲ့ option
ကို သံုးပါတယ္။
ls -R ေပါ့။ [root@linux~]# ls -R

file တစ္ခုတည္းကို အထူးျပဳၿပီး ၾကည့္ခ်င္တဲ့အခါ ဥပမာ၊ ls -l filename.txt လို႔ သံုးစြဲရပါတယ္။

ဒါက လက္ရွိ current လက္ရွိ directory ေအာက္က file ကို ၾကည့္တာပါ။ တစ္ျခားေနရာမွာ ရွိတဲ့ file ကို
ၾကည့္မယ္ဆိုရင္ေတာ့ အဲဒီ file တည္ရွိရာ လမ္းေၾကာင္း absolute path ကို ထည့္ေပးရပါမယ္။ ဥပမာ၊ root directory
ေအာက္က etc ဆိုတဲ့ directory ေအာက္က readme.txt ဆိုတဲ့ file ကို လွမ္းၾကည့္မယ္ ဆိုပါစို႔။

ls -l /etc/readme.txt ေပါ့။ [root@linux~]# ls –l /etc/readme.txt

directory တစ္ခုတည္းကို အထူးျပဳၿပီး ၾကည့္ခ်င္တဲ့အခါ ဥပမာ၊ ls -l -d dirname လို႔ သံုးစြဲရပါတယ္။

[root@linux~]# ls –l –d dirname

ဒါက လက္ရွိ current လက္ရွိ directory ေအာက္က directory ကို ၾကည့္တာပါ။ တစ္ျခားေနရာမွာ ရွိတဲ့ directory ကို
ၾကည့္မယ္ဆိုရင္ေတာ့ အဲဒီ directory တည္ရွိရာ လမ္းေၾကာင္း absolute path ကို ထည့္ေပးရပါမယ္။ ဥပမာ၊ root
directory ေအာက္က var ဆိုတဲ့ directory ေအာက္က log ဆိုတဲ့ directory ကို လွမ္းၾကည့္မယ္ ဆိုပါစို႔။

ls -l -d /var/log ေပါ့။ [root@linux~]# ls –l –d /var/log

option ေတြကို ls command နဲ႔ တစ္ခါတည္းတြဲစပ္ၿပီးလည္း သံုးႏိုင္ပါတယ္။ ေအာက္ပါ အတိုင္းေပါ့။

ls -alt သိ႔မ
ု ဟုတ္ ls -a -l –t

[root@linux~]# ls -alt

ကဲ ! ဒီေလာက္ဆို file ေတြ directory ေတြကို ဘယ္လို ၾကည့္ရမလဲ သိၿပီထင္ပါတယ္။

လြယ္လြယ္ေလးပါေနာ္။

file ႏွင့္ သက္ဆိုင္ေသာ …… !


linux နဲ႔ ပတ္သက္လ႔ို ဒီတစ္ခါေတာ့ file ေတြန႔ဲ သက္ဆိုင္တဲ့ အေၾကာင္းေလး ေျပာၾကရေအာင္။ တိုတိုရွင္းရွင္းပဲ
စလိုက္ၾကတာေပါ့။

file တစ္ခုဟာ ဘာအမ်ိဳးအစားလဲ သိခ်င္ရင္ file ဆိုတဲ့ command နဲ႔ ၾကည့္ႏိုင္ပါတယ္။ ဥပမာ၊ file1.txt ဟာ
ဘာအမ်ိဳးအစားလည္း သိခ်င္တယ္ ဆိုပါစို႔။ file file1.txt လို႔ ရိုက္ enter ေခါက္ရံုပါပဲ။
[root@linux~]# file file1.txt

file တစ္ခုကို တည္ေဆာက္ခ်င္ရင္ touch ဆိုတဲ့ command နဲ႔ တည္ေဆာက္ႏိုင္ပါတယ္။ ဥပမာ၊ file1.txt ဆိုတဲ့ text
file ေလး တစ္ခု တည္ေဆာက္ခ်င္တယ္ ဆိုပါစို႔။ touch file1.txt လို႔ရိုက္ enter ေခါက္ေပါ့။ ၿပီးရင္ ls ဆိုတဲ့ command
ေလးနဲ႔ ျပန္ၾကည့္လိုက္တဲ့ အခါ၊ current directory ေအာက္မ်ာ file1.txt ဆိုတာေလးကို ျမင္ရၿပီေပါ့။
[root@linux~]# touch file1.txt
[root@linux~]# ls

အမည္တူၿပီး no. နံပါတ္စဥ္ မတူတ၊ဲ့ တစ္ခုထက္ ပိုတဲ့၊ file ေတြကို command ၁ ေၾကာင္းတည္းနဲ႔ တည္ေဆာက္မယ္
ဆိုပါစို႔။ touch filename{1..5} ဆိုတဲ့ format ကို အသံုးျပဳရပါတယ္။ နံပါတ္စဥ္ေေတြကို တြန္႔ကြင္း brace ထဲ
ထည့္ထားလိုက္တဲ့ သေဘာပါ။

1 ကေန 5 အထိ၊ file ငါးခု အစဥ္လိုက္ ေဆာက္မယ္ဆိုရင္ {1..5}။ 1 ကေန 10 အထိ၊ file 10 ခု အစဥ္လိုက္
ေဆာက္မယ္ဆိုရင္ {1..10}။ ဥပမာ၊ file1 ကေန file10 အထိ နံပါတ္စဥ္ထိုးထားတဲ့၊ .txt နဲ႔ ဆံုးတဲ့၊ file ၁၀ ခု
ေဆာက္မယ္ ဆိုပါစို႔။ touch file{1..10}.txt လိ႔ု ရိုက္ enter ေခါက္ရံုပါပဲ။ ၿပီးရင္ ရလဒ္ကို ls နဲ႔ ျပန္ၾကည့္လိုက္ပါဦး။
[root@linux~]# touch file{1..5}.txt
[root@linux~]# ls

file သိ႔မ
ု ဟုတ္ directory တစ္ခုရဲ့ name မွာ space ထည့္ၿပီး ေဆာက္ခ်င္ရင္ filename ရဲ့ ပထမပိုင္း အဆံုးမွာ backlash
\ ကို ထည့္ၿပီး သံုးရပါတယ္။ ဥပမာ၊ file one ဆိုတဲ့ အမည္န႔ဲ file နဲ႔ one ၾကားမွာ space ျခားၿပီး text file တစ္ခု
တည္ေဆာက္မယ္ ဆိုပါစို႔။ touch file\ one.txt လို႔ ရိုက္ enter ေခါက္ရံုေပါ့။
[root@linux~]# touch file\ one.txt

ဒီတစ္ခါ ls command နဲ႔ ေခၚၾကည့္လို႔ မျမင္ႏိုင္ပဲ ls –a လို႔ ၾကည္မ


့ ွ ျမင္ႏိုင္မယ့္ hidden file ေလးေတြ
ေဆာက္ၾကည့္ရေအာင္။ လြယ္ပါတယ္ေနာ္။ ေဆာက္လိုက္တဲ့ file name ရဲ့ ေရွ့ဆံုးမွာ dot . ထည့္ေပးလိုက္ရင္ hidden
file ျဖစ္သြားပါမယ္။ ဥပမာ၊ file1.txt ကို hidden အေနနဲ႔ ေဆာက္ခ်င္တယ္ ဆိုပါစို႔။ touch .file1.txt လိ႔ု ရိုက္ enter
ေခါက္ရံုေပါ့။

ေဆာက္ၿပီးရင္ ls command နဲ႔ ေခၚၾကည့္လိုက္ပါ။ .file1.txt ဟာ list ထဲမွာ ပါမလာေတာ့ပါဘူး။ ls –a လို႔၊ -a ဆိုတဲ့
option ေလးခံၿပီး ထပ္ ေခၚၾကည့္ပါဦး။ list ထဲမွာ .file1.txt ေလး ျပန္ပါလာတာကို ေတြ႔ရပါလိမ့္မယ္။

[root@linux~]# touch .file1.txt


[root@linux~]# ls
[root@linux~]# ls –a

file တစ္ခု ရဲ့ size ကို သိခ်င္ရင္ေတာ့ wc ဆိုတဲ့ command နဲ႔ ၾကည္ရ
့ ပါတယ္။ wc command မွာ -c –l –w ဆိုၿပီး
options ၃ ခု ရွိတယ္။ -c က character အေရအတြက္၊ -l က line အေရအတြက္၊ -w က word အေရအတြက္။ ဥပမာ၊
file1.txt ရဲ့ size ကို သိခ်င္တယ္ ဆိုပါစို႔။ wc file1.txt လို႔ ရိုက္ enter ေခါက္ရံုပါပဲ။ ဒီထဲကမွ character တစ္ခုတည္း
ကြက္ၾကည့္ခ်င္ရင္ေတာ့ wc –c file1.txt ေပါ့။
[root@linux~]# wc file1.txt
[root@linux~]# wc –c file1.txt
file ကို ဖ်က္ခ်င္တဲ့အခါ rm ဆိုတဲ့ comand ကို သံုးၿပီးဖ်က္ႏိုင္ပါတယ္။ ဥပမာ၊ file1.txt ဆိုတဲ့ file ကို ဖ်က္မယ္ ဆိုပါစို႔။
rm file1.txt လိ႔ု ရိုက္ enter ေခါက္ရံုေပါ့။ ဖ်က္မွာ ေသခ်ာလား yes or no ေမးပါလိမ့္မယ္။ ဒီ အခါ y ကို ထပ္ရိုက္ၿပီး
enter ေခါက္ လိုက္ရံုပါပဲ။
[root@linux~]# rm file1.txt

file တစ္ခုကို ဖ်က္တဲ့ အခါ “ဖ်က္မွာေသခ်ာလား” yes or no ဘာမွ မေမးပဲ တန္းၿပီး ဖ်က္ေစခ်င္ရင္ေတာ့၊ rm ကို -rf
ဆိုတဲ့ option နဲ႔ တြဲသံုးေပးရပါတယ္။ ဥပမာ၊ file1.txt ကို ဖ်က္မယ္ ဆိုပါစို႔။ rm –rf file1.txt ေပါ့။
[root@linux~]# rm –rf file1.txt

file ေတြန႔ဲ သက္ဆိုင္တဲ့ အေၾကာင္းေတြကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။

#xero_cool (Kaung Myat Naing)

directory ႏွင့္ သက္ဆိုင္ေသာ


file ေတြ သိမ္းထားတဲ့ ေနရာကို windows operating system မွာ folder လိ႔ု ေခၚၿပီး၊ linux မွာေတာ့ ဒါကို directory လို႔
ေခၚပါတယ္။

ကဲ ! directory နဲ႔ သက္ဆိုင္တာေလးေတြကို ေျပာၾကရေအာင္။


directory တစ္ခု ေဆာက္ခ်င္ရင္ mkdir ဆိုတဲ့ command ကို သံုးပါတယ္။ ဥပမာ၊ dir1 လိ႔ု အမည္ရတဲ့ directory တစ္ခု
ေဆာက္ခ်င္တယ္ ဆိုပါစို႔။ mkdir dir1 လို႔ ရိုက္ enter ေခါက္ရံုေပါ့။ ရလဒ္ကို ls နဲ႔ ျပန္ၾကည့္လိုက္ပါဦး။ current location
ရဲ့ ေအာက္မွာ dir1 ဆိုတဲ့ directory အသစ္ကို ေတြ႔ရပါလိမ့္မယ္။
[root@linux~]# mkdir dir1
[root@linux~]# ls

file ေတြ တည္ေဆာက္ရာမွာ သံုးသလိုပါပဲ၊ အမည္တူၿပီး no. နံပါတ္စဥ္ မတူတဲ့၊ တစ္ခုထက္ ပိုတဲ့၊ directory ေတြကို
command ၁ ေၾကာင္းတည္းနဲ႔ တည္ေဆာက္မယ္ ဆိုပါစို႔။ mkdir directoryname{1..5} ဆိုတဲ့ format ကို
အသံုးျပဳရပါတယ္။ နံပါတ္စဥ္ေေတြကုိ တြန္႔ကြင္း brace ထဲ ထည့္ထားလိုက္တဲ့ သေဘာပါ။

1 ကေန 5 အထိ၊ directory ငါးခု အစဥ္လိုက္ ေဆာက္မယ္ဆိုရင္ {1..5}။ 1 ကေန 10 အထိ၊ directory ဆယ္ခု
အစဥ္လိုက္ ေဆာက္မယ္ဆိုရင္ {1..10}။ ဥပမာ၊ dir1 ကေန dir10 အထိ နံပါတ္စဥ္ထိုးထားတဲ့၊ directory ၁၀ ခု
ေဆာက္မယ္ ဆိုပါစို႔။ mkdir dir{1..10} လို႔ ရိုက္ enter ေခါက္ရံုပါပဲ။ ၿပီးရင္ ရလဒ္ကို ls နဲ႔ ျပန္ၾကည့္လိုက္ပါဦး။
[root@linux~]# mkdir dir{1..5}
[root@linux~]# ls

directory တစ္ခက
ု ို ဖ်က္ခ်င္ရင္ rmdir သံုးရပါတယ္။ ဥပမာ၊ dir1 အမည္ရတဲ့ directory ကို ဖ်က္မယ္ဆိုပါစို႔။ rmdir
dir1 လို႔ ရိုက္ enter ေခါက္ရံုေပါ့။
[root@linux~]# rmdir dir1
ဖ်က္ခ်င္တဲ့ directory ထဲမွာ file ေတြ sub directory ေတြ ရွိေနရင္ ဖ်က္ဖို႔ မလြယပ
္ ါဘူး။ အဲဒီအခါ rm –r –f နဲ႔
ဖ်က္ႏိုင္ပါတယ္။ rm –rf လိ႔လ
ု ည္း တြဲသံုးႏိုင္ပါတယ္။ ဥပမာ၊ dir1 အမည္ရတဲ့ directory ကို ဖ်က္မယ္ဆိုပါစို႔။ rm –rf
dir1 လို႔ ရိုက္ enter ေခါက္ရံုေပါ့။
[root@linux~]# rm –r –f dir1 (or) [root@linux~]# rm –rf dir1

လြယ္လြယ္ေလးပါေနာ္။ directory နဲ႔ သက္ဆိုင္တဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။

copy ကူးၾကမယ္
linux machine ေပၚမွာ file ေတြ၊ dir ေတြကို တစ္ေနရာကေန တစ္ေနရာဆီ copy ကူးတဲ့ အေၾကာင္း
ေလ့လာၾကည့္ၾကစို႔။

စလိုက္ရေအာင္ဗ်ာ …..!

file ေတြ dir ေတြကို copy ကူးခ်င္ရင္ cp ဆိုတဲ့ command ကို သံုးပါတယ္။ ဥပမာ၊ root directory ေအာက္က၊ home
ေအာက္က၊ tom ေအာက္က၊ file1 ဆိုတာေလးကို current directory ဆီ copy ကူးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command ေလးကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# cp /home/tom/file1 ./

ဒီေနရာမွာ သိထားရမွာက၊ cp ရဲ့ ေရွ႔က၊ /home/tom/file1 ဆိုတာကို source လို႔ ေခၚၿပီး၊ current directory ရဲ့
သေကၤတ ./ ကို destination လို႔ ေခၚတယ္ ဆိုတာပါပဲ။

file အမ်ားႀကီးကို command တစ္ေၾကာင္းတည္းနဲ႔ copy ကူးလို႔ရပါတယ္။ အဲဒီလို copy ကူးခ်င္ရင္၊ source ေနရာမွာ
file name ေတြကို တန္းစီ ထည့္ၿပီး၊ destination ေနရာမွာ location ကို တစ္ႀကိမ္ပဲ ထည့္ေပးရင္ ရပါၿပီ။ ဥပမာ၊ root
directory ေအာက္က၊ home ေအာက္က၊ tom ေအာက္က၊ file1 နဲ႔ file2 နဲ႔ file3 ကို current directory ဆီ copy
ကူးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# cp /home/tom/file1 /home/tom/file2 /home/tom/file3 ./

file ကို copy လည္းကူးမယ္။ file အမည္ name လည္း ေျပာင္းမယ္ဆိုရင္ destination ေနရာမွာ new name ကို
ေပးရပါမယ္။ ဥပမာ၊ root directory ေအာက္က၊ home ေအာက္က၊ tom ေအာက္က၊ file1 ဆိုတာေလးကို current
directory ဆီ file2 ဆိုတဲ့ အမည္အျဖစ္၊ copy ကူးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့
ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# cp /home/tom/file1 ./file2

directory ကို copy ကူးမယ္ဆိုရင္လည္း file ေတြကို copy ကူးတဲ့ နည္းအတိုင္း ကူးႏိုင္ပါတယ္။ တစ္ခု သိထားရမွာက
file ေတြ ရွိေနတဲ့ directory ကို ကူးမယ္ဆို၊ ကူးလို႔ မရပဲ၊ cp : omitting directory ဆိုတဲ့ error ေပၚေလ့ရွိပါတယ္။
ဒါေၾကာင့္ file ေတြ ရွိတဲ့ directory ကို copy ကူးခ်င္တဲ့ အခါ -r ဆိုတဲ့ option ေလး ခံေပးရပါတယ္။
ေအာက္ပါအတိုင္းေပါ့။
[root@linux~]# cp –r /home/tom/dir1 ./dir1

လြယ္ပါတယ္ေနာ္။

Copy ကူးျခင္းႏွင့္ သက္ဆိုင္တဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ :D

#xero_cool (Kaung Myat Naing)

move and rename file and directory


windows os မွာေတာ့ file ေတြ folder ေတြကို ေနရာ ေရႊ႔တာကို cut လုပ္တယ္လုိ႔ ေခၚၿပီး၊ linux မွာေတာ့ ဒါကို move
လုပ္တယ္လို႔ ေခၚပါတယ္။

file တစ္ခု ကုိ move လုပ္မယ္ဆိုရင္ mv ဆိုတဲ့ command ကို သံုးပါတယ္။ ဥပမာ၊ root directory ေအာက္က၊ home
ေအာက္က၊ tom ေအာက္က၊ file1 ဆိုတာေလးကို current directory ဆီ move လုပ္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command ေလးကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# mv /home/tom/file1 ./

ဒီေနရာမွာ သိထားရမွာက၊ mv ရဲ့ ေရွ႔က၊ /home/tom/file1 ဆိုတာကို source လိ႔ု ေခၚၿပီး၊ current directory ရဲ့
သေကၤတ ./ ကို destination လို႔ ေခၚတယ္ ဆိုတာပါပဲ။

file အမ်ားႀကီးကို command တစ္ေၾကာင္းတည္းနဲ႔ move လုပ္လို႔လည္း ရပါတယ္။ source ေနရာမွာ file name ေတြကို
တန္းစီ ထည့္ၿပီး၊ destination ေနရာမွာ location ကို တစ္ႀကိမ္ပဲ ထည့္ေပးရင္ ရၿပီ။
[root@linux~]# mv /home/tom/file1 /home/tom/file2 /home/tom/file3 ./

file ကို အမည္ name ေျပာင္းမယ္ဆိုရင္လည္း mv ကိုပဲ သံုးတယ္။ destination ေနရာမွာ new name ထည့္ေပးရတယ္။
ဥပမာ၊ tom.txt ဆိုတဲ့ file ကို jerry.txt လို႔ ေျပာင္းမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့
ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# mv tom.txt jerry.txt

directory ကို move လုပ္မယ္ဆိုရင္လည္း file ေတြကို move လုပ္တဲ့ နည္းအတိုင္းပါပဲ။ ဥပမာ၊ current location မ်ာ
ရွိတဲ့ dir1 ဆိုတဲ့ directory ကို root directory ေအာက္က home ဆိုတဲ့ directory ေအာက္ကို ေရြ႔မယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။
[root@linux~]# mv dir1 /home
လြယ္ပါတယ္ေနာ္။

file ေတြ directory ေတြကို move လုပ္ျခင္းႏွင့္ သက္ဆိုင္တဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။

command တစ္ခုႏွင့္ သက္ဆိုင္ေသာ အခ်က္အလက္မ်ားကို ၾကည့္ရွဳျခင္း


linux မွာ အသံုးျပဳရမယ့္ command ေတြရဲ့ အသံုးျပဳပံုျပဳနည္း manual၊ Help file ေတြကို ၾကည့္နည္း၊ သက္ဆိုင္တဲ့ info
ေတြကို ဘယ္လို ေမႊေႏွာက္ရမယ္၊ အခ်က္အလက္ေတြကို ဘယ္ေနရာမ်ာ ၀င္ေရာက္ ဖတ္ရွဳရမယ္၊ စတာေတြကို
က်ေနာ္တို႔ ေလ့လာၾကည့္ရေအာင္။

စလိုက္ၾကစို႔ …..!

command ေတြရဲ့ တည္ေနရာ လမ္းေၾကာင္းကို သိခ်င္ရင္ echo $PATH ကို သံုးပါတယ္။ terminal မွာ echo $PATH လို႔
ရိုက္၊ enter ေခါက္လိုက္တာနဲ႔ commands ေတြ လာတဲ့ လမ္းေၾကာင္းကို ျပသေပးပါလိမ့္မယ္။ ေအာက္ကလိုေပါ့။
[root@linux~]# echo $PATH

command တစ္ခုခ်င္းရဲ့ တည္ေနရာ လမ္းေၾကာင္းကို သိခ်င္ရင္ which ကို သံုးႏိုင္ပါတယ္။ ဥပမာ၊ passwd ဆိုတဲ့
command ရဲ့ တည္ေနရာကို သိခ်င္တယ္ ဆိုပါစို႔။ which passwd ေပါ့။
[root@linux~]# which passwd
/usr/bin/passwd

ဒါ့အျပင္၊ command တစ္ခုခ်င္းရဲ့ တည္ေနရာ လမ္းေၾကာင္းကို သိခ်င္ရင္ type ကို သံုးႏိုင္ပါေသးတယ္။ ဥပမာ၊ passwd
ဆိုတဲ့ command ရဲ့ တည္ေနရာကို သိခ်င္တယ္ ဆိုပါစို႔။ type passwd ေပါ့။
[root@linux~]# type passwd
Passwd is /usr/bin/passwd

command တစ္ခုန႔ဲ ဆိုင္တဲ့ အကူအညီေတြကို သိခ်င္ရင္ command ေနာက္ကေန --help ရိုက္ၿပီး ၾကည့္ႏိုင္ပါတယ္။
ဥပမာ၊ passwd ဆိုတဲ့ command နဲ႔ ဆိုင္တဲ့ အကူအညီကို ၾကည့္မယ္ ဆိုပါစို႔။ passwd --help ေပါ့။
[root@linux~]# passwd --help

command တစ္ခုရဲ့ manual ကို သိခ်င္ရင္ man ကို သံုးပါတယ္။ manual page ကို ေဖၚျပေပးမွာ ျဖစ္ၿပီး သက္ဆိုင္တဲ့
command အရဲ့ သံုးပံုသံုးနည္းေတြကို ရွင္းျပထားတာ ေတြ႔ရမွာပါ။ man page က ထြက္ဖို႔ အတြက္ q ကို ႏွိပ္ရပါတယ္။
ဥပမာ၊ passwd ဆိုတဲ့ command ရဲ့ manual ကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ man passwd ေပါ့။
[root@linux~]# man passwd

pinfo ဆိုတာေကေတာ့ man နဲ႔ အလားတူတဲ့ command တစ္ခပ


ု ါပဲ။ command တစ္ခုန႔ဲ ဆိုင္တဲ့ info ေတြကို
ျပသေပးပါတယ္။
[root@linux~]# pinfo passwd

command နဲ႔ ဆိုင္တဲ့ info ကို ၾကည့္ခ်င္ရင္ info ကို သံုးႏိုင္ပါေသးတယ္။


[root@linux~]# iinfo passwd

command တစ္ခုန႔ဲ ဆက္ႏြယ္တဲ့ man page ေတြကို ရွာခ်င္တဲ့အခါ man –k ကို သံုးၿပီး ရွာေဖြႏိုင္ပါတယ္။ ဥပမာ၊ man
–k passwd လို႔ ရိုက္လိုက္ရင္ passwd ဆိုတာပါတဲ့ man page ေတြရဲ့ list ကို ျမင္ရပါလိမ့္မယ္။
[root@linux~]# man –k passwd

command တစ္ခုရဲ့ မိမိ ၾကည့္လိုတဲ့ အပိုင္းကို တိုက္ရိုက္ ေရာက္ရွိလိုတဲ့ အခါ man –5 ကို သံုးတယ္။ 5 ေနရာမ်ာ မိမိ
ၾကည့္လိုတဲ့ section ကို ထည့္ႏိုင္ပါတယ္။ manual page မွာ မပါတဲ့ section ကိုေတာ့ ထည့္လို႔ မရပါဘူးေနာ္။
[root@linux~]# man 5 passwd

သြင္းလိုက္တဲ့ application နဲ႔ ဆိုင္တဲ့ အခ်က္အလက္ documentation ေတြကို ၾကည့္ခ်င္ရင္ေတာ့ /usr/share/doc မွာ
ရွာဖတ္လို႔ရပါတယ္။

ကဲ ! စာလည္း ရွည္သြားၿပီဗ်။ Command တစ္ခုန႔ဲ သက္ဆိုင္တဲ့ manual ၾကည့္နည္း၊ အကူအညီ ေခၚပံု၊ info ၾကည့္နည္း၊
documentation မ်ားကို ၀င္ေရာက္ ဖတ္ရွဳနည္းေတြကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။

#$$####### head, tail, cat, more, less #####$$#

linux ရဲ့ terminal ထဲကေန text file ေတြ config file ေတြ log file ေတြ၊ စတဲ့ စာသား file ေတြကို ဖတ္ခ်င္တယ္
ဆိုပါစို႔။

ဘယ္ command ေတြကို အသံုးျပဳလို႔ ရမလဲ ၾကည့္ၾကရေအာင္။

ဒီလို ၾကည့္မယ္ ဆိုရင္

၁။ head

၂။ tail

၃။ cat

၄။ more

၅။ less စတဲ့ command ေတြ အထဲကမွ တစ္ခုကို သင့္ေတာ္သလို အသံုးျပဳၿပီး ၾကည့္ရပါတယ္။


၁။ head >> သူက file ထဲမွာ ပါရွိတဲ့ စာသားေတြထဲကမွ ထိပ္ဆံုးစာ ၁၀ ေၾကာင္းကို ေဖၚျပေပးပါတယ္။

ဥပမာ၊ readme.txt ဆိုတဲ့ file ထဲက ထိပ္ဆံုးစာ ၁၀ ေၾကာင္းကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ head readme.txt လိ႔ု ရိုက္
ရပါမယ္။

ၾကည့္ခ်င္တဲ့ line အေရအတြက္ကို head –n 5 လို႔ သံုးၿပီး သတ္မွတ္ေပးလို႔ရပါတယ္။ 5 ေနရာမွာ ၾကည့္လိုတဲ့ line
အေရအတြက္ကို ထည့္ေပးရံုပါပဲ။

ဥပမာ၊ readme.txt ဆိုတဲ့ file ထဲက ထိပ္ဆံုးစာ ၅ ေၾကာင္းကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ head -5 readme.txt လိ႔ု ရိုက္
ရပါမယ္။

၂။ tail >> သူက file ထဲမွာ ပါရွိတဲ့ စာသားေတြထဲကမွ ေအာက္ဆံုးစာ ၁၀ ေၾကာင္းကို ေဖၚျပေပးပါတယ္။

ဥပမာ၊ readme.txt ဆိုတဲ့ file ထဲက ေအာက္ဆံုးစာ ၁၀ ေၾကာင္းကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ tail readme.txt လိ႔ု ရိုက္
ရပါမယ္။

tail ကို -f ဆိုတဲ့ option နဲ႔ တြဲၿပီး file တစ္ခုကို live ၾကည့္လို႔ ရပါေသးတယ္။

tai -f readme.txt လို႔ ရိုက္ enter ေခါက္မယ္။ တစ္ဖက္မွာ၊ ေနာက္ထပ္ terminal တစ္ခု ထပ္ဖြင့္ၿပီး readme.txt ကို
edit လုပ္မယ္၊ စာေၾကာင္းေတြ ထပ္ျဖည့္မယ္ဆိုရင္၊ ထပ္ျဖည့္လိုက္တဲ့ စာေၾကာင္းေတြဟာ tail -f နဲ႔ ဖြင့္ထားတဲ့ terminal
ထဲမွာ အခ်ိန္န႔တ
ဲ စ္ေျပးညီ သြားေျပာင္းလဲေနမွာပါ။

ၾကည့္ခ်င္တဲ့ line အေရအတြက္ကို tail –n 5 လို႔ သံုးၿပီး သတ္မွတ္ေပးလို႔ရပါတယ္။ 5 ေနရာမွာ ၾကည့္လိုတဲ့ line
အေရအတြက္ကို ထည့္ေပးရံုပါပဲ။

ဥပမာ၊ readme.txt ဆိုတဲ့ file ထဲက ေအာက္ဆံုးစာ ၅ ေၾကာင္းကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ tail -5 readme.txt လိ႔ု ရိုက္
ရပါမယ္။

၃။ cat >> သူကေတာ့ file ထဲမွာ ပါတဲ့ စာေၾကာင္း အားလံုးကို ျပသေပးပါတယ္။ terminal ညာဘက္ေဘးက scroll bar
ကို အသံုးျပဳၿပီး အထက္ေအာက္ ေရြ႔ၾကည့္ႏိုင္ပါတယ္။

ဥပမာ၊ readme.txt ဆိုတဲ့ file ထဲက စာေၾကာင္း အားလံုးကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ cat readme.txt လို႔ ရိုက္ ရပါမယ္။

၄။ more >> သူက စာေၾကာင္းေရဆန္႔သေလာက္ျပသေပးၿပီး အဆံုးထိ ဖတ္ခ်င္ရင္ enter key ေခါက္ၿပီး ေအာက္ကို ၁
ေၾကာင္းခ်င္း ဆင္းသြားႏိုင္ပါတယ္။ အထက္ေအာက္ ေရြ႔လ႔ို မရလို႔ သံုးရတာ သိပ္အဆင္မေျပပါဘူး။

ဥပမာ၊ readme.txt ကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ more readme.txt လို႔ ရိုက္ ရပါမယ္။

၅။ less >> သူကေတာ့ သံုးလို႔ ေကာင္းပါတယ္။ စာေၾကာင္းေတြကို ဖတ္ေနရင္း arrow key အသံုးျပဳၿပီး အထက္ေအာက္
ေရႊ႔ၾကည့္ႏိုင္ပါတယ္။
ဥပမာ၊ readme.txt ကို ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ less readme.txt လို႔ ရိုက္ ရပါမယ္။

ဖတ္ေနရင္းနဲ႔ ထြက္ခ်င္ရင္ Esc ႏွိပ္ q လို႔ ရိုပ္ပီး ထြက္ႏိုင္ပါတယ္။

ကဲ ! စာ file ေတြကို ၾကည့္ပံုၾကည့္နည္းကေတာ့ ဒီေလာက္ပါပဲ။

command ေတြကို ကာလံေဒသံအလိုက္ သင့္ေတာ္သလို အသံုးခ်ႏိုင္ပါေစ။

Editing text in linux


ဒီတစ္ခါေတာ့၊ linux ေပၚမွာ စာေရးမယ္။ ျပင္မယ္။ text file ေတြကို edit လုပ္မယ္။
ဒါေတြကို ေဆာင္ရြက္ဖို႔ အတြက္၊ linux မွာ text editor ေတြ အမ်ားႀကီး ရွိပါတယ္။ အဲဒီထဲကမွ၊ vim နဲ႔ gedit ဆိုတဲ့ text
editor ႏွစ္မ်ိဳးက တစ္ျခားဟာေတြထက္ ပိုေကာင္းမြန္တဲ့ အတြက္ လူသံုးမ်ားပါတယ္။

ကဲ ! text editing နဲ႔ ပတ္သက္တာေလး ေျပာၾကရေအာင္။

vim >> သူကေတာ့ command line အေျချပဳ text editor ပါ။ terminal ကို ဖြင့္ၿပီး text file ေတြကို edit
လုပ္ခ်င္တဲ့အခါ vim ကို သံုးရပါတယ္။

၁။ vim text editor ကို ဖြင့္ဖို႔ သံုးရမယ့္ command ကေတာ့ vim ပါ။ vi လို႔လည္း သံုးလို႔ရပါတယ္။

ဥပမာ၊ root ေအာက္က၊ home ေအာက္က၊ file1.txt ကို edit လုပ္ခ်င္တယ္ ဆိုပါစို႔။

ဒါအတြက္ ရိုက္ရမယ့္ command ကေတာ့ ေအာက္ပါ အတိုင္းပါပဲ။

[root@linux~]# vim /home/file1.txt

၂။ vim editor ထဲ ေရာက္သြားၿပီဆိုရင္ edit လုပ္ႏိုင္ဖို႔ အတြက္ keyboard ေပၚက a သို႔မဟုတ္ i သို႔မဟုတ္ insert key
ကို ႏွိပ္ေပးရပါမယ္။ ဒါဆိုရင္ edit mode ထဲ ေရာက္သြားမွာပါ။

၃။ ၿပီးရင္ ကိုယ္ ေရးမွတ္ခ်င္တာေတြ ေရးမွတ္ေပါ့။ စာသားေတြကိ mouse အသံုးျပဳၿပီး selection မွတ္ႏိုင္ပါတယ္

insert mode ထဲမွာ copy ကူးခ်င္တယ္ဆို ctr + shift + v နဲ႔ paste လုပ္ ေနရာခ်ခ်င္တယ္ဆို ctrl + shift + v ကို
သံုးရပါတယ္။ ဒါက လိုအပ္တဲ့အခါ သိထားဖို႔ပါ။

ကိစၥၿပီးလို႔ save လုပ္ၿပီး ထြက္မယ္ဆို keyboard ေပၚက Esc ကို ရိုက္၊ :wq လို႔ ထပ္ရိုက္ၿပီး ထြက္ရပါမယ္။ save and
exit လုပ္တဲ့ သေဘာေပါ့။

ဒီလို Esc နဲ႔ ထြက္တာကို extended mode လိ႔ု ေခၚပါတယ္။

၄။ save မလုပ္ပဲ ထြက္မယ္ဆို Esc ရိုက္၊ :q လိ႔ု ရိုက္ၿပီး ထြက္ရံုပါပဲ။


၅။ editor ထဲက ထြကလ
္ ႔ို မရရင္ force သံုးၿပီး ထြက္ရပါတယ္။ Esc ႏွိပ္ :q! လို႔ ရိုက္ၿပီး ထြက္တာကို force သံုးၿပီး
ထြက္တာလိ႔ု ေခၚပါတယ္။

၆။ စာေၾကာင္းေတြကို စာလံုးတစ္လံုးခ်င္းစီ ဒါမွမဟုတ္ line အလိုက္၊ block အလိုက္ selection မွတ္ခ်င္ရင္ visual mode
ကို ေျပာင္းရပါမယ္။ visual mode ကို ေျပာင္းမယ္ဆို v ကို ႏွိပ္ရပါတယ္။ visual mode ၃ မ်ိဳး ရွိပါတယ္။

v အေသးကို ႏွိပ္ရင္ သာမန္ visual mode ဆီ ေရာက္ပါမယ္။

shift + v ကို ႏွိပ္ရင္ line အလိုက္ selection လုပ္ႏိုင္တဲ့ visual line mode ဆီ ေရာက္ပါမယ္။

ctrl + v ကို ႏွိပ္ရင္ block အလိုက္ selection လုပ္ႏိုင္တဲ့ visual block mode ဆီ ေရာက္ပါမယ္။

၇။ visual mode ထဲမွာ copy ကူးတာကို yank လို႔ ေခၚၿပီး y key ကို အသံုးျပဳရပါတယ္။ ၁ ေၾကာင္းတည္း ကူးခ်င္ရင္ yy
လိ႔ု ႏွိပ္ေပးရၿပီး ၂ ေၾကာင္းကူးမယ္ဆို y2y စသျဖင့္ လုပ္ေဆာင္ရပါတယ္။

၈။ visual mode ထဲမွာ copy ကူးထားတာေတြ ေနရာခ် paste လုပ္တာကို put လို႔ ေခၚၿပီး၊ p key သံုးပါတယ္။ p ကို
ႏွိပ္လိုက္ရင္ cursor ရွိတဲ့ ေနရာမွာ ကူးထားတာေတြကို ေနရာခ်သြားမွာပါ။

၉။ visual mode ထဲမွာ စာေၾကာင္းေတြကို line အလိုက္ delete လုပ္မယ္ဆို d key ကို သံုးရပါတယ္။ d ကို ႏွိပ္တာနဲ႔ ၁
ေၾကာင္းခ်င္း ဖ်က္သြားမွာပါ။ x ကို ႏွိပ္ရင္ normal delete ပါ။ ပံုမွန္အတိုင္း ဖ်က္သြားပါလိမ့္မယ္။

တစ္ခု သိထားရမွာက၊ mode တစ္ခုကေန တစ္ခုဆီ ေျပာင္းတဲ့အခါ Esc key ႏွိပ္ၿပီးမွသာ ကူးေျပာင္းႏိုင္တယ္ ဆိုတာပါပဲ။

၁၀။ ေဆာင္ရြက္ထားတာေတြကို undo လုပ္မယ္ဆို ctrl + u ... redo လုပ္မယ္ဆို ctrl + r ကို အသံုးျပဳရပါမယ္။

vim text editor နဲ႔ ပတ္သက္တဲ့ တစ္ျခားသံုးႏိုင္တာေတြကို သိလိုရင္ေတာ့ man vi လိ႔ု ရိုက္ enter ေခါက္ၿပီး manual
page ထဲမွာ ေလ့လာႏိုင္ပါတယ္။

gedit >> သူကေတာ့ graphical interface နဲ႔ text editor ေလးပါ။ graphic ျဖစ္တာေၾကာင့္ အသံုးျပဳပံုက ရိုးရွင္း
လြယ္ကူပါတယ္။

ဒါ့ေၾကာင့္ အက်ယ္တဝင့္ ရွင္းျပမေနေတာ့ပါဘူး။

ဥပမာ၊ root ေအာက္က၊ home ေအာက္က၊ file1.txt ကို edit လုပ္ခ်င္တယ္ ဆိုပါစို႔။

ဒါအတြက္ ရိုက္ရမယ့္ command ကေတာ့ ေအာက္ပါ အတိုင္းပါပဲ။

[root@linux~]# gedit /home/file1.txt

ဒီလိုရိုက္ enter ေခါက္လိုက္ရင္ file1.txt ဟာ gedit application ေလးထဲမွာ ပြင့္လာပါလိမ့္မယ္။ သူ႔ရဲ့ graphical
interface ကို ေလ့လာၿပီး edit လုပ္ရံုေပါ့။
ကဲ ! linux ေပၚမွာ text editing လုပ္တဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုး အဆင္ေျပၾကပါေစ။

creating user account


ဒီတစ္ခါ linux မွာ user account ေတြ တည္ေဆာက္တဲ့အေၾကာင္း ေျပာရေအာင္။

linux မွာ user account အမ်ိဳးအစား ၃ မ်ိဳး ရွိပါတယ္။ အာ့ဒါေတြကေတာ့ …


၁။ superuser
၂။ system user
၃။ normal user

တိ႔ပ
ု ါပဲ။

၁။ superuser ဆိုတာ root account ကို ေျပာတာပါ။ linux system တစ္ခုလံုးမွာ လုပ္ပိုင္ခြင့္ အရွိဆံုး account ေပါ့။
သူ႔ရဲ့ UID က 0 ပါ။

၂။ system user ဆိုတာကေတာ့ linux system အတြက္ လိုအပ္တဲ့ account ေတြကို ဆိုလိုတာပါ။

၃။ normal user ဆိုတာကေတာ့ ရွင္းပါတယ္။ user က အသစ္ ထပ္မံတည္ေဆာက္လိုက္တဲ့ account ေတြေပါ့။

ဒီေနရာမွာ တစ္ခု ေျပာခ်င္တာက UID (user id) ပါ။ account တည္ေဆာက္စဥ္မွာ တြဲလ်က္ပါလာတဲ့ id ေပါ့။

1. UID 0 ဟာ root account ရဲ့ UID ပါ။

2. UID 1 ကေန 200 ထိကို system က သံုးတဲ့ UID ေတြအျဖစ္ သတ္မွတ္ပါတယ္။

3. UID 201 ကေန 999 ထိကို user က တည္ေဆာက္လိုက္တဲ့ system account ေတြ အတြက္ သတ္မွတ္ပါတယ္။

4. UID 1,000+ (တစ္ေထာင္ႏွင့္အထက္) ကိုေတာ့ normal account ေတြရဲ့ UID အျဖစ္ သတ္မွတ္ပါတယ္။

UID GID သတ္မွတ္တဲ့ေနရာမွာ ေနာက္ဆံုးေဆာက္ခဲ့တဲ့ UID GID ကို ၾကည့္ၿပီး တစ္တိုးသြားေလ့ရွိပါတယ္။

UID ရဲ့ default value ကို /etc/login.defs မွာ ဝင္ေရာက္ ျပင္ဆင္လို႔ ရပါတယ္။ ဥပမာ၊ default value ကို 2 လို႔
ျပင္လိုက္မယ္ဆို၊ user account ႏွစ္ခုထက္ ပိုေဆာက္လို႔ မရေတာ့ဘူးေပါ့။

account တစ္ခုရဲ့ UID ကို သိခ်င္ရင္ id ဆိုတဲ့ command နဲ႔ ၾကည့္လို႔ရပါတယ္။ ဥပမာ၊ tom ဆိုတဲ့ account ရဲ့ UID ကို
သိခ်င္တယ္ ဆိုပါစို႔။ ID tom လို႔ ရိုက္ enter ေခါက္ရံုပါပဲ။

ဒါက user account နဲ႔ သက္ဆိုင္တဲ့ UID အေၾကာင္းပါ။


user account တည္ေဆာက္တဲ့အေၾကာင္း ဆက္သြားလိုက္ၾကစို႔။

user account တစ္ခု တည္ေဆာက္မယ္ဆို useradd ဆိုတဲ့ command ကို သံုးပါတယ္။ ဥပမာ၊ tom ဆိုတဲ့ user
account တည္ေဆာက္မယ္ ဆိုပါစို႔။ useradd tom လို႔ ရိုက္ enter ေခါက္။

user account တစ္ခုကို password ေပးခ်င္ရင္ passwd ဆိုတဲ့ command ကို သံုးပါတယ္။ ဥပမာ၊ tom ဆိုတဲ့ account
ကို password ေပးမယ္ ဆိုပါစို႔။ passwd tom လိ႔ု သံုးရပါမယ္။

user account တစ္ခုကို ဖ်က္ခ်င္ရင္ေတာ့ userdel ဆိုတဲ့ command ကို -r ဆိုတဲ့ option နဲ႔ တြဲသံုးရပါတယ္။ ဥပမာ၊
tom ဆိုတဲ့ user account ကို ဖ်က္ခ်င္တယ္ ဆိုပါစို႔။ userdel -r tom လိ႔ု သံုးရပါမယ္။

user နဲ႔ ဆိုင္တဲ့ info ေတြကို /etc/passwd မွာ ဝင္ေရာက္ ၾကည့္ရွဳႏိုင္ပါတယ္။ cat /etc/passwd ေပါ့။

/etc/passwd မွာ user name, password, user id, group id, GECOS, home directory နဲ႔ shell type ဆိုတဲ့ အပိုင္း
၇ ပိုင္း (1.username 2.password 3.UID 4.GID 5.GECOS 6.home dir 7.login shell) ကို colon : နဲ႔ ျခားၿပီး
ေဖၚျပထားတာ ေတြ႔ရပါလိမ့္မယ္။

ဒီေနရာမွာ GECOS ဆိုတာ user နဲ႔ ပတ္သက္တဲ့ comment ထည့္သြင္းထားတဲ့ ေနရာကို ဆိုလိုတာပါ။

Login ၀င္စရာ မလိုပဲ system ရဲ့ လိုအပ္ခ်က္အရ တည္ေဆာက္ထားတဲ့ user account ေတြရဲ့ shell ေနရာမွာ
/sbin/nologin လို႔ ပါေလ့ရွိတယ္။

user နဲ႔ ဆိုင္တဲ့ UID, GID နဲ႔ ပါ၀င္ထားတဲ့ group ေတြကို id နဲ႔ ၾကည့္ႏိုင္ပါတယ္။ [root@linux~]# id username

လြယ္လြယ္ ရွင္းရွင္းပါပဲေနာ္။

user account အမ်ိဳးအစားေတြ UID နဲ႔ user account တည္ေဆာက္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။
creating group
linux ေပၚမွာ user account ေတြ create လုပ္တာ သိၿပီးတဲ့ေနာက္ group ေတြ အေၾကာင္း ေျပာၾကရေအာင္။

linux မွာ

၁။ primary group နဲ႔

၂။ supplementary group ဆိုၿပီး group အမ်ိဳးအစား ၂ ခု ရွိပါတယ္။

၁။ primary group ဆိုတာကေတာ့ user account တစ္ခု create လုပ္စဥ္မွာ တြဲလ်က္ပါလာတဲ့ default group ကို
ဆိုလိုတာပါ။

ဥပမာ၊ tom ဆိုတဲ့ user account ကို ေဆာက္လိုက္ရင္ tom ဆိုတဲ့ group ေလးပါ တစ္ခါတည္း ေဆာက္ၿပီးသား
ပါလာမွာပါ။

user account တစ္ခုဟာ ဘယ္ group ေတြထဲမွာ member အျဖစ္ ပါဝင္ေနသလဲ သိခ်င္ရင္ groups ဆိုတဲ့ command
နဲ႔ ၾကည့္ႏိုင္ပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user ဟာ ဘယ္ group ေတြရဲ့ member အျဖစ္ ဝင္ထားသလဲ သိခ်င္တယ္ ဆိုပါစို႔။ groups tom လို႔
ရိုက္ enter ေခါက္ရံုပါပဲ။

၂။ supplementary group ဆိုတာကေတာ့ user ကေန ထပ္မံ တည္ေဆာက္လိုက္တဲ့ group ေတြကို ဆိုလိုတာပါ။

group တစ္ခု တည္ေဆာက္မယ္ဆို groupadd ဆိုတဲ့ command ကို သံုးရပါတယ္။

ဥပမာ၊ team1 ဆိုတဲ့ group တစ္ခု ေဆာက္ခ်င္တယ္ ဆိုပါစို႔။ groupadd team1 လိ႔ု ရိုက္ enter ေခါက္ေပါ့။

group တစ္ခုကို ဖ်က္ခ်င္ရင္ groupdel ဆိုတဲ့ command ကို သံုးရပါတယ္။

ဥပမာ၊ team1 ဆိုတဲ့ group ကို ဖ်က္ခ်င္တယ္ ဆိုပါစို႔။ groupdel team1 ေပါ့။

group ေတြရဲ့ info ကို /etc/group မွာ ၀င္ၾကည့္ႏိုင္ပါတယ္။


[root@linux~]# cat /etc/group

ဘယ္ group ထဲမွာ ဘယ္ user ေတြ ပါသလဲ သိခ်င္ရင္ /etc/gshadow မွာ ၀င္ၾကည့္ႏိုင္ပါတယ္။
[root@linux~]# cat /etc/gshadow

ကဲ ! group တစ္ခု create လုပ္တဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အဆင္ေျပၾကပါေစ။
user account ႏွင့္ သက္ဆိုင္ေသာ .....!
linux မွာ user account ေတြ တည္ေဆာက္တာကို ေျပာခဲ့ၿပီးပါၿပီ။ ဒီတစ္ခါ user account ေတြကို လိုအပ္ခ်က္အရ
ဘယ္လို modify လုပ္ႏိုင္မလဲဆိုတာ ေလ့လာၾကရေအာင္။

user account တစ္ခုကို modify လုပ္ခ်င္တဲ့အခါ usermod ဆိုတဲ့ command ကို option ေတြန႔ဲ တြဲသံုးရပါတယ္။
၁။ usermod -u >> useraccount တစ္ခုရဲ့ UID (user id) ကို ေျပာင္းလဲခ်င္တဲ့အခါ သံုးပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user ရဲ့ UID ကို 1500 အျဖစ္ ေျပာင္းလဲမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က
ေအာက္ပါအတိုင္းပါ။

usermod -u 1500 tom

၂။ usermod -C >> user နဲ႔ ပတ္သက္တဲ့ info ေလးေတြ တြဲထည့္ခ်င္ရင္ သံုးပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user နဲ႔အတူ my name is tom ဆိုတဲ့ info ေလး တြဲထည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
ကေတာ့ ေအာက္ပါ အတိုင္းပါ။

usermod -C "my name is tom" tom

၃။ usermod -a -G >> user ကို တစ္ျခား group ကေန မဖယ္ရွားပဲ၊ supplementary group တစ္ခုရဲ့ member အျဖစ္
သြင္းခ်င္တဲ့အခါ သံုးပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user ကို team1 ဆိုတဲ့ group ထဲ သြင္းမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့
ေအာက္ပါအတိုင္းပါ။

usermod -a -G team1 tom

၄။ usermod -g >> group တစ္ခုကို user ရဲ့ primary group အျဖစ္ သတ္မွတ္ခ်င္တဲ့အခါ သံုးပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user ရဲ့ account ေဆာက္စဥ္က တြဲလ်က္ပါလာတဲ့ primary group က tom ပါ။ team1 ဆိုတဲ့ group
ကို primary group အျဖစ္ ေျပာင္းလဲ သတ္မွတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က ေအာက္ပါအတိုင္းပါ။

usermod -g team1 tom

၅။ usermod -d >> user ရဲ့ home directory ကို ေျပာင္းလဲ သတ္မွတ္ေပးခ်င္တဲ့အခါ သံုးပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user ရဲ့ account ဖြင့္စဥ္က တြဲလ်က္ပါလာတဲ့ home directory က /home/tom ပါ။ အဲဒီအစား
/home/www ကို tom ရဲ့ home directory အျဖစ္ ေျပာင္းလဲ သတ္မွတ္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က
ေအာက္ပါအတိုင္းပါ။

usermod -d /home/www tom


၆။ usermod -m -d >> user ရဲ့ home directory ကို တည္ေနရာ ေရႊ႔ခ်င္တဲ့အခါ သံုးပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user ရဲ့ account ဖြင့္စဥ္က တြဲလ်က္ပါလာတဲ့ tom ဆိုတဲ့ home directory ရဲ့ တည္ေနရာက၊ /home
ရဲ့ ေအာက္မွာပါ။ ဒါကို /home/www ဆီ tom ရဲ့ home directory ကို ေရႊ႔ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
က ေအာက္ပါအတိုင္းပါ။

usermod -m -d /home/www tom

၇။ usermod -s >> user ရဲ့ default shell ကို ေျပာင္းလဲ သတ္မွတ္ခ်င္တဲ့အခါ သံုးပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user ရဲ့ default shell က bash shell ပါ။ ဒါကို sh shell အျဖစ္ ေျပာင္းလဲ သတ္မွတ္ခ်င္တယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command က ေအာက္ပါအတိုင္းပါ။

usermod -s /bin/sh tom

၈။ usermod -L >> user account တစ္ခုကို lock ခ်ခ်င္တဲ့အခါ သံုးပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user account ကို lock ခ်မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က ေအာက္ပါအတိုင္းပါ။

usermod -L tom

၉။ usermod -U >> lock ခ်ခံထားရတဲ့ user account တစ္ခု ကို unlock ျပန္လုပ္မယ့္အခါ သံုးပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user account ကို unlock ျပန္လုပ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က ေအာက္ပါအတိုင္းပါ။

usermod -U tom

၁၀။ gpasswd -d >> user ကို supplementary group တစ္ခုထဲကေန ျပန္ဖယ္ရွားခ်င္တဲ့အခါ သံုးပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user ကို team1 ဆိုတဲ့ group ထဲကေန ဖယ္ရွားမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က
ေအာက္ပါအတိုင္းပါ။

gpasswd -d tom team1

၁၁။ normal user account တစ္ခုကို sudo ဆိုတဲ့ command နဲ႔ superuser ျဖစ္တဲ့ root ကဲ့သို႔၊ အသံုးျပဳခြင့္
ေပးဖိ႔အ
ု တြက္ အဲဒီ user ကို wheel ဆိုတဲ့ group ထဲ ထည့္ေပးရပါ။ sudo နဲ႔ ဆိုင္တဲ့ configuration ေတြကို
/etc/sudoers မွာ ၀င္ၾကည့္ႏိုင္တယ္။

ကဲ ! ခုဆို အေတာ္ေလး စံုသြားပါၿပီေနာ္။

user account တစ္ခုန႔ဲ သက္ဆိုင္တဲ့အေၾကာင္းေတြကေတာ့ ဒီေလာက္ပါပဲ။


အားလံုးပဲ အဆင္ေျပပါေစ။

group ႏွင့္ သက္ဆိုင္ေသာ .....!


linux မွာ group တည္ေဆာက္တဲ့အေၾကာင္း တင္ေပးၿပီးပါၿပီ။ ဒီတစ္ခါ တည္ေဆာက္ထားတဲ့ group ေတြကို
လိုအပ္ခ်က္အရ ဘယ္လို ျပင္ဆင္သလဲဆိုတာ ေလ့လာၾကည့္ရေအာင္။

group တစ္ခုန႔ဲ သက္ဆိုင္တာေတြကို ျပင္ဆင္ခ်င္တဲ့အခါ groupmod ဆိုတဲ့ command ကို option ေတြန႔ဲ
တြဲသံုးရပါတယ္။

စလိုက္ၾကရေအာင္ !

၁။ groupmod -g >> group ရဲ့ GID (group id) ကို ေျပာင္းလဲ သတ္မွတ္ခ်င္တဲ့အခါ သံုးပါတယ္။

ဥပမာ၊ team1 ဆိုတဲ့ group ရဲ့ GID ကို 1500 လိ႔ု ေျပာင္းမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့
ေအာက္ပါအတိုင္းပါ။

groupmod -g 1500 team1

၂။ group -n >> group ရဲ့ name ကို ေျပာင္းလဲလိုတဲ့အခါ သံုးပါတယ္။

ဥပမာ၊ team1 ဆိုတဲ့ group ကို share အျဖစ္ name ေျပာင္းလဲမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့
ေအာင္ပါအတိုင္းပါ။

groupmod -n share team1

group နဲ႔ သက္ဆိုင္တာေတြကို ျပင္ဆင္တဲ့ groupmod ဆိုတဲ့ command ရဲ့ အသံုးျပဳပံုေတြကို man groupmod လို႔
ရိုက္ၿပီး ဆက္လက္ေလ့လာႏိုင္ပါတယ္။

group ေတြကို modify လုပ္ ျပင္ဆင္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။
superuser Vs normal user

သိထားသင့္တဲ့ အခ်က္ေလးေပါ့။ super user နဲ႔ normal user ရဲ့ ကြဲျပားမွဳေတြကို ေလ့လာၾကည့္ရေအာင္။

၁။ linux system ေပၚမွာ လုပ္ပိုင္ခြင့္ အရွိဆံုး account ကို superuser လို႔ ေခၚပါတယ္။ system file ေတြကို configure
လုပ္ျခင္း၊ user account မ်ား ထပ္မံ တည္ေဆာက္ျခင္း၊ ဖ်က္ပစ္ျခင္း၊ password ႏွင့္ဆိုင္ေသာ အခ်က္အလက္မ်ားကို
manage လုပ္ျခင္း စတာေတြကို စီမံ ေဆာင္ရြက္ ႏိုင္ပါတယ္။

linux system မွာ root ဟာ တစ္ခုတည္းေသာ superuser account ပါပဲ။ သူ႔အတြက္ password ကို linux ကို စတင္
install လုပ္စဥ္ကတည္းက သတ္မွတ္ေပးခဲ့ရပါတယ္။

[root@xerocool~]# ဆိုတဲ့ shell prompt အဆံုးမွာ ရွိတဲ့ # သေကၤတသည္ ယခု အသံုးျပဳေနေသာ user ဟာ root
account ျဖစ္ေၾကာင္း ညႊန္းဆိုပါတယ္။

root account ကေန normal account တစ္ခုဆီ ကူးေျပာင္းခ်င္ရင္ su ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။

ဥပမာ၊ root account ကေန tom ဆိုတဲ့ normal account ဆီ ကူးေျပာင္းမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က

ေအာက္ပါအတိုင္းပါ။

su tom

ဒါက root account ရဲ့ အေၾကာင္းပါ။

၂။ normal user ဆိုတာကေတာ့၊ အသစ္ ထပ္မံတည္ေဆာက္လိုက္တဲ့ user account ေတြကို ဆိုလိုတာပါ။ root
account လို လုပ္ပိုင္ခြင့္ေတြ မရွိပါဘူး။

[tom@xerocool~]$ ဆိုတဲ့ shell prompt အဆံုးမွာ ရွိတဲ့ $ သေကၤတသည္ ယခု အသံုးျပဳေနေသာ user ဟာ normal
account ျဖစ္ေၾကာင္း ညႊန္းဆိုပါတယ္။

normal account ကေန root account ဆီ ကူးေျပာင္းခ်င္ရင္ su - ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ account ကေန root ဆိုတဲ့ superuser account ဆီ ကူးေျပာင္းမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command ကေတာ့ ေအာက္ပါအတိုင္းပါ။

su -

လိုအပ္ခ်က္အရ၊ normal account တစ္ခုကို root account ကဲ့သို႔ ေဆာင္ရြက္ေစလိုတဲ့အခါ၊ sudo ဆိုတဲ့ command ကို
အသံုးျပဳရပါတယ္။
ဥပမာ၊ tom ဆိုတဲ့ normal account ဟာ၊ jerry ဆိုတဲ့ user account ကို တည္ေဆာက္မယ္ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command ကေတာ့ ေအာက္ပါအတိုင္းပါ။

sudo useradd jerry

normal account တစ္ခု အေနနဲ႔ ခုလို sudo ဆိုတဲ့ command ကို အသံုးျပဳၿပီး superuser ကဲ့သို႔ ျပဳမူႏိုင္ဖို႔၊ root
account ကေန အဲဒီ normal user ကို wheel ဆိုတဲ့ group ထဲ သြင္းေပးရပါတယ္။

ဥပမာ၊ root အေနနဲ႔ tom ဆိုတဲ့ normal account ကို sudo အသံုးျပဳခြင့္ ေပးမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

usermod -a -G wheel tom

sudo အသံုးျပဳခြင့္ ေပးျခင္းနဲ႔ ဆိုင္တဲ့ အခ်က္အလက္ေတြကို /etc/sudoers မွာ ဝင္ေရာက္ ဖတ္ရွဳႏိုင္ပါတယ္။


အသံုးျပဳရမယ့္ command ကေတာ့ less /etc/sudoers ေပါ့။

တစ္ခု သတိျပဳရမွာက၊ sudo အသံုးျပဳခြင့္ေပးဖို႔ အတြက္ normal account တစ္ခုကို wheel group ထဲကို add
ၿပီးတာေတာင္မွ၊ sudo သံုးဖို႔ အဆင္မေျပေသးရင္ /etc/sudoers ထဲကို ဝင္ျပင္ေပးရပါမယ္။ ျပင္ေပးရမယ့္
အဆင့္ေတြကေတာ့ ေအာက္ပါအတိုင္းပါ။

A. vi /etc/sudoers နဲ႔ ဖြင့္ပါ။

B. i ကို ႏွိပ္ၿပီး insert mode ထဲ ဝင္ပါ။

C. #%wheel ALL=(ALL) ALL ကို ရွာပါ။

D. #%wheel ALL=(ALL) ALL ရဲ့ ေရွ့ဆံုးက # သေကၤတကို ဖ်က္ပစ္လိုက္ပါ။

E. Esc ႏွိပ္၊ :wq! နဲ႔ ထြက္ပါ။

ဒါဆို အဆင္ေျပပါၿပီ။ normal account တစ္ခုကို wheel group ထဲသြင္းၿပီးတာေတာင္ sudo သံုးဖို႔ အဆင္မေျပေသးရင္
ဒီနည္းအတိုင္း ေျဖရွင္းႏိုင္ပါတယ္။

ကဲ ! စာလည္း နည္းနည္း ရွည္သြားၿပီဗ်။ super user နဲ႔ normal user အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။
file ႏွင့္ directory မ်ားကို permission သတ္မွတ္ျခင္း
linux ေပၚမွာ ဘာေတြ ရွိမလဲဆိုေတာ့ file ေတြ directory ေတြ ရွိပါမယ္။ အေရးႀကီးတာေတြ ရွိသလို အေရး
မႀကီးတာေတြလည္း ရွိမယ္ေပါ့။ ဒီေတာ့ အေရးႀကီးတာေတြကို မသက္ဆိုင္သူေတြ ရန္က ကာကြယ္ဖ႔ို လိုအပ္လာၿပီေပါ့။

အဲဒီမွာ permission က အေရးပါလာပါၿပီ။

linux system ကို ၀င္ေရာက္ အသံုးျပဳေနတဲ့ user ေတြ၊ တူညီတဲ့ group တစ္ခုရဲ့ member ေတြ၊ group ထဲမွာ မပါတဲ့
တစ္ျခား other user ေတြ အေနနဲ႔၊ အဲဒီ file ေတြ directory ေတြကို access လုပ္ရာမွာ၊ သူတို႔ရဲ့ အဆင့္အလိုက္
permission ေတြ ခြဲျခားသတ္မွတ္ ေပးထားႏိုင္ပါတယ္။

permission သတ္မွတ္နည္း method ေတြဟာ ရွဳပ္ေထြးသလို ထင္ရေပမယ့္ ေသခ်ာေလ့လာၾကည့္ရင္ နားလည္


ကြ်မ္းက်င္သြားပါလိမ့္မယ္။ ကဲ ! စလိုက္ၾကရေအာင္။

permission တစ္ေၾကာင္းမွာ အပိုင္း ၃ ပိုင္းပါ၀င္ပါတယ္။

၁။ file သို႔မဟုတ္ directory ကို ဖန္တီးတဲ့ user အတြက္ သတ္မွတထ


္ ားတဲ့ permission
၂။ group ထဲမွာ ပါ၀င္တဲ့ user ေတြ အတြက္ သတ္မတ
ွ ္ထားတဲ့ permission
၃။ file ကို ဖန္တီးသူလည္း မဟုတ္၊ group ထဲမွာလည္း မပါတဲ့ other user ေတြ အတြက္ သတ္မွတထ
္ ားတဲ့ permission

စသျဖင့္ ၃ ပိုင္း ခြဲျခားထားပါတယ္။

မွတ္ရလြယ္ေအာင္ အတိုေျပာရရင္

၁။ user (u)
၂။ group (g)
၃။ other (o)

ဆိုတဲ့ အပိုင္း ၃ ပိုင္းေပါ့။

ဥပမာ၊ tom နဲ႔ jerry ဆိုတဲ့ user ႏွစ္ဦးဟာ hackergroup ဆိုတဲ့ group ထဲမွာ member အျဖစ္ပါတယ္။ အဲဒီ tom ဆိုတဲ့
user က file1 ဆိုတာေလးကို တည္ေဆာက္လိုက္မယ္ ဆိုပါစို႔။ tom ဆိုတဲ့ user ဟာ အဲဒီ file ေလးရဲ့ owner အျဖစ္
file1 ကို access လုပ္ႏိုင္မယ္။ jerry သည္လည္း hackergroup ဆိုတဲ့ group ထဲမွာ ပါတဲ့ အတြက္ member တစ္ဦး
အျဖစ္ file1 ကို access လုပ္ႏိုင္မယ္။ owner လည္း မဟုတ္ group ထဲမွာလည္း မပါတဲ့ other user ေတြသည္လည္း
သူတို႔ အတြက္ သတ္မွတေ
္ ပးထားတဲ့ permission အရ file1 ကို access လုပ္ႏိုင္မယ္။ ဒီသေဘာပါ။

ဥပမာ၊ အဲဒီ file1 ဆိုတာေလးကို ls –l file1 ဆိုၿပီး ေခၚၾကည့္လိုက္ရင္၊ rw-rw-r-- ဆိုၿပီး ေတြ႔ရပါမယ္။ ေရွ့ဆံုးက rw- က
ဖန္တီးတဲ့ user (tom) အတြက္ သတ္မွတထ
္ ားတဲ့ permission ပါ။ ဒုတိယ rw- က group ထဲမွာပါတဲ့ user ေတြ (jerry)
အတြက္ သတ္မွတထ
္ ားတဲ့ permission ပါ။ တတိယ r-- ကေတာ့ owner လည္း မဟုတ္ group ထဲမွာလည္း မပါတဲ့၊
other user ေတြ အတြက္ သတ္မွတ္ထားတဲ့ permission ပါ။ ဒါကို permission သတ္မွတ္ခ်က္ လို႔ ေခၚပါတယ္။
permission ၃ မ်ိဳးရွိပါတယ္။ အဲဒါေတြကေတာ့၊

read (r) numeric တန္ဖိုးအားျဖင့္ 4


write (w) numeric တန္ဖိုးအားျဖင့္ 2
execute (x) numeric တန္ဖိုးအားျဖင့္ 1

စသျဖင့္ ရွိပါတယ္။

permission ေပးတဲ့အခါ chmod ဆိုတဲ့ command ကို အသံုးျပဳပါတယ္။

permission ေပးနည္းကေတာ့ ၁။ symbolic နဲ႔ ၂။ numeric ဆိုၿပီး ၂ နည္း ရွိပါတယ္။

၁။ symbolic method :: symbolic ျဖင့္ permission ေပးတယ္ ဆိုတာကေတာ့ read (r), write (w), execute (x) စတဲ့
သတ္မွတ္ခ်က္ေတြကို rwx စသျဖင့္ အတိုေကာက္ သတ္မွတ္ၿပီး ေပးတဲ့ နည္းပါ။

file တစ္ခုကို permission တိတက


ိ ်က် သတ္မွတ္ေပးခ်င္တဲ့ အခါ = သေကၤတကို သံုးပါတယ္။

ဥပမာ၊ file1 ကို user အတြက္ read write execute ဆိုတဲ့ permission, group အတြက္ read write ဆိုတဲ့
permission, other အတြက္ read only ဆိုတဲ့ permission၊ စသျဖင့္ တိတိက်က် သတ္မွတ္ေပးမယ္ ဆိုပါစို႔။ = နဲ႔ တြဲၿပီး
ေအာက္ပါအတိုင္း တစ္ဆင့္ခ်င္း သတ္မတ
ွ ္သြားရမွာပါ။

user (u) အတြက္ >> chmod u=rwx file1


group (g) အတြက္ >> chmod g=rw file1
other (o) အတြက္ >> chmod o=r file1

file1 ကို ls –l file1 ဆိုၿပီး ျပန္ေခၚၾကည့္လိုက္တဲ့အခါ rwxrw-r-- လို႔ ေတြ႔ရပါမယ္။ - သေကၤတကေတာ့ permission
တစ္ခုမွာ rwx ဆိုၿပီး ရွိရမွာျဖစ္ၿပီး၊ ကြက္လပ္ျဖစ္ေနတဲ့ ေနရာေတြကို - နဲ႔ ျဖည့္ထားတဲ့သေဘာပါ။

ေပးထားတဲ့ permission ထဲက ျပန္ေလွ်ာ့ခ်င္တဲ့အခါ - သေကၤတကို သံုးပါတယ္။

ဥပမာ၊ ေစာေစာက file1 မွာ user အတြက္ read write execute လို႔ ေပးထားခဲ့တယ္။ အဲဒီထဲကမွ execute ကို
ျပန္ျဖဳတ္ခ်င္တယ္ ဆိုပါစို႔။ - နဲ႔ တြဲၿပီး ေအာက္ပါအတိုင္း သတ္မွတ္သြားရမွာပါ။

user (u) အတြက္ >> chmod u-x file1

ဥပမာ၊ ေစာေစာက file1 မွာ group အတြက္ read write လို႔ ေပးထားခဲ့တယ္။ အဲဒီထဲကမွ write ကို ျပန္ျဖဳတ္ခ်င္တယ္
ဆိုပါစို႔။ - နဲ႔ တြဲၿပီး ေအာက္ပါအတိုင္း သတ္မွတ္သြားရမွာပါ။
group (g) အတြက္ >> chmod g-w file1

ဥပမာ၊ ေစာေစာက file1 မွာ other အတြက္ read လို႔ ေပးထားခဲ့တယ္။ အဲဒီထဲကမွ read ကို ျပန္ျဖဳတ္ခ်င္တယ္၊ ဘာ
permission မွ မေပးေတာ့ဘူး။ access လုပ္ခြင့္ မေပးေတာ့ဘူး ဆိုပါစို႔။ - နဲ႔ တြဲၿပီး ေအာက္ပါအတိုင္း
သတ္မွတသ
္ ြားရမွာပါ။

other (o) အတြက္ >> chmod o-r file1

ဟုတ္ၿပီ။ file1 ကို ls –l file1 ဆိုၿပီး ျပန္ေခၚၾကည့္လိုက္တဲ့အခါ rw--w---- လိ႔ု ေတြ႔ရပါမယ္။

ေပးထားတဲ့ permission ထဲကို ထပ္ေပါင္းေပးခ်င္တဲ့အခါ + သေကၤတကို သံုးပါတယ္။

ဥပမာ၊ file1 မွာ user (u) အတြက္ read write လို႔ ေပးထားတာကို execute (x) ဆိုတာေလး
ထပ္ေပါင္းထည့္ေပးခ်င္တယ္ ဆိုပါစို႔။ + နဲ႔ တြဲၿပီး ေအာက္ပါအတိုင္း သတ္မွတ္သြားရမွာပါ။

user (u) အတြက္ >> chmod u+x file1

မွတ္စရာ အေနနဲ႔က၊ ၁။ user (u) ၂။ group (g) ၃။ other (o) ဆိုတဲ့ အပိုင္း ၃ ပိုင္းလံုးကို တစ္ၿပိဳင္နက္ permission
သတ္မွတ္ခ်င္တဲ့အခါ a ဆိုတဲ့ symbol ကို သံုးတယ္ ဆိုတာပါပဲ။

ဥပမာ၊ file1 ဆိုတဲ့ file ကို၊ user (u) အတြက္ read, write and execute (rwx) ၊ group အတြက္ rwx ၊ other (o)
အတြက္လည္း rwx သတ္မွတ္မယ္ ဆိုပါစို႔။ a နဲ႔ တြဲၿပီး ေအာက္ပါအတိုင္း သတ္မွတ္ႏိုင္ပါတယ္။

အားလံုး အတြက္ >> chmod a=rwx file1

ကဲ ! ခုေလာက္ဆို symbolic နည္းကို သံုးၿပီး permission ေပးတာကို သေဘာေပါက္လိမ့္မယ္ ထင္ပါတယ္။ ၂


ေခါက္ေလာက္ ထပ္ဖတ္ၾကည့္ဖို႔ အဆိုျပဳပါရေစ။

၂။ numeric method :: numeric ျဖင့္ permission ေပးတယ္ဆိုတာကေတာ့ ေစာေစာက အသံုးျပဳတဲ့ rwx ေနရာမွာ
numeric တန္ဖိုး ေတြ အစားထိုးၿပီး သတ္မွတ္တာကို ဆိုလိုတာပါ။

အစျပန္ေကာက္ရရင္၊ permission ၃ မ်ိဳးရွိပါတယ္။ အဲဒါေတြကေတာ့၊

read (r) numeric တန္ဖိုးအားျဖင့္ 4


write (w) numeric တန္ဖိုးအားျဖင့္ 2
execute (x) numeric တန္ဖိုးအားျဖင့္ 1

စသျဖင့္ ရွိပါတယ္။
အဲဒီ 4 (r) … 2 (w) … 1 (x) ဆိုတဲ့ numeric တန္ဖိုးေတြကို ေပါင္းစပ္ၿပီး permisson သတ္မွတ္တာကို numeric
method လိ႔ု ေခၚတာပါ။

ဥပမာ A၊ file1 မွာ user အတြက္ full control သတ္မွတ္ခ်က္ ကို symbolic method နဲ႔ ေပးမယ္ဆို rwx လို႔
သတ္မွတ္ေပးရမွာပါ။ အဲဒီအစား numeric method ကို သံုးမယ္ဆို၊ 4 (r) + 2 (w) + 1 (x) =7 ရတာေၾကာင့္ rwx
အစား 7 လိ႔ု ေရးရပါတယ္။

ဥပမာ B၊ file1 မွာ group အတြက္ read write သတ္မွတ္ခ်က္ ကို symbolic method နဲ႔ ေပးမယ္ဆို rw လို႔
သတ္မွတ္ေပးရမွာပါ။ အဲဒီအစား numeric method ကို သံုးမယ္ဆို၊ 4 (r) + 2 (w) =6 ရတာေၾကာင့္ rw အစား 6 လို႔
ေရးရပါတယ္။

ဥပမာ C၊ file1 မွာ other အတြက္ read only သတ္မွတ္ခ်က္ ကို symbolic method နဲ႔ ေပးမယ္ဆို r လို႔
သတ္မွတ္ေပးရမွာပါ။ အဲဒီအစား numeric method ကို သံုးမယ္ဆို၊ 4 (r) = 4 ရတာေၾကာင့္ r အစား 4 လို႔
ေရးရပါတယ္။

ဥပမာ ABC သံုးခုေပါင္းၿပီး file1 ကို numeric method နဲ႔ မွတ္ေပးရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။

user, group, other သံုးခုလံုး အတြက္ >> chmod 764 file1

ဆက္ေလ့လာ ၾကည့္ရေအာင္။

numeric method အရ၊ 4 (r) … 2 (w) … 1 (x) စတဲ့၊ တန္ဖိုးေတြကို ေပါင္းစပ္လိုက္တဲ့ အခါ ေအာက္ပါအတိင
ု ္း
permission (၈) မ်ိဳး ရရွိပါတယ္။

7 : full control, read, write, execute >> rwx = 4+2+1 = 7


6 : read and write >> rw = 4+2 = 6
5 : read and execute >> rx = 4+1 = 5
4 : read only >> r =4 =4
3 : write and execute >> wx = 2+1 = 3
2 : write only >> w =2 =2
1 : execute only >> x =1 =1
0 : none >> - =- =0

ဥပမာ၊ numeric method ကို အသံုးျပဳၿပီး၊ file1 ကို user အတြက္ read and write (rw), group အတြက္ read and
execute (rx), other အတြက္ read only (r) ေပးမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။

chmod 654 file1


ဥပမာ၊ symbolic method ကို အသံုးျပဳၿပီး၊ file1 ကို user အတြက္ read and write (rw), group အတြက္ read and
execute (rx), other အတြက္ read only (r) ေပးမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။

user (u) အတြက္ >> chmod u=rw file1


group (g) အတြက္ >> chmod g=rx file1
other (o) အတြက >> chmod o=r file1

permission သတ္မွတ္ေပးၿပီးရင္ ls –l file1 လို႔ ရိုက္ enter ေခါက္ၿပီး စစ္ေဆးၾကည့္လိုက္ပါဦး။

file ေတြန႔ဲ အလားတူပါပဲ၊ directory ေတြကိုလည္း symbolice method နဲ႔ numeric method သံုးၿပီး permission
သတ္မွတ္ေပးႏိုင္ပါတယ္။ permission ေပးၿပီးရင္ directory ေတြကုိ ျပန္စစ္ရမယ့္ command ကေတာ့ ls –ld dirname
ပါ။

ေနာက္တစ္ခ်က္က၊ directory တစ္ခုကို permission ေပးတဲ့အခါ သူ႔ေအာက္မွာ ရွိတဲ့ file ေတြ sub directory ေတြကိုပါ
သက္ေရာက္သြားေစခ်င္ရင္ chmod ကို -R ဆိုတဲ့ option နဲ႔ တြဲသံုးႏိုင္ပါတယ္။ chmod –R 750 directoryname
စသျဖင့္ေပါ့။

ဒီေနရာမွာ၊ method ႏွစ္ခုရဲ့ ကြာျခားခ်က္အေနနဲ႔က၊ symbolic method သံုးရင္ user, group, other စတာေတြကို
တစ္ေၾကာင္းခ်င္း ခြဲေပးရတာျဖစ္ၿပီး၊ numeric method သံုးရင္ေတာ့ တစ္ေၾကာင္းတည္းနဲ႔ ကိစၥ ၿပီးေျမာက္ႏိုင္တာပါပဲ။

file ေတြ directory ေတြကို permission သတ္မွတ္ေပးပံုေပးနည္းေတြကေတာ့ ဒီေလာက္ပါပဲ။ အနည္းငယ္


ရွဳုပ္ေထြးသလို ရွိတာေၾကာင့္ တစ္ႀကိမ္တည္းနဲ႔ မရွင္းလင္းရင္၊ အစအဆံုး ၃ ႀကိမ္ေလာက္ ျပန္ဖတ္ပါ။ စမ္းသပ္ၾကည့္ပါ လို႔
အဆိုျပဳပါရေစ။

အားလံုးပဲ အဆင္ေျပပါေစ။
special permission
ရိုးရိုး permission ေတြအေၾကာင္းၿပီးသြားေတာ့၊ ခုတစ္ခါ special permission ေတြ အေၾကာင္း ဆက္လိုက္ရေအာင္။

chmod နဲ႔ တြဲလ်က္

၁။ user (u) အတြက္ special permission (s) : u+s


၂။ group (g) အတြက္ special permission (s) : g+s
၃။ other (o) အတြက္ sticky (t) : o+t

ဆိုၿပီး ၃ မ်ိဳး ရွိပါတယ္။

၁။ u+s >> အဲဒီ file ကို ပိုင္ဆိုင္တဲ့ user အျဖစ္ run ပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user က file1 ဆိုတဲ့ file ကို ေဆာက္လိုက္တယ္။ ၿပီးရင္ chmod u+s file1 လို႔ user နဲ႔ ဆိုင္တဲ့
special permission ေပးလိုက္တယ္ ဆိုပါစို႔။

[tom@linux~]# chmod u+s file1

jerry ဆိုတဲ့ user က အဲဒီ file1 ကို လာ run မယ္ ဆိုပါစို႔။ အဲဒီ file ဟာ tom ဆိုတဲ့ user အေနနဲ႔ပဲ run ပါတယ္။
ဒီသေဘာပါ။

၂။ g+s >> အဲဒီ file ကို ပိုင္ဆိုင္တဲ့ group အျဖစ္ run ပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user က dir1 ဆိုတဲ့ directory ကို ေဆာက္လိုက္တယ္။ အဲဒီ directory ကို hacker ဆိုတဲ့ group က
ပိုင္တယ္ေပါ့။ ၿပီးရင္ tom က chmod g+s dir1 လို႔ group နဲ႔ ဆိုင္တဲ့ special permission ေပးလိုက္တယ္ ဆိုပါစို႔။

[tom@linux~]# chmod g+s dir1

jerry ဆိုတဲ့ user က အဲဒီ dir1 ထဲမွာ file တစ္ခု လာေဆာက္မယ္ ဆိုပါစို႔။ အဲဒီ file ဟာ hacker ဆိုတဲ့ group က ပိုင္တဲ့
file အေနနဲ႔ပဲ run ပါတယ္။ ဒီသေဘာပါ။

၃။ o+t >> ေဆာက္လိုက္တဲ့ file တစ္ခုကို chmod o+t directoryname လိ႔ု special permission သတ္မွတ္
လိုက္တယ္ဆိုရင္၊ root ကလြဲၿပီး တစ္ျခား user ေတြ အေနနဲ႔ full control (rwx) ရထားရင္ေတာင္ အဲဒီ file ကို ဖ်က္လ႔ို
မရႏိုင္ပါဘူး။ ဒီသေဘာပါ။

[tom@linux~]# chmod o+t file1

တစ္ခု သိထားရမွာက ေပးလိုက္တဲ့ special permission s/g/t တစ္ခုခုဟာ၊ သာမန္ permission (rwx) က၊ x ရဲ့
ေနရာကို ၀င္ယူတယ္ဆိုတာပါပဲ။ နဂိုမူလ ရိုးရိုး permission မွာ execute (x) ေပးၿပီးသားဆိုရင္ small-letter အေသးနဲ႔
ေဖၚျပမွာျဖစ္ၿပီး၊ နဂိုမူလ ရိုးရိုး permission မွာ execute (x) မေပးထားဘူးဆိုရင္ capital-letter အႀကီးနဲ႔
ေဖၚျပပါလိမ့္မယ္။ ဥပမာ အေနနဲ႔ ၾကည့္ခ်င္ရင္ေတာ့၊ file သို႔မဟုတ္ directory တစ္ခုကို special permission ေပးၿပီး၊ ls
–l သို႔မဟုတ္ ls –ld နဲ႔ ေခၚၾကည့္မယ္ဆိုရင္ ေတြ႔ျမင္ရပါလိမ့္မယ္။

special permission နဲ႔ သက္ဆိုင္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အဆင္ေျပပါေစ။

file ႏွင့္ directory မ်ားအေပၚ ပိုင္ဆိုင္မွဳ သတ္မွတ္ျခင္း


linux ေပၚမွာ file သို႔မဟုတ္ directory တစ္ခုကို user သို႔မဟုတ္ group တစ္ခုကေန ပိုင္ဆိုင္ေၾကာင္း ေၾကျငာလိုတဲ့အခါ
chown ဆိုတဲ့ command ကို သံုးပါတယ္။

ဥပမာ - dir1 ဆိုတဲ့ dir ကို Tom ဆိုတဲ့ user က ပိုင္ဆိုင္ေၾကာင္း သတ္မွတ္လိုတဲ့အခါ၊ အသံုးျပဳရမယ့္ command က
ေအာက္ပါအတိုင္းပါ။

chown Tom dir1

ဒီလို သတ္မွတ္ေပးလိုက္ရင္ dir1 နဲ႔ ဆိုင္တဲ့ permission ေတြကို Tom အေနနဲ႔ သတ္မွတ္ေပးခြင့္ရွိသြားပါမယ္။

ဥပမာ - dir1 ကို hacker ဆိုတဲ့ group က ပိုင္ဆိုင္ေၾကာင္း သတ္မွတ္လိုတဲ့အခါ၊ groupname ေရွ႔မွာ colon :
ခံေပးရတယ္။ အသံုးျပဳရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။

chown :team1 dir1

ဒါဆိုရင္၊ hacker ဆိုတဲ့ group ထဲမွာပါတဲ့ member ေတြအေနနဲ႔ ေပးထားတဲ့ permission အရ၊ dir1 ကို ၀င္ေရာက္
အသံုးျပဳခြင့္ ရွိသြားပါမယ္။

file သိ႔မ
ု ဟုတ္ directory တစ္ခုကို user တစ္ဦးနဲ႔ group တစ္ခုကေန ပိုင္ဆိုင္ေၾကာင္း command တစ္ၾကာင္းတည္းနဲ႔
ေၾကျငာလိုတဲ့အခါ user name နဲ႔ group name အၾကားမွာ colon : ျခားၿပီး အသံုးျပဳရပါတယ္။

ဥပမာ - dir1 ကို tom ဆိုတဲ့ user နဲ႔ hacker ဆိုတဲ့ group က ပိုင္ဆိုင္ေၾကာင္း command တစ္ေၾကာင္းတည္းနဲ႔
ေၾကျငာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။

chown tom:hacker dir1

file တစ္ခု၊ သို႔မဟုတ္ directory တစ္ခုရဲ့၊ permission သတ္မွတ္ခ်က္ေတြ၊ ownership ေတြကို ၾကည့္ခ်င္တဲ့အခါ ls –l
filename သို႔မဟုတ္ ls –ld dirname ဆိုတဲ့ format နဲ႔ ေခၚၾကည့္ႏိုင္ပါတယ္။
file1 လို႔ အမည္ရတဲ့ file ကို ေခၚၾကည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က ေအာက္ပါ အတိုင္းပါ။
ls –l file1

dir1 လို႔ အမည္ရတဲ့ directory ကို ေခၚၾကည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က ေအာက္ပါ အတိုင္းပါ။

ls –ld dir1

file နဲ႔ directory ေတြကို ပိုင္ဆိုင္မွဳ သတ္မွတ္တဲ့အပိုင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။

default permission and umask


သတိျပဳမိမယ္ ထင္ပါတယ္။ Superuser ျဖစ္တဲ့ root account နဲ႔ တစ္ျခား user account ေတြ အေနနဲ႔ file ေတြ
directory ေတြကို တည္ေဆာက္လိုက္တဲ့ အခါတိုင္း default permission ေတြ တြဲလ်က္ ပါလာတတ္တာကိုေပါ့။

default permission ေတြက ဘာေတြလဲဆိုတာ ၾကည့္ရေအာင္။

root အေနနဲ႔ directory ေဆာက္ရင္ default permission က 755 (rwxr-xr-x)


root အေနနဲ႔ file ေဆာက္ရင္ default permission က 644 (rwr--r--)

normal user အေနနဲ႔ directory ေဆာက္ရင္ default permission က 775 (rwxrwxr-x)


normal user အေနနဲ႔ file ေဆာက္ရင္ default permission က 664 (rw-rw-r--)

ဒီ default permission ေတြဟာ umask ဆိုတဲ့ သတ္မွတ္ တန္ဖိုးေၾကာင့္ ျဖစ္ေပၚလာတာပါ။

ဒါ့ေၾကာင့္ ဒီသတ္မွတ္ခ်က္ေတြကို ေျပာင္းလဲခ်င္ရင္ umask ရဲ့ value ကို ေျပာင္းလဲေပးရပါမယ္။ umask ေတြကို ဘယ္မွာ
ေျပာင္းလဲရမလဲဆိုေတာ့ /etc/profile နဲ႔ /etc/bashrc ဆိုတဲ့ file ၂ ခု ထဲကုိ vim text editor နဲ႔ ၀င္ေရာက္
ေျပာင္းလဲေပးရပါမယ္။ file ေတြဆီ ၀င္ေရာက္ဖို႔ အသံုးျပဳရမယ့္ command ၂ ခုကေတာ့ ေအာက္ပါအတိုင္းပါ။

vi /etc/profile
vi /etc/bashrc

umask ဆိုတဲ့ စကားလံုးကို ရွာၿပီး သူ႔ေဘးက တန္ဖိုးေတြကို ေျပာင္းလဲေပးရမွာပါ။ အေပၚက umask တန္ဖိုးသည္
directory အတြက္ ျဖစ္ၿပီး ေအာက္က umask တန္ဖိုးသည္ file အတြက္ ျဖစ္ပါတယ္။

maximum value for default permission


ဒါေပမယ့္ အဲဒီလို၊ မေျပာင္းလဲခင္ default permission ေတြရဲ့ အမ်ားဆံုး ခြင့္ျပဳထားတဲ့ တန္ဖိုးေတြကို သိထားဖိ႔ု
လိုပါတယ္။ အမ်ားဆံုး ခြင့္ျပဳထားတဲ့ တန္ဖိုးေတြကေတာ့၊
directory အတြက္ဆိုရင္ 777 (rwxrwxrwx)
file အတြက္ဆိုရင္ 666 (rw-rw-rw-)

default permission ကို file အတြက္ umask အသံုးျပဳၿပီး ေျပာင္းလဲမယ္ဆို 666 ထက္ ပိုၿပီး ေျပာင္းလဲလို႔ မရတဲ့
သေဘာပါ။

FORMULA to change default permission


ေျပာင္းလဲရမယ့္ FORMULA ကေတာ့ ေအာက္ပါအတိုင္းပါ။
directory ရဲ့ default permission = (max default value) 777 – umask တန္ဖိုး
file ရဲ့ default permission = (max default value) 666 – umask တန္ဖိုး

ဥပမာ၊ root အေနနဲ႔ directory တစ္ခု ေဆာက္တိုင္း အလုိလို ပါလာမယ့္ default permission 755 (rwwxr-xr-x) ကို
744 (rwxr--4--) အျဖစ္ ေျပာင္းလဲ သတ္မွတ္မယ္ဆိုပါစို႔။ FORMULA အရဆိုရင္ default permission 744 ရတဲ့ အထိ
directory အတြက္ အမ်ားဆံုး ခြင့္ျပဳေပးထားတဲ့ permission တန္ဖိုး 777 ထဲကေန umask တန္ဖိုးကို ႏွဳတ္ေပးရပါမယ္။
ေအာက္ပါအတိုင္းေပါ့။

ေျပာင္းလဲမည့္ default permission 744 = 777 - 033

ဒါ့ေၾကာင့္ root အေနနဲ႔ directory တစ္ခု ေဆာက္တိုင္း အလုိလို ပါလာမယ့္ default permission 755 (rwwxr-xr-x) ကို
744 (rwxr--r--) အျဖစ္ ေျပာင္းလဲဖို႔ အေပၚဆံုးမွာ ေတြ႔ရမယ့္ umask တန္ဖိုးကို 033 လို႔ ေျပာင္းေပးရံုေပါ့။

ဥပမာ၊ root အေနနဲ႔ file တစ္ခု ေဆာက္တိုင္း အလုိလို ပါလာမယ့္ default permission 664 (rw-rw-r) ကို 644 (rw-r--
r--) အျဖစ္ ေျပာင္းလဲ သတ္မွတ္မယ္ဆိုပါစို႔။ FORMULA အရဆိုရင္ default permission 644 ရတဲ့ အထိ file အတြက္
အမ်ားဆံုး ခြင့္ျပဳေပးထားတဲ့ permission တန္ဖိုး 666 ထဲကေန umask တန္ဖိုးကို ႏွဳတ္ေပးရပါမယ္။
ေအာက္ပါအတိုင္းေပါ့။

ေျပာင္းလဲမည့္ default permission 644 = 666 - 022

ဒါ့ေၾကာင့္ root အေနနဲ႔ file တစ္ခု ေဆာက္တိုင္း အလုိလို ပါလာမယ့္ default permission 664 (rw-rw-r) ကို 644 (rw-
r--r--) အျဖစ္ ေျပာင္းလဲဖို႔ အေပၚဆံုးမွာ ေတြ႔ရမယ့္ umask တန္ဖိုးကို 022 လို႔ ေျပာင္းေပးရံုေပါ့။

default permission နဲ႔ umask အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုး အဆင္ေျပပါေစ။
Access Control List (ACL)
linux မွာ chmod ဆိုတဲ့ command ကို အသံုးျပဳၿပီး file ေတြ directory ေတြကို r(4) w(2) x(1) နဲ႔ permission
သတ္မွတ္တဲ့အေၾကာင္းကေတာ့ ေရးခဲ့ၿပီးပါၿပီ။

ACL ဆိုတာ ဘာလဲ? ACL ဆိုတာ ပိုၿပီး အဆင့္ျမင့္တဲ့ permission ေပးျခင္းတစ္မ်ိဳးပါ။

ဥပမာ၊ dir1 ဆိုတဲ့ directory ရွိတယ္ ဆိုပါစို႔။ hr ဆိုတဲ့ group ရွိၿပီး tom နဲ႔ jerry ဟာ hr group ထဲမွာ ပါတဲ့ user ေတြ
ျဖစ္တယ္ ဆိုပါစို႔။

အဲဒီ hr ဆိုတဲ့ group ဟာ dir1 ကို rwx နဲ႔ access လုပ္ခြင့္ရထားတယ္ ဆိုပါစို႔။ ဒါဆို hr ဆိုတဲ့ group ထဲမွာ ပါတဲ့ user
အားလံုးဟာ dir1 ကို rwx နဲ႔ access လုပ္ခြင့္ရၿပီေပါ့။

ဒီ hr group ထဲကမွ tom ကိုပဲ access လုပ္ခြင့္ေပးမယ္။ jerry ကို access လုပ္ခြင့္ ပိတ္ထားခ်င္တယ္ ဆိုပါစို႔။ ဒီအခါမွာ
chmod ဆိုတဲ့ command နဲ႔ သတ္မွတ္ဖို႔ မလံုေလာက္ေတာ့ပါဘူး။ ဒီေနရာမွာ ACL ဟာ အေရးပါလာပါတယ္။

####################################

ကဲ ! ACL ကို ေလ့လာၾကည့္ရေအာင္။

အရင္ဆံုး tom နဲ႔ jerry ဆိုတဲ့ account ၂ ခု ေဆာက္လိုက္ပါ။ hr ဆိုတဲ့ group တစ္ခု ေဆာက္ပါ။ tom နဲ႔ jerry ကို hr
group ထဲ သြင္းပါ။

ၿပီးရင္ mkdir dir1 နဲ႔ dir1 ဆိုတဲ့ directory ေလး ေဆာက္လိုက္ပါ။

####################################

file သို႔မဟုတ္ directory တစ္ခုဟာ ACL ကို အသံုးျပဳထားမထား ဘယ္လို ၾကည့္မလဲ? ls -l နဲ႔ ေခၚၾကည့္လိုက္လို႔
permission အဆံုးမွာ + သေကၤတေလးပါရင္ ACL ကို အသံုးျပဳထားတယ္လို႔ သိႏိုင္ပါတယ္။

ဥပမာ၊ dir1 ကို ACL အသံုးျပဳထားမထား ၾကည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

ls -ld dir1

####################################

ACL ကို ဖန္တီးရာမွာ getfacl နဲ႔ setfacl ဆိုတဲ့ command ၂ ခုကို အသံုးျပဳရပါတယ္။

၁။ getfacl ကို ACL သတ္မွတ္ခ်က္ေတြကို ျပန္ၾကည့္ရာမွာ အသံုးျပဳရပါတယ္။


ဥပမာ၊ dir1 ကို သတ္မွတ္ထားတဲ့ ACL ကို ၾကည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

getfacl dir1

၂။ setfacl ကိုေတာ့ ACL သတ္မွတ္ေပးရာမွာ ျပန္ဖ်က္ရာမွာ အသံုးျပဳရပါတယ္။

user tom ကို dir1 အတြက္ rwx ေပးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

setfacl -m u:tom:rwx dir1

hr ဆိုတဲ့ group ကို dir1 အတြက္ rwx ေပးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

setfacl -m g:hr:rwx dir1

user jerry ကို dir1 ကို access လုပ္ခြင့္ ပိတ္ထားခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

setfacl -m u:jerry:--- dir1

user tom ကို default အျဖစ္ သတ္မွတ္ေပးခ်င္တယ္ ဆိုပါဆို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

setfacl -m d:u:tom:rwx dir1

hr ဆိုတဲ့ group ကို default အျဖစ္ သတ္မွတ္ေပးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

setfacl -m d:g:hr:rwx dir1

ACL ထဲက permission ေတြကို mask ဆိုတဲ့ option နဲ႔ ထပ္ၿပီး ကန္႔သတ္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

setfacl -m m::r-x dir1

ACL သတ္မွတ္ခ်က္ေတြထဲက tom နဲ႔ဆိုင္တာကို ဖ်က္ထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

setfacl -x u:tom dir1


ACL သတ္မွတ္ခ်က္ေတြထဲက hr ဆိုတဲ့ group ကို ဖ်က္ထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က
ေအာက္ပါအတိုင္းပါ။

setfacl -x g:hr dir1

ACL သတ္မွတ္ခ်က္ေတြ အားလံုးကို ဖ်က္ထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့


ေအာက္ပါအတိုင္းပါ။

setfacl -b dir1

ACL သတ္မွတ္ခ်က္ေတြထဲက default ေပးထားတဲ့ user နဲ႔ group ေတြကိုပဲ ဖ်က္ထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

setfacl -k dir1

ဟုတ္ၿပီ။ mkdir dir2 ဆိုၿပီး directory ၁ ခု ထပ္ေဆာက္လိုက္ပါ။ dir1 ကို ACL သတ္မွတ္ေပးထားတယ္။ အဲဒီ
သတ္မွတ္ခ်က္ေတြအတိုင္း dir2 ကို သတ္မွတ္ေပးခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

getfacl dir1 | setfacl --set-file=- dir2

ကဲ ! ACL နဲ႔ ပတ္သက္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။ နည္းနည္း ရွဳပ္သလို ထင္ရေပမယ့္ စမ္းလုပ္သြားရင္


အဆင္ေျပသြားပါလိမ့္မယ္။ ACL တစ္ခု သတ္မွတ္ၿပီးတိုင္း getfacl နဲ႔ ျပန္ၾကည့္ ျပန္စစ္ဖို႔လည္း မေမ့ပါနဲ႔။

အားလံုးပဲ အဆင္ေျပၾကပါေစ။
tar, zip, gzip (file မ်ားကို ၿခံဳ႔ျခင္း/ျဖည္ျခင္း)
linux ေပၚမွာ file ေတြ directory ေတြကို ၿခံဳ႔ရာ၊ ျပန္ျဖည္ရာမွာ အသံုးျပဳရတဲ့ command ေတြအေၾကာင္းကို
ေလ့လာၾကည့္ရေအာင္။

ဒီလို ၿခံဳ႔ရာ၊ ျဖည္ရာမွာ tar, zip, gzip စတဲ့ command ေတြကို အသံုးျပဳၾကပါတယ္။

အရင္ဆံုး tar ဆိုတဲ့ command ေလးနဲ႔ စဖြင့္လိုက္ၾကတာေပါ့။

linux ေပၚမွာ file ေတြ directory ေတြကို size ေသးသြားေအာင္ ၿခံဳ႔ရာျဖည္ရာမွာ tar ဟာ အသံုးမ်ားတဲ့ command
တစ္ခုပါ။

ဒီလို ၿခံဳ႔ရာ၊ ျပန္ျဖည္ရာမွာ tar နဲ႔အတူ options ေတြကို တြဲသံုးရပါတယ္။

tar ရဲ့ options နဲ႔ တြဲဘက္ အသံုးျပဳပံုေတြကို ေလ့လာၾကည့္ရေအာင္။

-c : zip file ေတြကို create လုပ္တဲ့အခါ -c (c အေသး) ကို ထည့္ေပးရပါတယ္။

-x : zip file ေတြကို ျဖည္တဲ့အခါ -x ကို ထည့္ေပးရပါတယ္။

-f : သူကေတာ့ မပါမျဖစ္ပါ။ file ေတြကို ၿခံဳ႔တာပဲျဖစ္ေစ ျပန္ျဖည္တာပဲျဖစ္ေစ content ေတြကို ၾကည့္တာပဲျဖစ္ေစ -f ကို
အၿမဲ ထည့္ေပးရပါတယ္။

-p : permission နဲ႔ဆိုင္တဲ့ option တစ္ခုပါ။ ၿခံဳ႔ရာမွာျဖစ္ေစ ျပန္ျဖည္ရာမွာျဖစ္ေစ နဂိုမူလ permission တန္ဖိုးေတြကို


ထိန္းသိမ္းေပးပါတယ္။

-v : ၿခံဳ႔တဲ့ ျဖည္တဲ့ လုပ္ငန္းစဥ္ အေျခအေနကို visual mode နဲ႔ ျပေပးတဲ့ option တစ္ခုပါ။

-t : ၿခံဳ႔ထားတဲ့ အထဲက ပါဝင္တဲ့ file ေတြကို ၾကည့္ဖို႔သံုးပါတယ္။

-C : zip file ကို တစ္ျခား ေနရာတစ္ခုမွာ ျဖည္ခ်ေပးခ်င္တဲ့အခါ location ကို ညႊန္းဖို႔ သံုးပါတယ္။

အထက္မွာ ေဖၚျပထားတာေတြကေတာ့ လုပ္ငန္းစဥ္န႔ဲ သက္ဆိုင္တဲ့ option ေတြပါ။ zip format နဲ႔ ဆိုင္တဲ့ option က ၄
မ်ိဳး ရွိပါတယ္။ ေအာက္ပါအတိုင္းေပါ့။

၁။ -z : gz လို႔ အတိုေကာက္ ေခၚၿပီး gzip format နဲ႔ ၿခံဳ႔ရာ ျဖည္ရာမွာ အသံုးျပဳပါတယ္။

ဥပမာ၊ hacker ဆိုတဲ့ directory ကို gz နဲ႔ ၿခံဳ႔မယ္ ဆိုပါစို႔။ command syntax က ေအာက္ပါအတိုင္းပါ။

tar -zcf hacker.gz hacker

သို႔မဟုတ္
tar -zcf hacker.tar.gz hacker

ျပန္ျဖည္မယ္ဆို၊ tar -zxf hacker.gz သို႔မဟုတ္ tar -zxf hacker.tar.gz ေပါ့။ tgz လို႔ ေတြ႔ရင္လည္း tar.gz ဆိုတဲ့
format နဲ႔ ၿခံဳ႔ထားတာလိ႔ု သိရပါမယ္။

၂။ -j : bz2 လို႔ အတိုေကာက္ေခၚၿပီး bzip2 format နဲ႔ ၿခံဳ႔ရာ ျဖည္ရာမွာ အသံုးျပဳပါတယ္။

ဥပမာ၊ hacker ဆိုတဲ့ directory ကို bz2 နဲ႔ ၿခံဳ႔မယ္ ဆိုပါစို႔။ command syntax က ေအာက္ပါအတိုင္းပါ။

tar -jcf hacker.bz2 hacker

သို႔မဟုတ္

tar -jcf hacker.tar.bz2 hacker

ျပန္ျဖည္မယ္ဆို၊ tar -jxf hacker.bz2 သို႔မဟုတ္ tar -jxf hacker.tar.bz2 ေပါ့။

၃။ -J : xz လိ႔ု အတိုေကာက္ေခၚၿပီး xzip format နဲ႔ ၿခံဳ႔ရာ ျဖည္ရာမွာ အသံုးျပဳပါတယ္။

ဥပမာ၊ hacker ဆိုတဲ့ directory ကိxု z နဲ႔ ၿခံဳ႔မယ္ ဆိုပါစို႔။ command syntax က ေအာက္ပါအတိုင္းပါ။

tar -Jcf hacker.xz hacker

သို႔မဟုတ္

tar -Jcf hacker.tar.xz hacker

ျပန္ျဖည္မယ္ဆို၊ tar -Jxf hacker.xz သိ႔မ


ု ဟုတ္ tar -Jxf hacker.tar.xz ေပါ့။

၄။ တစ္ခု ေျပာပါရေစ။ ၿခံဳ႔ရာမွာ zip format နဲ႔ ဆိုင္တဲ့ option ေတြ မထည့္ပဲ -c နဲ႔ -f ပဲ သံုးၿပီး ၿခံဳ႔မယ္ ဆိုပါစို႔။ ဒီအခါ tar
ဆိုတဲ့ format ကို အသံုးျပဳေပးရပါလိမ့္မယ္။ ေအာက္ပါအတိုင္းေပါ့။

tar -cf hacker.tar hacker

ဒါဆို tar format နဲ႔ ၿခံဳ႔သြားပါလိမ့္မယ္။ ျပန့္ဖည္မယ္ဆို tar -xf hacker.tar ေပါ့။

zip file ထဲမွာ ပါဝင္တာေတြကို ၾကည့္ခ်င္ရင္ -t နဲ႔ -f ကို တြဲသံုးရပါတယ္။

ဥပမာ၊ hacker.xz ထဲမွာ ဘာေတြပါလဲ သိခ်င္တယ္ ဆိုပါစို႔။ command syntax က ေအာက္ပါအတိင


ု ္းပါ။

tar -tf gacker.xz


တစ္ခု ထပ္ေျပာျပပါရေစဦး။ ဥပမာ၊ current location ~/ ေအာက္မွာ ရွိတဲ့ hacker.xz ဆိုတဲ့ zip file ကို
တစ္ျခားတစ္ေနရာျဖစ္တဲ့ /opt/ ေအာက္မွာ ျဖည္ခ်ခ်င္တယ္ ဆိုပါစို႔။

tar -Jxf hacker.xz /opt/ ဒီလို ညႊန္းမယ္ေပါ့။ ဒါဆို error တက္ပါလိမ့္မယ္။

ဒီေနရာမွာ -C ဆိုတဲ့ option က အေရးပါလာပါၿပီ။ ညႊန္းေပးရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

tar -Jxf hacker.xz -C /opt/

file ေတြ directory ေတြကို ၿခံဳ႔လိုက္ၿပီး မူလ size ထက္ ဘယ္ေလာက္ ပိုႀကံဳ႔သြားလဲ သိခ်င္ရင္ du -h နဲ႔
ၾကည့္ႏိုင္ပါတယ္။

ဥပမာ၊ hacker.xz ရဲ့ size ကို သိခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

du -h gacker.xz

ခုေလာက္ဆို tar နဲ႔ options ေတြကို လိုအပ္သလို တြဲဖက္ၿပီး အသံုးျပဳႏိုင္မယ္ ထင္ပါတယ္။ tar အေၾကာင္းကေတာ့
ဒီေလာက္ပါပဲ။

zip ဆိုတဲ့ command ကို အသံုးျပဳပံုေလး ဆက္ေျပာၾကတာေပါ့။

zip : zip format နဲ႔ ၿခံဳ႔မယ္ဆိုရင္ zip –r ကို သံုးပါတယ္။ ဥပမာ၊ dir1 ဆိုတဲ့ directory ကို zip format နဲ႔ ၿခံဳ႔မယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command က ေအာက္ပါအတိုင္းပါ။

zip –r dir1.zip dir1

ျပန္ျဖည္မယ္ဆိုရင္ unzip ကို သံုးပါတယ္။ command က ေအာက္ပါအတိုင္းပါ။

unzip dir1.zip dir1

zip ကို အသံုးျပဳၿပီး ၿခံဳ႔တာကေတာ့ ဒီေလာက္ပါပဲ။ တိုတိုရွင္းရွင္းပါပဲေနာ္။

gzip အသံုးျပဳပံုေလးအေၾကာင္း ဆက္သြားၾကတာေပါ့။

gzip : gzip format နဲ႔ ၿခံဳ႔မယ္ဆိုရင္ gzip –v ကို သံုးပါတယ္။ gzip ကို အသံုးျပဳၿပီး directory ေတြကို ၿခံဳ႔လို႔ မရပါဘူး။
သူက file ေတြပဲ သီးသန္႔ ၿခံဳ႔လ႔ရ
ို ပါတယ္။ ဥပမာ၊ file1 ဆိုတဲ့ file ကို gzip format နဲ႔ ၿခံဳ႔မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command က ေအာက္ပါအတိုင္းပါ။

gzip –v file1.gz file1

ျပန္ျဖည္မယ္ဆိုရင္ gunzip ကို သံုးပါတယ္။ command က ေအာက္ပါအတိုင္းပါ။


gunzip file1.gz

linux ေပၚမွာ tar, zip, gzip စတဲ့ command ေတြ အသံုးျပဳၿပီး file ေတြ directory ေတြကို ၿခံဳ႔တဲ့ ျဖည္တဲ့
အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။

encryption >> file တစ္ခုကို password နဲ႔ သိမ္းမယ္ဆိုရင္ gpg -c ကို သံုးတယ္။ [root@linux~]# gpg –c filename
ျပန္ျဖည္မယ္ဆိုရင္ [root@linux~]# gpg filename.gpg

password management
password management ဆိုတာကေတာ့ password နဲ႔ သက္ဆိုင္တာေတြကို စီမံတဲ့ အပိုင္းပါ။ ေလ့လာၾကည့္ရေအာင္။

သိထားရမွာ ၁ ခုက၊ password ေတြကို manage လုပ္မယ္ဆိုရင္ root account နဲ႔မွ အဆင္ေျပပါမယ္။ ကဲ ! linux
machine ကို ဖြင့္ၿပီး root account နဲ႔ login ၀င္လိုက္ရေအာင္။

password နဲ႔ဆိုင္တာေတြ၊ password ေပးခဲ့တဲ့ ရက္စြဲေတြ၊ password တစ္ခု အတြက္ အျမင့္ဆံုး သက္တမ္း
သတ္မွတ္ခ်က္ေတြ၊ သက္တမ္းကုန္ဆံုးမယ့္ expire date,… စတာေတြကို စီမံခ်င္တဲ့အခါ၊ chage ဆိုတဲ့ command ကို
option ေတြန႔ဲ တြဲသံုးရပါတယ္။

password နဲ႔ သက္ဆိုင္တဲ့ အခ်က္ ၇ ခ်က္ ရွိပါတယ္။ အဲဒီ အခ်က္ေတြကို စီမံ သတ္မွတ္ေပးရမွာပါ။ အဲဒါေတြကေတာ့
ေအာက္ပါအတိုင္းပါပဲ။

၁။ Last password change (password ေပးခဲ့တဲ့ ရက္စ)ြဲ


၂။ Password expires (password သက္တမ္းကုန္မယ့္ ရက္စြဲ)
၃။ Password inactive (password အသက္ကင္းမဲ့မယ့္ ေန႔)
၄။ Account expires (account သက္တမ္းကုန္မယ့္ ရက္စြဲ)
၅။ Minimum number of days between password change (password ေျပာင္းလဲရမယ့္ အနိမ့္ဆံုး ကာလ
သတ္မွတ္ ရက္ေပါင္း)
၆။ Maximum number of days between password change (password ေျပာင္းလဲရမယ့္ အျမင့္ဆံုး ကာလ
သတ္မွတ္ ရက္ေပါင္း)
၇။ Number of days of warning before password expire (password သက္တမ္း မကုန္ဆံုးမီ ႀကိဳတင္သတိေပးမယ့္
ရက္ေပါင္း)

ဒီေနရာမွာ ရက္စြဲ (date) နဲ႔ ရက္ေပါင္း (number of days)၊ မတူတာကို သတိျပဳဖို႔ မွာပါရေစ။ ကဲ ! command
အသံုးျပဳပံုေလးေတြ စလိုက္ရေအာင္။
password နဲ႔ သက္ဆိုင္တဲ့ သတ္မွတ္ခ်က္ေတြကို ၾကည့္ခ်င္တဲ့အခါ၊ chage –l ကို သံုးပါတယ္။ ေစာစာက ေျပာထားတဲ့
အခ်က္ ၇ ခ်က္ကို ျမင္ရပါလိမ့္မယ္။
[root@linux~]# chage –l username

၁။ password ေနာက္ဆံုးတစ္ေခါက္ ေျပာင္းလဲခဲ့တဲ့ ရက္စြဲ (Last password change) ကို ျပဳျပင္ဖ႔ို chage –d ကို
သံုးပါတယ္။
[root@linux~]# chage –d 2017-02-14 username

၂။ password သက္တမ္းကုန္မယ့္ ရက္စြဲ (Password expires) ကို ျပဳျပင္ဖ႔ို chage –E ကို သံုးပါတယ္။ date
ရက္ေနာက္မွာ username ထည့္ဖို႔ မေမ့ပါနဲ႔။
[root@linux~]# chage –E 2017-02-14 username

၃။ ေယဘုယ်အားျဖင့္၊ သက္တမ္းကုန္ ၿပီးေနာက္၊ password အသက္ကင္းမဲ့မယ့္ ရက္ေပါင္း၊ (Password inactive) ဟာ


expire date ထက္ အၿမဲ တန္ဖိုးတစ္ခုႀကီးေလ့ ရွိပါတယ္။ password inactive ျဖစ္မယ့္ ရက္ေပါင္းကို ေျပာင္းလဲခ်င္ရင္
chage –I ကို သံုးတယ္။
[root@linux~]# chage –I 1 username

၄။ Account expires ဆိုတာကိုေတာ့ ဒီေနရာမွာ အေထြအထူး သတ္မွတ္ေပးစရာ မလိုပါဘူး။

၅။ password ေျပာင္းလဲရမယ့္ အနိမ့္ဆံုး ကာလ သတ္မွတ္ခ်က္ (Minimum number of days between password
change) ကို ျပဳျပင္ဖ႔ို chage –m ကို သံုးပါတယ္။ ရက္ေပါင္း ရဲ့ ေနာက္မွာ username ထည့္ေပးဖို႔ မေမ့ပါနဲ႔။
[root@linux~]# chage –m 20 username

၆။ password ေျပာင္းလဲရမယ့္ အျမင့္ဆံုး ကာလ သတ္မွတ္ခ်က္ (Maximum number of days between password
change) ကို ျပဳျပင္ဖ႔ို chage –M ကို သံုးပါတယ္။ chage –M ရဲ့ ေနာက္မွာ username ထည့္သြင္းေပးဖို႔ လိုပါတယ္။
ဥပမာ၊ password နဲ႔ သက္ဆိုင္တဲ့ user က tom ဆိုပါစို႔ maximum ကာလ ရက္ေပါင္း ၃၀ ေပးမယ္ဆိုပါစို႔။ chage –M
30 tom ေပါ့။
[root@linux~]# chage –M 30 username

ေယဘုယ်အားျဖင့္၊ Maximum number of days between password change မွာ တန္ဖိုး ထည့္သြင္းေပးလိုက္ရင္
password expire ျဖစ္မယ့္ date က အလိုလို သတ္မတ
ွ ္ၿပီးသား ျဖစ္သြားပါတယ္။ အလားတူ၊ password ရဲ့ inactive
ျဖစ္မယ့္ date သည္လည္း အလိုလို သတ္မွတ္ၿပီးသားျဖစ္သြားပါတယ္။

သိထားသင့္တာ ၁ ခု ကေတာ့၊ Maximum number of days between password change မွာ default အေနနဲ႔
အျမင့္ဆံုး သတ္မတ
ွ ္ထားတဲ့ တန္ဖိုးက 99999 ပါ။ အကယ္၍ maximum number of days ကို 99999 လို႔
သတ္မွတ္ေပးလိုက္ရင္၊ password expires နဲ႔ password inactive ရက္စြဲေတြ ေနရာမွာ never လိ႔ု
ေျပာင္းသြားပါလိမ့္မယ္။ expire မျဖစ္ေတာ့တဲ့ သေဘာေပါ့။
ဒီေနရာမွာ maximum ရက္ေပါင္း သတ္မွတ္လိုက္တဲ့ အခါ၊ ခုကေန ဘယ္ေန႔ထိ အႀကံဳး၀င္မလဲဆိုတဲ့ ရက္စြဲကို date
ဆိုတဲ့ command သံုးၿပီး တြက္ၾကည့္ႏိုင္ပါတယ္။ ဥပမာ၊ ခုကေန ရက္ေပါင္း ၃၀ သတ္မွတ္လိုက္တယ္ ဆိုပါစို႔။ ေန႔ရက္
တြက္ဖို႔၊ ခုကေန ေနာက္လာမယ့္ ရက္ ၃၀ ဟာ၊ ဘယ္ date ျဖစ္မလဲ သိဖို႔ date –d ကို သံုးရံုပါပဲ။ ေအာက္ပါအတိုင္းေပါ့။
[root@linux~]# date –d “+30 days”

ေနာက္တစ္ခ်က္ သိထားသင့္တာက၊ Maximum number of days between password change မွာ default အေနနဲ႔
အျမင့္ဆံုး သတ္မ်တ္ထားတဲ့ တန္ဖိုးက 99999 ပါ။ အကယ္၍ maximum number of days ကို 99999 လို႔
သတ္မွတ္ေပးလိုက္ရင္၊ password expires နဲ႔ password inactive ရက္စြဲေတြ ေနရာမွာ never လို႔ ေျပာင္းသြားပါ
လိမ့္မယ္။ expire မျဖစ္ေတာ့တဲ့ သေဘာေပါ့။
[root@linux~]# chage –M 99999 username

၇။ password ေျပာင္းလဲဖို႔ warning message ေပးမယ့္ ရက္ေပါင္းကို သတ္မွတ္ဖို႔ chage –W ကို သံုးပါတယ္။
ရက္ေပါင္း ရဲ့ ေနာက္မွာ username ထည့္ေပးဖို႔ မေမ့ပါနဲ႔။ ဥပမာ၊ ၅ ရက္ သတ္မွတ္မယ္ ဆိုပါစို႔။ chage –W 5
username ေပါ့။
[root@linux~]# chage –W 5 username

password management နဲ႔ သက္ဆိုင္တဲ့ အေၾကာင္းကေတာ့ ဒိေလာက္ပါပဲ။

အားလံုးပဲ၊ အဆင္ေျပၾကပါေစ။
rpm (redhat package manager)

ဒီတစ္ခါေတာ့ linux ေပၚမွာ application နဲ႔ သက္ဆိုင္တာေတြကို စီမံတဲ့အခါ အသံုးျပဳတဲ့ rpm command အေၾကာင္း
ေလ့လာၾကည့္ၾကတာေပါ့။

rpm ရဲ့ အရွည္ေကာက္က redhat package manager ပါ။

ကဲ ! စလိုက္ရေအာင္။

application တစ္ခုကို install လုပ္ခ်င္တဲ့အခါ rpm -ivh ကို သံုးပါတယ္။ cimmand syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

rpm -ivh applicationname.rpm

application တစ္ခုကို ဖယ္ရွားခ်င္တဲ့အခါ rpm -e ကို အသံုးျပဳပါတယ္။ command syntax ကေတာ့


ေအာက္ပါအတိုင္းပါ။

rpm -e aoplicationname

application တစ္ခုကို update လုပ္ခ်င္တဲ့အခါ rpm -Uvh ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

rpm -Uvh applicationname

application ရဲ့ version ကို ၾကည့္ခ်င္တဲ့အခါ rpm -q ကို သံုးပါတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

rpm -q applicationname

application တစ္ခုရဲ့ information ေတြကို သိခ်င္တဲ့အခါ rpm -qi ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

rpm -ql applicationname

application နဲ႔ သက္ဆိုင္တဲ့ file ေတြ ရွိရာ လမ္းေၾကာင္းေတြကို သိခ်င္တဲ့အခါ rpm -ql ကို သံုးပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

rpm -ql applicationname


application နဲ႔ သက္ဆိုင္တဲ့ အဓိက package ကို သိခ်င္တဲ့အခါ rpm -qa ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

rpm -qa applicationname

application နဲ႔ သက္ဆိုင္တဲ့ package ေတြ အားလံုးကို သိခ်င္တဲ့အခါ rpm -qa ကို grep နဲ႔ တြဲသံုးပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

rpm -qa | grep applicationname

file တစ္ခုသည္ ဘယ္ application နဲ႔ သက္ဆိုင္သလဲ၊ သိခ်င္တဲ့အခါ rpm –qf နဲ႔ ေခၚၾကည့္ ႏိုင္ပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

rpm –qf filename

application ရဲ့ configuration file ကို သီးသန္႔ ၾကည့္ခ်င္ရင္ rpm –qc သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

rpm –qc applicationname

application ရဲ့ documentation ေတြကို ၾကည့္ခ်င္ရင္ rpm –qd ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

rpm –qd applicationname

package တစ္ခုန႔တ
ဲ စ္ခုၾကား ေျပာင္းလဲမွဳကို ၾကည့္ခ်င္ရင္ -q --changelog ကို rpm နဲ႔ တြဲသံုးရပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

rpm –q --changelog packagename.rpm

package install လုပ္သြားမယ့္ script ကို ၾကည့္ခ်င္ရင္ -q --script ကို rpm နဲ႔ တြဲသံုးရပါတယ္။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

rpm –q --script packagename.rpm


package ကို မသြင္းပဲ ပါ၀င္တဲ့ file ကို ထုတ္ၾကည့္ခ်င္ရင္ rpm2cpio ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။ ဥပမာ၊
sample.rpm ထဲက readme.txt ဆိုတဲ့ file ကို ထုတ္ၾကည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

rpm2cpio sample.rpm | cpio –id “*.txt”

တိုတိုရွင္းရွင္းပါပဲေနာ္။

rpm အသံုးျပဳၿပီး application ေတြကို ကိုင္တြယ္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။
yum (yellow dog update & modify)

linux မွာ application package ေတြန႔ဲ သက္ဆိုင္တာေတြကို စီမံတဲ့အခါ rpm, apt-get, yum စတဲ့ command ေတြကို
သံုးရပါတယ္။

ဒီေနရာမွာေတာ့ yum နဲ႔ သက္ဆိုင္တဲ့ command ေတြကို တင္ဆက္သြားမွာပါ။ yum ရဲ့ အရွည္ေကာက္က yellow dog
update and modify ပါ။

ကဲ ! စလိုက္ရေအာင္။

စက္ထဲမွာ ရွိတဲ့ application ကို install လုပ္ခ်င္တဲ့အခါ yum -y localinstall ကို အသံုးျပဳပါတယ္။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum localinstall -y application.rpm

online ေပၚမွာ ရွိတဲ့ application ကို install လုပ္ခ်င္တဲ့အခါ yum -y install ကို အသံုးျပဳပါတယ္။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum -y install applucationnme

application တစ္ခုကို ဖယ္ရွားခ်င္တဲ့အခါ yum -y remove ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

yum -y remove applicationname

application တစ္ခုကို update လုပ္ခ်င္တဲ့အခါ yum update ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

yum update applicationname

system ကို update လုပ္ခ်င္ရင္ yum update ကို အသံုးျပဳပါတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum update

update ရွိမရွိ စစ္ေဆးခ်င္ရင္ yum check-update ကို သံုးပါတယ္။ command syntax ကေတာ့ ေအာကိပါအတိုင္းပါ။

yum check-update
online database ထဲက application ေတြရဲ့ စာရင္းကို ၾကည့္ခ်င္တဲ့အခါ yum list ကို အသံုးျပဳပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum list

local မွာ သြင္းထားၿပီးသား application ေတြရဲ့ စာရင္းကို ၾကည့္ခ်င္တဲ့အခါ yum list installed ကို သံုးပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum list installed | less

application တစ္ခုန႔ဲ သက္ဆိုင္တဲ့ package ေတြကို ၾကည့္ခ်င္တဲ့အခါ yum list ကို သံုးပါတယ္။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum list applicationname

group လိုက္ သြင္းရတဲ့ application ေတြရဲ့ စာရင္းကို ၾကည့္ခ်င္တဲ့အခါ yum grouplist ကို သံုးပါတယ္။ command
syntax က ေအာပ္ပါအတိုင္းပါ။

yum grouplist

group လိုက္သြင္းရတဲ့ application တစ္ခုကို install လုပ္ခ်င္တဲ့အခါ yum groupinstall ကို သံုးပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum groupinstall applicationname

group လိုက္သြင္းထားတဲ့ application တစ္ခုကို ဖယ္ရွားခ်င္တဲ့အခါ yum groupremove ကို သံုးပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum groupremove applicationname

group လိုက္ application တစ္ခုကို update လုပ္ခ်င္တဲ့အခါ yum groupupdate ကို သံုးပါတယ္။ command syntax
ကေတာ့ ေအာပ္ပါအတိုင္းပါ။

yum groupupdate applicationname

repositroy ရဲ့ စာရင္းကို ၾကည့္ခ်င္တဲ့အခါ yum repolist ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

yum repolist
enabe ေပးထားတဲ့ repo ေရာ disable ေပးထားတဲ့ repo ေရာ ၾကည့္ခ်င္တဲ့အခါ yum repolist all ကို သံုးပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum repolist all

disable ေပးထားတဲ့ repo ထဲက application တစ္ခုကို install လုပ္ခ်င္တဲ့အခါ yum --enablerepo ကို သံုးပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum --enablerepo=epel install applicationname

application တစ္ခုကို ရွာေဖြလိုတဲ့အခါ yum search ကို သံုးပါတယ္။ command syntax ကေတာ့ ေအာကိပါအတိုင္းပါ။

yum search applicationname

application တစ္ခုရဲ့ information ကို ၾကည့္ခ်င္တဲ့အခါ yum info ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

yum info applicationname

group လိုက္ သြင္းရတဲ့ application group တစ္ခုရဲ့ information ကို ၾကည့္ခ်င္တဲ့အခါ yum groupinfo ကို သံုးပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum groupinfo “applicationgroupname”

yum နဲ႔ သက္ဆိုင္တဲ့ history ကို ၾကည့္ခ်င္တဲ့အခါ yum history ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

yum history

file တစ္ခုဟာ ဘယ္ application နဲ႔ သက္ဆိုင္သလဲ ၾကည့္ခ်င္ရင္ yum provides ကို သံုးပါတယ္။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum provides /usr/filename

history ကို ရွင္းလင္းခ်င္တဲ့အခါ yum clean ကို သံုးပါတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum clean all


yum အတြက္ custom shell ကို ဖြင့္ခ်င္တဲ့အခါ yum shell ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

yum shell

ခုေလာက္ဆို yum ကို အသံုးျပဳၿပီး application နဲ႔ သက္ဆိုင္တာေတြကို ကိုင္တြယ္ႏိုင္ၿပီ ထင္ပါတယ္။

yum နဲ႔ သက္ဆိုင္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အဆင္ေျပၾကပါေစ။

creating repo
linux မွာ yum, rpm စတဲ့ command ေတြကို သံုးၿပီး application ေတြ install, update လုပ္ႏိုင္ဖို႔၊ repo link ေတြ ရွိမွ
အဆင္ေျပပါတယ္။

အဲဒီ repo link ေတြကို /etc/yum.repos.d/ ေအာင္မွာ .repo နဲ႔ ဆံုးတဲ့ file ေတြ အျဖစ္ ေတြ႔ရွိႏိုင္ပါတယ္။

လိုအပ္ခ်က္အရ repo link ေတြ ထပ္မံထည့္သြင္းလိုတဲ့အခါ /etc/yum.repos.d/ ေအာက္မွာ vim command line text
editor နဲ႔ သြားေဆာက္ေပးရပါတယ္။ file အမည္ကို ႏွစ္သက္သလို ေပးႏိုင္ၿပီး extension က .repo နဲ႔ ဆံုးဖို႔ လိုပါတယ္။

repo file တစ္ခုထဲမွာ ေအာက္ပါအခ်က္ေတြ ပါဝင္ရပါမယ္။

[repo id]
name=my repo
baseurl="http://dl.fedoraproject.org/pub/epel/7/x86_x64/"
enabled=1
gpgcheck=0

[…] ထဲက အရာကို repo id လို႔ ေခၚပါတယ္။ ႏွစ္သက္သလို ေပးႏိုင္ပါတယ္။ ေမ့မသြားဖို႔ပဲ လိုတာပါ။

name ေနရာမွာ မိမိ ႏွစ္သက္သလို ေရးႏိုင္ပါတယ္။ မေရးပဲ လႊတ္ထားခဲ့လည္း အဆင္ေျပပါတယ္။

baseurl ကေတာ့ အေရးအႀကီးဆံုးပါ။ သြားေရာက္ ခ်ိတ္ဆက္မယ့္ link ကို တိတိက်က် ထည့္သြင္းေပးဖို႔ လိုပါတယ္။

enabled ဆိုတာကေတာ့ repo ကို enable ေပးမလား disable ေပးမလား သတ္မွတ္တဲ့ အပိုင္းပါ။ 1 ဆိုရင္ enable
ျဖစ္ၿပီး 0 ဆိုရင္ disable လို႔ သတ္မွတ္ပါတယ္။

gpgcheck ဆိုတာကေတာ့ gpg key ထည့္မထည့္ သတ္မွတ္တဲ့ အပိုင္းပါ။ 1 ဆိုရင္ gpgkey ထည့္မယ္ လို႔ သတ္မွတ္ၿပီး
0 ဆိုရင္ မထည့္ဘူးလို႔ သတ္မွတ္ပါတယ္။
ဒါေတြကေတာ့ repo file တစ္ခုကို manual တည္ေဆာက္တဲ့ အပိုင္းပါ။
command line ကေန တည္ေဆာက္ခ်င္ရင္ yum-config-manager ဆိုတဲ့ command ကို သံုးရပါတယ္။ ဥပမာ၊ repo
file တစ္ခု ေဆာက္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။

yum-config-manager --add-repo http://dl.fedoraproject.org/pub/epel/7/x86_x64/

repo တစ္ခုကို enable ေပးမယ္ ဆိုပါစို႔။ command syntax က ေအာက္ပါအတိုင္းပါ။

yum-config-manager --enable repo_id

repo id ေနရာမွာ repo file ထဲက […] ထဲမွာ ရွိတဲ့ အရာကို ေရးေပးရမွာပါ။ file name ကို ေရးေပးရမွာ မဟုတ္ပါဘူး။

repo တစ္ခုကို disable ေပးမယ္ ဆိုပါစို႔။ disable ေပးတယ္ဆိုကတည္းက yum နဲ႔ application ေတြ install လုပ္တဲ့အခါ
ဒီ repo ကို မသံုးဘူးဆိုတဲ့ သေဘာပါပဲ။ command syntax က ေအာက္ပါအတိုင္းပါ။

yum-config-manager --disable repo_id

repo list ေတြ သူတို႔ရဲ့ repo_id ေတြကို yum command နဲ႔ ေခၚၾကည့္ႏိုင္ပါတယ္။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

yum repolist all

all မထည့္ပဲ yum repolist နဲ႔ ေခၚၾကည့္ရင္ေတာ့ enable ေပးထာတဲ့ list ေတြကိုပဲ ေတြ႔ရပါလိမ့္မယ္။

linux ေပၚမွာ လိုအပ္ခ်က္အရ application ေတြကို install, update လုပ္ႏိုင္ဖို႔ repo file ေတြ တည္ေဆာက္တဲ့အပိုင္း၊
enable or disable ေပးတဲ့အပိုင္း၊ ျပန္ၾကည့္တဲ့အပိုင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။
rpm Vs yum

linux မွာ application နဲ႔ ဆိုင္တဲ့ အပိုင္းေတြကို စီမံရာမွာ rpm နဲ႔ yum စတဲ့ command ေတြကို အသံုးျပဳတဲ့အေၾကာင္း
တင္ဆက္ၿပီးသြားပါၿပီ။

ဒီတစ္ခါ ဒီ command ႏွစ္ခု အနက္ ဘယ္ဟာက ပို အားသာလဲ ယွဥ္ၾကည့္ၾကစို႔။

ဥပမာ A >> စက္မွာ zimbra mail server ကို rpm command အသံုးျပဳၿပီး install လုပ္မယ္ ဆိုပါစို႔။

rpm -ivh zimbra....rpm ေပါ့။

အဲဒီအခါ perl package လိုေနပါတယ္ဆိုၿပီး ဆက္သြင္းလို႔ မရေတာ့ပဲ error ျပပါလိမ့္မယ္။

ဟုတ္ၿပီ perl package သြင္းၿပီးသြားၿပီဆိုပါစို႔။ တစ္ခါ zimbra ကို အစကေန rpm နဲ႔ ျပန္သြင္း။

rpm -ivh zimbra....rpm ေပါ့။

အဲဒီမွာ sysstat package လိုေနတယ္ ဆိုၿပီး ထပ္ error ျပျပန္ေရာ။

sysstat ကို အရင္ထပ္သြင္း၊ ၿပီးမွ zimbra ကို အစကေန rpm နဲ႔ ျပန္သြင္းရျပန္ေရာ။

rpm -ivh zimbra....rpm ေပါ့။

$ရမ္း အာရံုေနာက္ပါတယ္ေနာ္။

ကဲ ! rpm အစား yum ကို အသံုးျပဳၾကည့္ရေအာင္။

ဥပမာ B >> yum localinstall zimbra....rpm ေပါ့။

ဒီေနရာမွာ yum ဟာ လိုအပ္ေနတဲ့ perl နဲ႔ sysstat package ေတြကို ဘာ error မွ မျပပဲ၊ အလိုေလ်ာက္ သြင္းယူၿပီး
zimbra ကို သြင္းေပးသြားပါလိမ့္မယ္။

ဘယ္ေလာက္ အာရံုေနာက္ သက္သာလဲ?

ခုေလာက္ဆို rpm နဲ႔ yum ဘယ္ဟာ ပိုလန္းသလဲ သိေလာက္ပါၿပီေနာ္။

ဒါေပမယ့္ သူ႔ေနရာနဲ႔သူေပါ့ေနာ္။

ကာလံေဒသံအလိုက္ သံုးစြဲႏိုင္ပါေစ လို႔။


apt-get
yum နဲ႔ rpm အသံုးျပဳၿပီး application package ေတြကို ကိုင္တြယ္တဲ့အေၾကာင္းကေတာ့ တင္ၿပီးသြားပါၿပီ။ ဒီတစ္ခါ
တင္ဆက္မွာက apt-get အေၾကာင္းပါ။

ေျပာရရင္၊ linux system အတြက္ application package ေတြန႔ဲ သက္ဆိုင္တာေတြကို စီမံရာမွာ apt-get ဟာလည္း
powerful ျဖစ္တဲ့ tool တစ္ခုပါ။ apt ရဲ့ အရွည္ေကာက္က advance packaging tool ပါ။ apt-get ကို ubuntu, kali,
suse စတဲ့ linux distro ေတြမွာ အသံုးျပဳထားတာကို ေတြ႔ရမွာပါ။

apt-get ရဲ့ အသံုးျပဳပံုေတြကို ေလ့လာၾကည့္ရေအာင္။

application package name ေနရာမွာ netcat, vsftpd, goaccess, nethogs စတာေတြန႔ဲ အစားထိုး
ဥပမာေပးသြားပါရေစ။

ေနာက္တစ္ခ်က္က၊ dependencies ဆိုတာ application တစ္ခုကို သြင္းယူရာမွာ လိုအပ္တဲ့ ထပ္ေဆာင္း သြင္းယူမွဳေတြ


ျဖစ္ေၾကာင္း သိထားေပးပါ။

ကဲ ! စလိုက္ရေအာင္ :D

၁။ /etc/apt/sources.list ထဲက index ေတြန႔ဲ ခ်ိတ္ဆက္ၿပီး package ေတြကို new version ဆီ update လုပ္မယ္
ဆိုပါစို႔။ apt-get update ကို အသံုးျပဳရပါတယ္။

apt-get update

၂။ system မွာ လက္ရွိ သြင္းထားတဲ့ package အားလံုးကို အဆင့္ျမွင့္မယ္ ဆိုပါစို႔။ apt-get upgrade ကို
အသံုးျပဳရပါတယ္။

apt-get upgrade

၃။ upgrade လုပ္ရာမွာ dependencies ေတြန႔ဲ ပတ္သက္လို႔ အာရံုစား မခံခ်င္တဲ့အခါ apt-get dist-upgrade ကို
အသံုးျပဳရပါတယ္။

apt-get dist-upgrade
၄။ application package တစ္ခု၊ ဥပမာ၊ netcat ကို install လုပ္မယ္ ဆိုပါစို႔။ apt-get install ကို အသံုးျပဳရပါတယ္။

apt-get install netcat

၅။ appkication တစ္ခုထက္ ပိုၿပီး သြင္းခ်င္တယ္ ဆိုပါစို႔။ apt-get install ရဲ့ေနာက္မွာ application package name
ေတြကို space ျခားၿပီး ထည့္ေပးရပါတယ္။

apt-get install netcat nethogs

၆။ မိမိ သြင္းလိုတဲ့ package name ကို အတိအက် မသိတဲ့အခါ wild card * ကို ထည့္သြင္း အသံုးျပဳရပါတယ္။

apt-get install 'netca*'

၇။ installed လုပ္ၿပီးသား package ေတြကို upgrade မလုပ္ေစခ်င္တဲ့အခါ --no-upgrade ဆိုတဲ့ option နဲ႔ တြဲဖက္
အသံုးျပဳႏိုင္ပါတယ္။

apt-get install netcat --no-upgrade

၈။ ရွိၿပီးသား package ကိုပဲ upgrade လုပ္မယ္ အသစ္ထပ္သြင္းတာမ်ိဳး မလိုလားဘူး ဆိုပါစို႔။ --only-upgrade ကို
အသံုးျပဳရပါတယ္။

apt-get install netcat --only-upgrade

၉။ package နဲ႔ စပ္လ်ဥ္းၿပီး သတ္မွတ္ version ကို တိတိက်က် သြင္းယူေစခ်င္တယ္ ဆိုပါစို႔။ package name ေနာက္မွာ
= ခံၿပီး version ကို ထည့္ေပးရပါတယ္။

apt-get install vsftpd=2.3.5-ubuntu1

၁၀။ application ကို configuration files ေတြ မပါပဲ ဖယ္ရွားခ်င္တယ္ ဆိုပါစို႔။ apt-get remove ကို အသံုးျပဳရပါတယ္။

apt-get remove vsftpd


၁၁။ application ကို configuration files ေတြ ပါမခ်န္ပဲ ဖယ္ရွားပစ္မယ္ ဆိုပါစို႔။ apt-get purge ကို အသံုးျပဳရပါတယ္။

apt-get purge vsftpd

၁၂။ remove နဲ႔ purge ကို တြဲသံုးၿပီးေတာ့လည္း application တစ္ခုကို ဖယ္ရွားႏို္င္ပါေသးတယ္။ ေအာက္ပါအတိုင္းေပါ့။

apt-get remove --purge vsftpd

၁၃။ package ေတြ သြင္းယူတုန္းက local repository မွာ ေနရာယူထားတဲ့ .deb file ေတြကို ရွင္းလင္းမယ္ ဆိုပါစို႔။ apt-
get clean ကို အသံုးျပဳရပါတယ္။

apt-get clean

၁၄။ package ရဲ့ source code ကိုပဲ သီးသန္႔ download ဆြဲမယ္ ဆိုပါစို႔။ --download-only source ကို
အသံုးျပဳရပါတယ္။

apt-get --download-only source vsftpd

၁၅။ source code ကို download လုပ္ၿပီး သတ္မွတ္ directory မွာ unpack လုပ္ေစခ်င္တယ္ ဆိုပါစို႔။ apt-get source
ကို အသံုးျပဳရပါတယ္။

apt-get source vsftpd

၁၆။ source code ကို download ခ်မယ္။ unpack လုပ္မယ္။ တစ္ခါတည္း compile ပါ လုပ္မယ္။ ဒါဆိုရင္ --compile
source ကို အသံုးျပဳရပါတယ္။

apt-get --compile source goaccess

၁၇။ package ကို download ပဲ ဆြဲမယ္။ install မလုပ္ခ်င္ဘူး ဆိုပါစို႔။ apt-get download ကို အသံုးျပဳရပါတယ္။

apt-get download nethogs


၁၈။ package ရဲ့ change-log ကို download ဆြဲၿပီး၊ သြင္းထားတဲ့ package version ကိုပါ ျပသ ေပးေစခ်င္တယ္ ဆိုပါစိ႔။ု
apt-get changelog ကို အသံုးျပဳရပါတယ္။

apt-get changelog vsftpd

၁၉။ package ေတြရဲ့ cache ကို စစ္ေဆးၿပီး broken-dependencies ေတြကို repair လုပ္မယ္ ဆိုပါစို႔ apt-get check ကို
အသံုးျပဳရပါတယ္။

apt-get check

၂၀။ package တစ္ခု အတြက္ dependencies ေတြကို local repositories ထဲမွာ ရွာၿပီး တည္ေဆာက္မယ္ ဆိုပါစို႔။
build-dep ကို အသံုးျပဳရပါတယ္။

apt-get build-dep netcat

၂၁။ apt-get ရဲ့ cache ကို ရွင္းလင္းမယ္ ဆိုပါစို႔။ apt-get autoclean ကို အသံုးျပဳရပါတယ္။

apt-get autoclean

၂၂။ package တစ္ခုကို ဖယ္ရွားရာမွာ သူ႔ရဲ့ dependencies ေတြကိုပါ တစ္ခါတည္း ဖယ္ရွားပစ္မယ္ ဆိုပါစို႔။ apt-get
autoremove ကို အသံုးျပဳရပါတယ္။

apt-get autoremove vsftpd

ဆိုရရင္ေတာ့၊ apt-get ကို အသံုးျပဳၿပီး application package ေတြကို ကိုင္တြယ္တဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။
package management with apt-cache
apt-get အေၾကာင္းကို ေျပာၿပီးတဲ့ေနာက္မွာ အခု ေျပာမွကေတာ့ apt-cache အေၾကာင္းပါ။

apt-cache ကို cache ထဲမွာ ရွိတဲ့ software package ေတြကို ၾကည့္ဖို႔၊ ရွာေဖြဖို႔၊ သက္ဆိုင္တဲ့ info ေတြကို ဖတ္ဖို႔
အသံုးျပဳပါတယ္။

ေလ့လာၾကည့္ရေအာင္။

၁။ ရရွိႏိုင္တဲ့ package ေတြရဲ့ စာရင္းကို ၾကည့္ခ်င္ရင္ apt-cache pkgnames ကို အသံုးျပဳရပါတယ္။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

apt-cache pkgnames

၂။ package တစ္ခုကို ရွာေဖြဖို႔ အတြက္ apt-cache search ကို အသံုးျပဳပါတယ္။

ဥပမာ၊ vsftpd ဆိုတဲ့ package ကို ရွာမယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

apt-cache search vsftpd

၃။ application တစ္ခု အမည္ပါတဲ့ package အားလံုးကို စာရင္းအေနနဲ႔ ၾကည့္ဖို႔ apt-cache pkgnames ကို
အသံုးျပဳပါတယ္။

ဥပမာ၊ vsftpd ဆိုတာနဲ႔ စတဲ့ package အားလံုးကို ၾကည့္မယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

apt-cache pkgnames vsftpd

၄။ package နဲ႔ သက္ဆိုင္တဲ့ information ေတြကို ၾကည့္ဖို႔ apt-cache show ကို အသံုးျပဳပါတယ္။

ဥပမာ၊ netcat ဆိုတဲ့ application ရဲ့ info ကို ၾကည့္မယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

apt-cache show netcat


၅။ application တစ္ခုန႔ဲ သက္ဆိုင္တဲ့ dependencies ေတြကို ၾကည့္ဖို႔ apt-cache showpkg ကို အသံုးျပဳပါတယ္။

ဥပမာ၊ vsftpd ရဲ့ dependencies စာရင္းကို ၾကည့္မယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအညက္ပါအတိုင္းပါ။

apt-cache showpkg vsftpd

၆။ cache ထဲမွာ ရွိတဲ့ package အားလံုးကို ၾကည့္ဖို႔ apt-cache stats ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

apt-cache stats

apt-cache ကို အသံုးျပဳၿပီး application package ေတြကို ရွာေဖြ ၾကည့္ရွဳတဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။
controlling services (services မ်ားကို စီမံျခင္း)
linux ေပၚမွာ run ေနတဲ့ services ေတြကို ကိုင္တြယ္ဖို႔ systemctl ဆိုတဲ့ command ကို သံုးပါတယ္။ application
ေတြကို unit လို႔ ေခၚၿပီး၊ unit တစ္ခုမွာ

၁။ service
၂။ socket
၃။ path ဆိုၿပီး ၃ ပိုင္းရွိပါတယ္။

active ျဖစ္ေနတဲ့ units ေတြရဲ့ service ကို ၾကည့္ခ်င္တဲ့အခါ systemctl list-units --type=service ကို သံုးပါတယ္။
command ကေတာ့ ေအာက္ပါအတိုင္းပါ။

systemctl list-units --type=service

inactive ျဖစ္ေနတဲ့ units ေတြရဲ့ service ကို ၾကည့္ခ်င္တဲ့အခါ systemctl list-units --type=service --all --
state=inactive ကို သံုးပါတယ္။ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။

systemctl list-units --type=service --all --state=inactive

active ျဖစ္ေနတဲ့ units ေတြရဲ့ service ေရာ inactive ျဖစ္ေနတဲ့ units ေတြရဲ့ service ကိုပါ ၾကည့္ခ်င္တဲ့အခါ systemctl
list-units --type=service --all ကို သံုးပါတယ္။ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။

systemctl list-units --type=service --all

units ေတြရဲ့ services ေတြ enable ျဖစ္ေနလား disabled ျဖစ္ေနလား သိဖို႔ systemctl list-unit-files --type=service
ကို သံုးပါတယ္။ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။

systemctl list-unit-files --type=service

failed ျဖစ္ေနတဲ့ units ေတြကို ၾကည့္ဖို႔ systemctl --failed --type=service ကို သံုးပါတယ္။ command ကေတာ့
ေအာက္ပါအတိုင္းပါ။

systemctl --failed --type=service

unit တစ္ခုရဲ့ status ကို ၾကည့္ဖို႔ systemctl status UNIT.service ကို သံုးတယ္။ UNIT ေနရာမွာ application ကို
ထည့္ေပးရမွာပါ။ ဥပမာ၊ sshd ဆိုတဲ့ service ကို ၾကည့္မယ္ ဆိုပါစို႔။ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။

systemctl status sshd.service


unit တစ္ခုရဲ့ status:full output ကို ၾကည့္ခ်င္ရင္ systemctl status sshd.service –l ကို သံုးတယ္။ command
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

systemctl status sshd.service –l

unit တစ္ခု active ျဖစ္ေနလား သိဖို႔ systemctl is-active UNIT ကို သံုးပါတယ္။ command ကေတာ့
ေအာက္ပါအတိုင္းပါ။

systemctl is-active sshd

unit တစ္ခု boot time မွာ run ဖို႔ enable ေပးခံထားရလား သိဖို႔ systemctl is-enabled UNIT ဆိုတဲ့ format ကို
သံုးပါတယ္။ command ကေတာ့ ေအာက္ပါအတိုင္းပါ။

systemctl is-enabled sshd

Systemctl နဲ႔ တြဲဖက္ အသံုးျပဳႏိုင္တဲ့ command statement ၁၀ ခုကို အတိုခ်ဳပ္ ေဖၚျပေပးလိုက္ပါတယ္။ UNIT ေနရာမွာ
စီမံလိုတဲ့ application ကို ထည့္ေပးရမွာပါ။ ရိုးရိုးရွင္းရွင္းပါပဲေနာ္။

Summary of systemctl commands


1.view detailed information about a unit state systemctl status UNIT
2.start a service on a running system systemctl start UNIT
3.stop a service on a running system systemctl stop UNIT
4.restart a service on a running system systemctl restart UNIT
5.reload configuration file of a running service systemctl reload UNIT
6.completely disable a service from being start systemctl mask UNIT
7.make a mask service available systemctl unmask UNIT
8.configure a service to start at boot time systemctl enable UNIT
9.disable a service from starting at boot time systemctl disable UNIT
10.to see the low-level properties of a unit systemctl show UNIT
11.list units which are required by the specified unit systemctl list-dependencies UNIT
12.to halt the system systemctl halt
13.to shutdown the system systemctl poweroff
14.to reboot the system systemctl reboot

linux old version ေတြမွာေတာ့၊ systemctl အစား service ဆိုတဲ့ command ကို သံုးပါတယ္။
သေဘာတရားခ်င္းကေတာ့ အတူတူပါပဲ။ service ကို အသံုးျပဳမယ္ဆို သူ႔ရဲ့ formant က service application
command statement ပါ။ ဥပမာ၊ old version မွာ sshd ကို restart လုပ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က
ေအာက္ပါအတိုင္းပါ။
service sshd restart

ကဲ ! service, socket နဲ႔ path ေတြကို systemctl ကို အသံုးျပဳၿပီး ကိုင္တြယ္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုး အဆင္ေျပပါေစေနာ္။
ssh ျဖင့္ password ကို အေျချပဳ၍ remote login ၀င္ျခင္း (ssh အပိုင္း ၁)

ဒီတစ္ခါ linux machine ေတြကို secure shell လို႔ ေခၚတဲ့ ssh နဲ႔ remote login ဝင္နည္းေလးကို ေလ့လာရေအာင္ဗ်ာ။
တကယ့္ပါးပါးေလး ေလ့လာၾကည့္ၾကတာေပါ့။

ဥပမာ - server ဆိုတဲ့စက္ကို client ဆိုတဲ့ စက္ကေန၊ remote login ဝင္မယ္ ဆိုပါစို႔။ server ေပၚမွာ ႀကိဳတင္
တည္ေဆာက္ထားတဲ့ account ရွိဖို႔လိုပါတယ္။ ဒါမွ အာ့ဒီ username နဲ႔ password ကို သံုးၿပီး remote login
ဝင္လို႔ရမွာပါ။

server ရဲ့ hostname ကိုလည္း သိဖို႔ လိုပါတယ္။ server ရဲ့ hostname ကို သိဖို႔ server ေပၚမွာ hostname ဆိုတဲ့
command ကို run ပီး ၾကည့္ႏိုင္ပါတယ္။ example.com လို႔ ဆိုၾကပါစို႔။

server ေပၚမွာ mgmg ဆိုတဲ့ account ေလး ရွိတယ္ဆိုပါစို႔။ သူ႔ကို remote login ဝင္ဖ႔က
ို အရမ္းကို လြယ္ပါတယ္။ ssh
ဆိုတဲ့ command ေလးနဲ႔ တြဲပီး ေအာက္ပါအတိုင္း ရိုက္ေပးရံုပါပဲ။

[root@linux~]# ssh mgmg@server.example.com

အာ့ဒီအခါ password ေတာင္းပါလိမ့္မယ္။ ထည့္ေပးလိုက္ပါ။

ဒါဆိုရင္ server ရဲ့ command line ထဲကို remote login နဲ႔ ဝင္ေရာက္သြားၿပီေပါ့။

တစ္ခ်က္ သိထားဖို႔က ssh ကို အသံုးျပဳတဲ့အခါ server ကေန client ဆီကို encrypted လုပ္ထားတဲ့ publick key
တစ္ခုကို ပို႔ေပးပါတယ္။ ~/.ssh/known_host ဆိုတဲ့ file ေလးေပ့ါ။ server ဘက္ျခမ္းမွာေတာ့ /etc/ssh/*key*
ေအာက္မွာ သိမ္းထားပါတယ္။

server ကို ssh နဲ႔ login ဝင္တိုင္း အဲဒီ key ႏွစ္ခုကို တိုက္ဆိုင္ စစ္ေဆးပါတယ္။ server ဘက္က ေျပာင္းလိုက္လို႔ျဖစ္ေစ
အေၾကာင္းတစ္ခုေၾကာင့္ျဖစ္ေစ key pair မတူေတာ့ရင္ ဝင္လို႔ မရေတာ့ပါဘူး။

အဲဒီအခါ client ဘက္မွာ ရွိတဲ့ ~/.ssh/known_host ဆိုတဲ့ file ကို ဖ်က္ပစ္ပီး ssh နဲ႔ ထပ္မံ login ဝင္ေပးဖို႔ လိုပါတယ္။
ဒါကေတာ့ သိထားဖို႔ပါ။

လြယ္ပါတယ္ေနာ္။ အပိုင္း ၁ ကေတာ့ ဒီေလာက္ပါပဲ။


ssh with private-public key (ssh အပိုင္း ၂)

linux machine ကို ssh ကေနတစ္ဆင့္ password နဲ႔ remote login ဝင္တာကိုေတာ့ အပိုင္း ၁ မွာ အာလူးဖုတ္ၿပီး
သြားပါၿပီ။ ဒီတစ္ခါ password သံုးစရာမလိုပဲ private-public key အသံုးျပဳၿပီး ဝင္နည္းကို ေလ့လာၾကည့္ရေအာင္။
ဒီနည္းက ပိုၿပီး လံုၿခံဳမွဳ ရွိပါတယ္။

ဥပမာ >> client ဆိုတဲ့ စက္ကေန server ေပၚမွာ ရွိတဲ့ client account ဆီ remote login ဝင္မယ္ ဆိုၾကပါစို႔။

လုပ္ရမယ့္ အဆင့္ေတြက ရိုးရွင္းပါတယ္။ client စက္မွာ private key နဲ႔ public key ႏွစ္ခုကို ဖန္တီးမယ္။ ၿပီးရင္ server
စက္ဆီ public key ကို လွမ္းပို႔မယ္။ တစ္ခါပို႔ၿပီးသြားရင္ ေနာက္တစ္ခါ remote login ဝင္တ့ဲအခါ ဘာမွ password
ထည့္စရာ မလို ေတာ့ဘူးေပါ့။ ဒီေလာက္ေလးပါပဲ။

ကဲ ! client စက္မွာ private နဲ႔ public key ႏွစ္ခုကို ဖန္တီးဖို႔ ေအာက္က command ေလး run လိုက္ၾကစို႔။

[root@linux~]# ssh-keygen

ဒီလို run ၿပီးတဲ့အခါ ~/.ssh/ ေအာက္မွာ private key ကို id_rsa နဲ႔ public key ကို id_rsa.pub ဆိုၿပီး ေတြ႔ရပါမယ္။

key ေတြ ဖန္တီးၿပီးသြားၿပီဆိုေတာ့ public key ကို server ဆီ command ေလးနဲ႔ ေအာက္ကအတိုင္း ပို႔ေပးလိုက္ရံုေပါ့။

[root@linux~]# ssh-copy-id -i ~/.ssh/id_rsa.pub client@server.example.com

ဒါဆိုရင္ လုပ္ရမယ့္ အဆင့္ေတြ ၿပီးဆံုးပါၿပီ။

server ေပၚက client ဆိုတဲ့ account ဆီ ssh နဲ႔ login ဝင္ၾကည့္လိုက္ပါ။

[root@linux~]# ssh client@server.example.com

ဘာ password မွ မေတာင္းေတာ့တာ ေတြ႔ရပါလိမ့္မယ္။

ဒီေလာက္ပါပဲ။
ssh ျဖင့္ remote login ၀င္ျခင္းမွ root account အား တားဆီးျခင္း (ssh အပိုင္း ၃)

ဒီတစ္ခါေတာ့ linux server ေပၚက root account ကို ssh သံုးၿပီး remote login ဝင္လို႔ မရေအာင္ ပိတ္ထားၾကစို႔။

ဘာ့ေၾကာင့္လဲ ဆိုေတာ့ linux machine တစ္ခု မွာ root account ဟာ အေရးအပါဆံုးမို႔ သူ႔ကို ssh နဲ႔ login ဝင္ခြင့္
ေပးထားတာဟာ အတန္အသင့္ အႏၱရာယ္ႀကီးလွပါတယ္။ ဒါ့ေၾကာင့္ပါ။

လုပ္ရမယ့္ အဆင့္ေတြကေတာ့ ရိုးရွင္းပါတယ္။ server စက္ထဲက /etc/ssh/sshd_config ဆိုတဲ့ file ထဲကို


ဝင္ျပင္ေပးရံုပါပဲ။ command ကေတာ့ ေအာက္ပါအတိုင္းေပါ့။

vim /etc/ssh/sshd_config

i key ကို ႏွိပ္ၿပီး edit mode ထဲ ဝင္ပါ။ ဘာေတြျပင္ရမလဲဆိုေတာ့

PermitRootLogin yes ေနရာမွာ no

အာ့လို ျပင္ေပးလိုက္ပါ။

ၿပီးတဲ့အခါ escape key ႏွိပ္၊ :wq ရိုက္ၿပီး ထြက္ပါ။

ဒါ့အျပင္ ေအာက္က command ေလးနဲ႔ sshd service ကို restart ခ်လိုက္ပါဦး။

[root@linux~]# service sshd restart

ဒါမွ ျပင္ဆင္ထားတာေတြ အသက္ဝင္မွာပါ။

ကဲ ! client စက္ဆီသြား၊ root account ကို ssh နဲ႔ remote login ဝင္ၾကည့္ပါဦး။

[root@linux~]# ssh root@server.example.com

ဝင္လို႔ ရပါေသးရဲ့လား?

root account ကို ssh နဲ႔ ဝင္မရေအာင္ တားဆီးတာကေတာ့ ဒီေလာက္ပါပဲ။


ssh ျဖင့္ remote login ၀င္ျခင္းမွ normal account အား တားဆီးျခင္း (ssh အပိုင္း ၄)

root account ကို တားဆီးသလိုပါပဲ။ server စက္ထဲက /etc/ssh/sshd_config ဆိုတဲ့ file ထဲကို ဝင္ျပင္ေပးရမွာပါ။
command ကေတာ့ ေအာက္ပါအတိုင္းေပါ့။

vim /etc/ssh/sshd_config

i key ကို ႏွိပ္ၿပီး edit mode ထဲ ဝင္ပါ။ ဘာေတြျပင္ရမလဲဆိုေတာ့

PasswordAuthentication yes ေနရာမွာ no

အာ့လို ျပင္ေပးလိုက္ပါ။

ၿပီးတဲ့အခါ escape key ႏွိပ္၊ :wq ရိုက္ၿပီး ထြက္ပါ။

ဒါ့အျပင္ ေအာက္က command ေလးနဲ႔ sshd service ကို restart ခ်လိုက္ပါဦး။

[root@linux~]# service sshd restart

ဒါမွ ျပင္ဆင္ထားတာေတြ အသက္ဝင္မွာပါ။

ကဲ ! client စက္ဆီသြား၊ server ေပၚက client ဆိုတဲ့ normal account ဆီကို ssh နဲ႔ remote login ဝင္ၾကည့္ပါဦး။

[root@linux~]# ssh client@server.example.com

ဝင္လို႔ ရပါေသးရဲ့လား?

ဒီေနရာမွာ တစ္ခု သိထားရမွာက၊ ဒီလို မတားဆီးခင္ user account ေတြဟာ key-based authentication
ႀကိဳလုပ္ထားမယ္ဆိုရင္၊ remote login ၀င္လို႔ ရေနမယ္ ဆိုတာပါပဲ။
မိမိ စက္သို႔ sssh ျဖင့္ မည္သူ login ၀င္ထားသည္ကို ၾကည့္ရွဳျခင္း (ssh အပိုင္း ၅)

လြယ္လြယ္ရွင္းရွင္းပါပဲ။ ကိုယ့္စက္ထဲကို ssh အသံုးျပဳၿပီး ဘယ္ user ေတြ ၀င္ေရာက္ေနလဲ သိလုိရင္ w –f ဆိုတဲ့
command နဲ႔ ၾကည့္ႏိုင္ပါတယ္။

W –f လို႔ ရိုက္ enter ေခါက္ရံုေပါ့။

ခုေလာက္ဆို ssh နဲ႔ ပတ္သက္လ႔ို ရွင္းလင္းေလာက္ၿပီ ထင္ပါတယ္။ လြယ္လြယ္ေလးပါေနာ္။ ssh အပိုင္း ၁ ၊ ၂ ၊ ၃ ၊ ၄


အေျခခံအေၾကာင္းမ်ား ဒီတင္ ၿပီးပါၿပီ။

အားလံုးပဲ အဆင္ေျပပါေစ။
rsyslog

ကဲ ! ခုတစ္ခါ linux မွာ system နဲ႔ဆိုင္တဲ့ log ေတြအေၾကာင္း ေလ့လာၾကည့္ရေအာင္။

log ေတြဟာ problem ေတြကို ေျဖရွင္းရာမွာ အသံုးဝင္ပါတယ္။ log file ေတြကို ဖတ္ရာမွာ root account နဲ႔
ဝင္ဖတ္ရပါတယ္။

log ပိုင္းမွာ rsyslog နဲ႔ systemd-journal လို႔ log အမ်ိဳးအစား ၂ ခု ရွိၿပီး၊ ဒီေနရာမွ rsyslog အေၾကာင္းကို
တင္ဆက္သြားမွာပါ။

ဒီေနရာမွာ log rotation အေၾကာင္း နည္းနည္းေျပာပါရေစ။ log rotation ဆိုတာက log file ေတြကို
ဘယ္ေန႔ရက္အခ်ိန္ကေန ဘယ္အထိထားရွိမယ္၊ ဘယ္အခ်ိန္ေရာက္ရင္ေတာ့ log အေဟာင္းေတြကို ဖ်က္ပစ္မယ္၊ အဲဒီလို
သတ္မွတထ
္ ားတာကို ေျပာတာပါ။ logrotate ဆိုတဲ့ utility ကို အသံုးျပဳၿပီး စီမံရပါတယ္။

rsyslog ဟာ log rotation လုပ္ခ်ိန္က လြဲၿပီး system နဲ႔ ဆိုင္တဲ့ log ေတြကို /var/log ဆိုတဲ့ directory ေအာက္မွာ
မွတ္သားထားပါတယ္။

အဲဒီထဲကို ဝင္ၿပီး console, mail, message, secure, cron, .. စသျဖင့္ log ေတြကို ၾကည့္ရွဳႏိုင္ပါတယ္။

ဥပမာ၊ message နဲ႔ ဆိုင္တဲ့ log ကို ၾကည့္မဟ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command က ေအာက္ပါအတိုင္းပါ။

less /var/log/messages

log message ေတြရဲ့ လမ္းေၾကာင္း နဲ႔ rules ေတြကိုေတာ့ /etc/rsyslog.conf မွာ ၾကည့္ရွဳႏိုင္ပါတယ္။

0 ကေန 7 ထိ log ရဲ့ priority code ေတြကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။

0 >> emerg [system is unusable]

1 >> alert [action must be taken immediately]

2 >> crit [critical condition]

3 >> err [non-critical error condition]

4 >> warning [warning condition]

5 >> notice [normal but significant event]

6 >> info [informational event]

7 >> debug [debugging-level message]


log တစ္ေၾကာင္းမွာ အပိုင္း ၄ ခု ပါရွိပါတယ္။ log file ေတြကို ဖတ္တဲ့အခါ အဲဒီ အပိုင္း ၄ ခုကို မူတည္ၿပီး ဖတ္ရမွာပါ။
အဲဒါေတြကေတာ့၊

1. log စတင္ မွတ္သားတဲ့အခ်ိန္

2. log message နဲ႔ ဆိုင္တဲ့ host ရဲ့ name

3. log message ကို ေပးပို႔လိုက္တဲ့ program သို႔မဟုတ္ process

4. message ထဲမွာပါတဲ့ စာသား

တို႔ ျဖစ္ပါတယ္။

log file ေတြကို tail -f အသံုးျပဳၿပီး live ၾကည့္ႏိုင္ပါတယ္။ ဥပမာ၊ security နဲ႔ ဆိုင္တဲ့ log ကို live ၾကည့္မယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။

tail -f /var/log/secure

logger ဆိုတဲ့ command ကို အသံုးျပဳၿပီး log message ေတြကို log file ဆီ ေပးပို႔ႏိုင္ပါေသးတယ္။ ဥပမာ၊ user
နဲ႔ဆိုင္တဲ့ error message ကို ေပးပို႔မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။

logger -p user.err "this is testing"

log code ေတြန႔ဲ ဝင္ေရာက္ရမယ့္ လမ္းေၾကာင္းကို စိတ္ႀကိဳက္ ေျပာင္းလဲ သတ္မွတ္ေပးႏိုင္ပါေသးတယ္။

ဥပမာ၊ error code ေတြန႔ဲ သူ႔ရဲ့ လမ္းေၾကာင္းကို သတ္မွတ္ေပးမယ္ ဆိုပါစို႔။ error နဲ႔ ဆိုင္တဲ့ message ေတြကို
/var/log/new-err ဆိုတဲ့ file ထဲမွာ သိမ္းေစခ်င္တယ္ ဆိုပါစို႔။

ျပဳလုပ္ရမယ့္ အဆင့္ေတြကေတာ့ ေအာက္ပါအတိုင္းပါ။

၁။ /etc/rsyslog.d/ ေအာက္မွာ new-err.conf ဆိုတဲ့ file ေလး ေဆာက္ပါ။

၂။ new-err.conf ထဲမွာ *.err /var/log/new-err လို႔ ေရးသား သတ္မွတ္ေပးလိုက္ပါ။

၃။ /var/log/ ေအာပ္မွာ touch new-err ဆိုတဲ့ command သံုးၿပီး file ေလး ေဆာက္ေပးလိုက္ပါ။

ဒီအခ်က္ ၃ ခ်က္ကို command တစ္ၾကာင္းတည္းနဲ႔ ေရးႏိုင္ပါေသးတယ္။ ေအာက္ပါအတိုင္းေပါ့။

echo "*.err /var/log/new-err" > /etc/rsyslog.d/new-err.conf


ကဲ ! ဟုတ္ပါၿပီ။ အထက္က အဆင့္ေတြအတိုင္း ၿပီးငြားရင္ rsyslog ကို restart ခ်ေပးရပါမယ္။ command ကေတာ့
ေအာက္ပါအတိုင္းပါ။

systemctl restart rsyslog

ဒါဆို error နဲ႔ သက္ဆိုင္တဲ့ message ေတြဟာ ;var/log/new-err ဆိုတဲ့ file ထဲ ေရာက္သြားပါလိမ့္မယ္။

logger -p user.err "testing error log" လို႔ log message ေပးပိ႔ၿု ပီး စမ္းၾကည့္ႏိုငိပါတယ္။

rsyslog နဲ႔ သက္ဆိုင္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုး အဆင္ေျပၾကပါေစ။
systemd-journal

linux system တစ္ခုမွာ log file ေတြန႔ဲ ပတ္သက္လ႔ို rsyslog နဲ႔ systemd-journal ဆိုၿပီး ၂ မ်ိဳး ရွိပါတယ္။ rsyslog
အေၾကာင္း ေရးတင္ၿပီးၿပီမို႔ အခု ေျပာမွာကေတာ့ systemd-journal အေၾကာင္းပါ။

systemd-journal ဟာ log ေတြကို /run/log ထဲမွာ မွတ္သားပါတယ္။ system boot လုပ္ခ်ိန္ကေန စၿပီး log ေတြကို
မွတ္သားထားၿပီး system reboot လုပ္တာနဲ႔ log ေတြကို ဖ်က္ပစ္ပါတယ္။ ဒါဟာ systemd-journal ရဲ့
သေဘာသဘာဝပါပဲ။

systemd-journal log ေတြကို ၾကည့္ဖို႔ journalctl ဆိုတဲ့ command ကို အသံုးျပဳပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

journalctl

log ေတြကို အေရအတြက္န႔ဲ သတ္မွတ္ၿပီး ၾကည့္ဖို႔ -n ဆိုတဲ့ option ကို တြဲသံုးရပါတယ္။

journalctl -n 5

log ေတြကို priority အလိုက္ ခြဲျခားၿပီး ၾကည့္ဖို႔ -p ဆိုတဲ့ option နဲ႔ တြဲသံုးရပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

journalctl -p err

ဒီေနရာမွာ သိထားဖို႔က၊ 0 ကေန 7 ထိ log ရဲ့ priority code ေတြ ရွိပါတယ္။ အဲဒါေတြကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။

0 >> emerg [system is unusable]

1 >> alert [action must be taken immediately]

2 >> crit [critical condition]

3 >> err [non-critical error condition]

4 >> warning [warning condition]

5 >> notice [normal but significant event]

6 >> info [informational event]

7 >> debug [debugging-level message]

log ေတြကို live အေနနဲ႔ ဖတ္ခ်င္ရင္ -f ဆိုတဲ့ option ကို တြဲသံုးရပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

journalctl -faz
အခ်ိန္ကန္႔သတ္ခ်က္တစ္ခုအတြင္းက log ေတြကို ဖတ္ခ်င္ရင္ --since နဲ႔ --until ဆိုတဲ့ options ေတြကို သံုးစြဲရပါတယ္။
format ကေတာ့ ေအာက္ပါအတိုင္းပါ။

--since Y-M-D H:M:S --until Y-N-D H:M:S

ဥပမာ၊ 2017-02-19 05:00:00 အခ်ိန္ကေန 2017-02-19 06:00:00 အခ်ိန္ၾကားက log ေတြကို သိခ်င္တယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။

journalctl --since 2017-02-19 05:00:00 --until 2017-02-19 06:00:00

log တစ္ေၾကာင္းခ်င္းကို အေသးစိတ္ verbose mode နဲ႔ ၾကည့္ခ်င္ရင္ -o ဆိုတဲ့ option ကို သံုးရပါတယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။

journalctl -o

log ေတြကို reboot လုပ္တိုင္း ဖ်က္မျပစ္ေစခ်င္ဘူး။ file တစ္ခုဆီ redirect လုပ္ထားမယ္ဆိုလည္း အဆင္ေျပပါတယ္။

ျပဳလုပ္ရမယ့္ အဆင့္ေတြကေတာ့ ေအာကိပါအတိုင္းပါ။

၁။ /var/log/ ေအာက္မွာ journal-log အမည္နဲ႔ directory တစ္ခု ေဆာက္ေပးပါ။

၂။ chown :systemd-journal journal-log လို႔ ရိုက္ၿပီး journal-log ကို systend-journal ဆိုတဲ့ group က
ပိုင္ဆိုင္ေၾကာင္း သတ္မွတ္ေပးလိုက္ပါ။

၃။ chmod g+s journal-log လိ႔ု ရိုပ္ၿပီး special permission သတ္မွတ္ေပးလိုက္ပါ။

၄။ killall _USR1 systemd-journald လိ႔ု ရိုက္ၿပီး restart လုပ္ေပးလိုက္ပါ။

ဒါဆို log ေတြကို reboot လုပ္တာနဲ႔ ဖ်က္မပစ္ပဲ /var/log/ ေအာက္က journal-log ဆိုတဲ့ directory ထဲမွာ
မွတ္သားေပးသြားပါလိမ့္မယ္။

systemd-journal အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။
scp (secure copy)

ဒီတစ္ခါ ေျပာမွာကေတာ့ copy ကူးတဲ့အေၾကာင္းပါပဲ။ ဒါေပမယ့္ သူက ရိုးရိုး copy မဟုတ္ပါဘူး။ secure copy ပါ။ scp
ေပါ့။

scp ကို network ခ်ိတ္ထားတဲ့ linux system တစ္ခုန႔တ


ဲ စ္ခု အၾကား file ေတြကို ကူးယူရာမွာ လံုၿခံဳမွဳ ရွိေစဖို႔ သံုးပါတယ္။

ဥပမာ A၊ tom ဆိုတဲ့ user သည္ network ေပၚက တစ္ျခားစက္တစ္လံုးရဲ့ jerry ဆိုတဲ့ user ဆီက /home/jerry/
ေအာက္မွာရွိတဲ့၊ file1 ကို လွမ္းကူးမယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

scp jerry@host.com:/home/jerry/file1 /home/tom

jerry ရဲ့ password ကို ေတာင္းပါလိမ့္မယ္။ ထည့္ေပးလိုက္ေပါ့။

ဥပမာ B၊ tom ဆိုတဲ့ user သည္ သူ႔ရဲ့ /home/tom/ေအာက္က file1 ကို network ေပၚက စက္တစ္လံုးရဲ့ jerry ဆိုတဲ့
user ရဲ့ /home/jerry ဆီကို လွမ္းပို႔မယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

scp /home/tom/file1 jerry@host.com:/home/jerry

jerry ရဲ့ password ေတာင္းပါလိမ့္မယ္။ ထည့္ေပးလိုက္ေပါ့။

ကဲ ! ဟုတ္ပါၿပီ။ ဆိုရရင္ .....

အထက္မွာ ျပခဲ့တဲ့ ဥပမာ ၂ ခုအတိုင္းေပါ့။ scp ရဲ့ အလုပ္လုပ္ပံုကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။
rsync ျဖင့္ ကူးယူျခင္း

rsync ...။ သူက copy ကူးသလိုပါပဲ။ ဒါေပမယ့္ ရိုးရိုး copy နဲ႔ မတူတာက၊ သူက synchronize လုပ္ၿပီး ကူးတာပါ။
ဒါ့ေၾကာင့္ သူ႔ကို rsync လိ႔ေ
ု ခၚတာပါ။

ဥပမာ၊ file 10 ခုကို menory stick ထဲ ကူးထည့္တယ္။ ရုတ္တရက္ ကူးရင္းတန္းလန္း memory stick ျပဳတ္သြားတယ္
ဆိုပါစို႔။

ဒီေနရာမွာ rsync ဟာ file ေတြကို အစအဆံုး ျပန္ကူး၊ file ထပ္ေနရင္ replace လုပ္စရာ မလိုပဲ၊ လိုအပ္တဲ့ေနရာကေန
synchronize လုပ္ၿပီး ကူးသြားပါလိမ့္မယ္။ အခ်ိန္နည္းနည္း ပိုၾကာေပမယ့္ save ျဖစ္ပါတယ္။

ဒါကေတာ့ rsync ရဲ့ အလုပ္လုပ္တဲ့ သေဘာတရားပါပဲ။

rsync ကို အသံုးျပဳခ်င္တဲ့အခါ သမားရိုးက် cp ဆိုတဲ့ command အစား rsync ကို -av ဆိုတဲ့ option နဲ႔
အသံုးျပဳလိုက္ရံုပါပဲ။

ဥပမာ၊ snow.mp3 ဆိုတဲ့ file ကို /mnt/ ေအာက္က songdrive ဆီ rsync နဲ႔ ကူးမယ္ ဆိုပါစို႔။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

rsync -av snow.mp3 /mnt/songdrive

ဥပမာ၊ tom ဆိုတဲ့ user သည္ network ေပၚက တစ္ျခားစက္တစ္လံုးရဲ့ jerry ဆိုတဲ့ user ဆီက /home/jerry/
ေအာက္မွာရွိတဲ့၊ file1 ကို လွမ္းကူးမယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

rsync jerry@host.com:/home/jerry/file1 /home/tom

jerry ရဲ့ password ကို ေတာင္းပါလိမ့္မယ္။ ထည့္ေပးလိုက္ေပါ့။

ယခင္ သံုးေနက် cp အစား rsync -av ကို အသံုးျပဳသြားတဲ့ သေဘာပါပဲေနာ္။ rsync အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုး အဆင္ေျပၾကပါေစ
sftp (secure file transfer protocol)

ခုတစ္ခါ ေျပာမွာကေတာ့ file transfer protocol အေၾကာင္းပါ။ ရိုးရိုး ftp မဟုတ္တဲ့ secure ျဖစ္တဲ့ sftp ေပါ့။ copy
ကူးတာထက္ ပိုအဆင္ေျပပါတယ္။

network ေပၚက စက္ေတြ တစ္ခုန႔တ


ဲ စ္ခု အၾကား sftp အသံုးျပဳၿပီး file ေတြကို transfer လုပ္ရာမွာ file upload | file
download ပံုစံန႔ဲ သြားပါတယ္။

upload လုပ္ခ်င္ရင္ put ဆိုတဲ့ command ကို သံုးစြဲရပါတယ္။ download လုပ္ခ်င္ရင္ get ဆိုတဲ့ command ကို
သံုးစြဲရပါတယ္။

ဥပမာ၊ jerry ရဲ့ စက္ထဲကို မိမိရဲ့ current directory ေအာက္က file1 ဆိုတဲ့ file ကို ပို႔မယ္ ဆိုပါစို႔။ jerry နဲ႔ ခ်ိတ္ဆက္မိဖို႔
အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။

sftp jerry@host.com

ဒါဆိုရင္ sftp ရဲ့ custom shell ေလး က်လာပါလိမ့္မယ္။ ေအာက္ပါပံုစံမ်ိဳးနဲ႔ေပါ့။

sftp>

အဲဒီ shell ထဲမွာ ls, mkdir စတဲ့ command ေတြ အသံုးျပဳႏိုင္ပါတယ္။

အစျပန္ေကာက္ရရင္၊ jerry ဆီ file upload လုပ္မွာ ျဖစ္တဲ့အတြက္ put ဆိုတဲ့ command ကို သံုးရပါမယ္။

sftp> put file1 ေပါ့။

ဒီအခါ file1 ဟာ jerry ဆီ ေရာက္သြားပါလိမ့္မယ္။ ဒါက file ပို႔တဲ့ အပိုင္းပါ။

file ကို download ဆြဲခ်င္ရင္ get ဆိုတဲ့ command ကို သံုးရပါတယ္။

ဥပမာ၊ jerry ဆီက file2 ဆိုတာေလးကို download ျပန္ဆြဲမယ္ ဆိုပါစို႔။ download ဆြဲမွာ ျဖစ္လို႔ အသံုးျပဳရမယ့္
command က get ပါ။
sftp> get file2 ေပါ့။

ဒါဆို jerry ဆီက file2 ဟာ ကိုယ့္ရဲ့ current directory ထဲ ေရာက္လာပါလိမ့္မယ္။

တိုတိုရွင္းရွင္းပါပဲေနာ္။ sftp အသံုးျပဳၿပီး network ေပၚမွာ file ေတြ ေပးပိ႔ု (put) ရယူ (get) တဲ့ အေၾကာင္းကေတာ့
ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။
network configuration
linux မွာ network setting ကို configure လုပ္တဲ့အေၾကာင္း ေလ့လာၾကရေအာင္။

network card မွာ သတ္မွတ္ေပးထားတဲ့ ip, mac address စတာေတြကို ifconfig ဆိုတဲ့ command နဲ႔
ေခၚၾကည့္ႏိုင္ပါတယ္။

network setting ေတြကို သတ္မွတ္ေပးဖို႔ အတြက္ကေတာ့ နည္းလမ္း ၂ ခု ရွိပါတယ္။

၁။ တစ္ခုက nmcli ဆိုတဲ့ command ကို အသံုးျပဳၿပီး command line ကေန တစ္ဆင့္ခ်င္း သတ္မွတ္သြားတဲ့
နည္းလမ္းပါ။

၂။ ေနာက္တစ္ခက
ု network file ထဲကို vim ဆိုတဲ့ command line text editor နဲ႔ ဝင္ျပင္တဲ့ နည္းလမ္းပါ။

၁။ nmcli ကို အသံုးျပဳၿပီး configure လုပ္မယ္ဆိုရင္ terminal ထဲမွာ nmcli လို႔ ရိုက္ၿပီး tab key ကို ၂ ခ်က္ ဆက္တိုက္
ႏွိပ္ေပးလိုက္ပါ။ nmcli နဲ႔ ဆက္စပ္ သံုးစြဲရမယ့္ options ေတြကို ျပေပးပါလိမ့္မယ္။

က်လာတဲ့ options ေတြထဲကမွ connection ကို configure လုပ္မွာဆို connection ကို ေရြး tab key ၂ ခ်က္ ထပ္ႏွိပ္၊
connection နဲ႔ ဆက္ႏြယ္တဲ့ add modify show စသျဖင့္ options ေတြ ထပ္က်လာပါလိမ့္မယ္။

connection အသစ္ ေဆာက္မွာဆို add ကို ေရြးၿပီး tab key ၂ ခ်က္ ထပ္ႏွိပ္၊ setting ေတြ ျဖည့္။

ရွိၿပီးသား connection ကို ျပဳျပင္မွာဆို modify ကို ေရြးၿပီး tab key ၂ ခ်က္ ထပ္ႏွိပ္၊ setting ေတြ ျဖည့္။

connection အေျခအေနကို ၾကည့္မွာဆို show ကို ေရြး enter ေခါက္။

ဒီလို တစ္ဆင့္ခ်င္း သြားရပါတယ္။ nmcli နဲ႔ ဆိုင္တဲ့ options ေတြကို အလြတ္က်က္ေနစရာ မလိုအပ္ပါဘူး။ ဒါက nmcli
ကို သံုးၿပီး network ကို configure လုပ္တဲ့ သေဘာတရားပါပဲ။

၂။ network file ထဲကို vi နဲ႔ ဝင္ျပင္တဲ့ နည္းကေတာ့ ရိုးရွင္းပါတယ္။ network file ေတြဟာ /etc/sysconfig/network-
scripts ဆိုတဲ့ directory ေအာက္မွာ တည္ရွိပါတယ္။

connection အသစ္ ၁ ခု ေဆာက္ခ်င္ရင္၊ ေပးခ်င္တဲ့ အမည္ေရွ့မွာ ifcfg- ခံၿပီး touch နဲ႔ တည္ေဆာက္ေပးရပါတယ္။
ifcfg နဲ႔ စတဲ့ file ေတြဟာ network file ေတြလ႔ို နားလည္ရပါမယ္။

ဥပမာ၊ xero ဆိုတဲ့ အမည္န႔ဲ connection အသစ္ ၁ ခု ေဆာက္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

touch ifcfg-xero

ရွိၿပီးသား connection ကို ျပင္ဆင္ခ်င္ရင္ေတာ့ network file (ဥပမာ ifcfg-xero) ကို vi နဲ႔ ဖြင့္ၿပီး ဝင္ေရာက္
ျပင္ဆင္ႏိုင္ပါတယ္။
ဥပမာ၊ ifcfg-eth0 ဆိုတဲ့ connection ကို ျပင္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

vi ifcfg-eth0

အဲဒီအခါ ifcfg-eth0 ထဲမွာ network setting ေတြ၊ DEVICE, TYPE, HWADDR, ONBOOT, BOOTPROTO, IPADDR,
NETMASK, GATEWAY, DNS1, DNS2 စတာေတြရဲ့ တန္ဖိုးေတြကို ထည့္သြင္းေပးရပါမယ္။

ဒါကေတာ့ nmcli မသံုးပဲ network file ေတြကို manually ဖန္တီး၊ vi နဲ႔ ဝင္ ျပဳျပင္တဲ့ သေဘာတရားပါပဲ။

connection အသစ္တည္ေဆာက္တာျဖစ္ေစ ရွိၿပီးသားကို ျပဳျပင္တာျဖစ္ေစ၊ ကိစၥၿပီးသြားရင္ configuration ေတြ


အသက္ဝင္ေစဖိ႔ု network service ကို restart ခ်ေပးဖိ႔ု မေမ့ပါနဲ႔။ network ကို restart ခ်တဲ့ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

systemctl restart network သိ႔မ


ု ဟုတ္ service network restartr

network setting ရဲ့ IPADDR ေနရာမွာ ထည့္ထားတဲ့ IP မွန္မမွန္ သိဖို႔ ping ကို သံုးၿပီး စစ္ေဆးႏိုင္ပါတယ္။

ping x.x.x.x ေပါ့။

network setting ရဲ့ DNS1 ေနရာမွာ ထည့္ထားတဲ့ dns ရဲ့ ip ဝင္မဝင္၊ /etc/resolv.conf ကို ဝင္ေရာက္
ၾကည့္ရွဳႏိုင္ပါတယ္။

cat /etc/resolv.conf ေပါ့။

network ရဲ့ ip ကို domain name နဲ႔ ping လို႔ရေအာင္၊ /etc/hosts ဆိုတဲ့ file မွာ ဝင္ေရာက္ ျပင္ဆင္ႏိုင္ပါတယ္။

ဥပမာ၊ ip က 192.168.1.254 ၊ ဒါကို www.xerocool.com လို႔ ping ရင္လည္း reply ျပန္ေစခ်င္တယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

echo "192.168.1.254 www.xerocool.com" >> /etc/hosts

ဒါဆို ping www.xerocool.com လိ႔ု ping ရင္လည္း reply ျပန္ပါၿပီ။

ၿပီးေတာ့ တစ္ခါ၊ linux machine ရဲ့ hostname ကို ေျပာင္းလဲမယ္ဆိုရင္ hostnamectl set-hostname ဆိုတဲ့ command
ကို အသံုးျပဳရပါတယ္။

ဥပမာ၊ hostname ကို xerocool လိ႔ု ေျပာင္းလဲမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

hostnamectl set-hostname xerocool


hostname ကို /etc/hostname ဆိုတဲ့ file ထဲမွာလည္း vim command line text editor နဲ႔ ဖြင့္ၿပီး ၀င္ေရာက္
ေျပာင္းလဲေပးႏိုင္ပါတယ္။

hostname ကို သိၿပီး သူ႔ရဲ့ ip ကို သိခ်င္ရင္ host ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။ ဥပမာ၊ example.com ရဲ့ ip
ကို သိခ်င္တယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

host example.com

ဆိုရရင္၊ linux မွာ network connection ၁ ခု တည္ေဆာက္ပံုတည္ေဆာက္နည္းနဲ႔ ဝင္ေရာက္ျပင္ဆင္တဲ့


အေျခခံသေဘာတရားေတြကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။

identifying file system and device


linux မွာ file system နဲ႔ device ေတြကို စစ္ေဆးတဲ့အေၾကာင္း ေလ့လာၾကည့္ရေအာင္။

linux မွာ တပ္ဆင္ထားတဲ့ hard disk, cd drive စတဲ့ storage device ေတြကို /dev ေအာက္မွာ ၾကည့္ရွဳႏိုင္ပါတယ္။

ပထမဆံုး ေနရာမွာ ရွိတဲ့ hard drive ကို /dev/sda လိ႔ု သတ္မွတ္ၿပီး ဒုတိယေနရာမွာ ရွိတဲ့ hard drive ကို /dev/sdb လို႔
သတ္မွတ္ပါတယ္။

တစ္ဖန္၊ ပထမဆံုး hard drive (/dev/sda) ရဲ့ primary partition ကို sda1 ၊ ေနာက္ထပ္ partition ရွိေသးရင္ sda2 လို႔
သတ္မွတ္ၿပီး၊ ဒုတိယ hard drive (/dev/sdb) ရဲ့ primary partition ကို sdb1 ၊ ေနာက္ထပ္ partition ရွိေသးရင္ sdb2
လို႔ သတ္မွတ္ပါတယ္။

permission ရဲ့ ေရွ့မွာ file ဆိုရင္ - သေကၤတ၊ directory ဆိုရင္ d သေကၤတ၊ hard drive ဆိုရင္ block device ကို
ကိုယ္စားျပဳတဲ့ b သေကၤတ ပါေလ့ရွိပါတယ္။ ဒါကို ls -l /dev/sda လို႔ ေခၚၾကည့္ႏိုင္ပါတယ္။

file system နဲ႔ storage device ေတြရဲ့ size၊ တပ္ဆင္ထားတဲ့ mount point ေတြကို ၾကည့္ရွဳခ်င္ရင္ df ဆိုတဲ့ command
ကို -h ဆိုတဲ့ option နဲ႔ တြဲသံုးရပါတယ္။ ေအာက္ပါအတိုင္းေပါ့။

df -h

file သို႔မဟုတ္ directory တစ္ခုဟာ storage ပမာဏ ဘယ္ေလာက္ ေနရာယူထားသလဲ သိခ်င္ရင္ du ဆိုတဲ့ command
ကို -h ဆိုတဲ့ option နဲ႔ တြဲသံုးရပါတယ္။
ဥပမာ၊ /root ဆိုတဲ့ directory ဟာ ဘယ္ size ရွိသလဲ ဘယ္ေလာက္ေနရာ ယူထားသလဲ ၾကည့္မယ္ ဆိုပါစို႔။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

du -h /root

မိမိစက္မွာ storage device ဘယ္ႏွစ္ခု ရွိသလဲ၊ size ဘယ္ေလာက္လဲ၊ ဘယ္ေနရာမွာ mount လုပ္ ခ်ိတ္ဆက္ထားသလဲ
သိလိုရင္ lsblk ဆိုတဲ့ command နဲ႔ ေခၚၾကည့္ႏိုင္ပါတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

lsblk

partition တစ္ခုရဲ့ file system သတ္မွတ္ခ်က္ေတြကို ၾကည့္ခ်င္ရင္ file ဆိုတဲ့ command ကို -sL နဲ႔ တြဲသံုးရပါတယ္။

ဥပမာ၊ ပထမဆံုး hard drive (sda) ရဲ့ ပထမဆံုး partition (sda1) ရဲ့ file system ကို ၾကည့္မယ္ ဆိုပါစို႔။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

file -sL /dev/sda1

partition ေတြရဲ့ UUID (universal unique identifier) နဲ႔ file system သတ္မွတ္ခ်က္ေတြကို ၾကည့္ခ်င္ရင္ blkid ဆိုတဲ့
command ကို သံုးရပါတယ္။ terminal မွာ blkid လို႔ ရိုက္ enter ေခါက္ရံုပါပဲ။

storage device ေတြရဲ့ file system ကို စစ္ေဆးလိုတဲ့အခါ fsck ဆိုတဲ့ command ကို -N ဆိုတဲ့ option နဲ႔ တြဲၿပီး
အသံုးျပဳရပါတယ္။

ဥပမာ၊ ပထမဆံုး hard drive (/dev/sda) ရဲ့ ပထမဆံုး partition (/dev/sda1) ကို စစ္ေဆးမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

fsck -N /dev/sda1

cd drive ေတြ partition ေတြကို /mnt/ ေအာက္မွာ directory တစ္ခု သတ္မွတ္ၿပီး ခ်ိတ္ဆက္ေပးထားလို႔ ရပါတယ္။
ဒါကို mount လုပ္တယ္လို႔ ေခၚပါတယ္။

ဥပမာ၊ ပထမဆံုး hard drive (sda) ရဲ့ ပထမဆံုး partition (sda1) ကို /mnt/mydata ဆိုတဲ့ directory မွာ
ခ်ိတ္ဆက္မယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
mount /dev/sda1 /mnt/mydata

ဥပမာ၊ cd drive (/dev/cdrom) ကို /mnt/mycd ဆိုတဲ့ directory မွာ ခ်ိတ္ဆက္မယ္ ဆိုပါစို႔။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

mount /dev/cdrom /mnt/mycd

mount လုပ္ ခ်ိတ္ဆက္ထားတာေတြကို ျပန္ျဖဳတ္မယ္ဆိုရင္ umount ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။

ဥပမာ၊ /mnt/mycd မွာ ခ်ိတ္ဆက္ေပးထားတဲ့ cd drive ကို ျပန္ျဖဳတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

umount /mnt/mycd

ဒီလို umount နဲ႔ ျပန္ျဖဳတ္တာ ေအာင္ျမင္မွဳ ရွိမရွိ ျပဳတ္မျပဳတ္ စစ္ေဆးခ်င္တဲ့အခါ lsof ဆိုတဲ့ command ကို
အသံုးျပဳရပါတယ္။

ဥပမာ၊ /mnt/mycd မွာ ခ်ိတ္ဆက္ေပးထားတဲ့ cd drive ကို umount /mnt/mycd ဆိုၿပီး ျဖဳတ္လိုက္ၿပီ။ ဒါကို ျပဳတ္မျပဳတ္
ျပန္ၾကည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

lsof /mnt/mycd

မိမိစက္မွာ ဘယ္ storage device ေတြ ဘယ္လို တပ္ဆင္ထားသလဲ သိလိုရင္ mount ကို grep နဲ႔ တြဲဖက္
အသံုးျပဳႏိုင္ပါေသးတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

mount | grep "^/dev"

storage device ေတြကို system boot လုပ္တာနဲ႔ မိမိ အလိုရွိတဲ့ directory မွာ auto ခ်ိတ္ဆက္ေအာင္
သတ္မွတ္ေပးထားလို႔ရပါတယ္။ ဒီလို သတ္မွတ္ဖို႔အတြက္ကေတာ့ /etc/fstab ဆိုတဲ့ file ထဲမွာ ဝင္ေရာက္
ျပင္ဆင္ေပးရံုပါပဲ။
ဆိုရရင္၊ linux မွာ file system ေတြကို စစ္ေဆးတဲ့အေၾကာင္းနဲ႔ device ေတြကို mount လုပ္
ခ်ိတ္ဆက္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။

how to set time

linux မွာ time နဲ႔ သက္ဆိုင္တာေတြကို စီမံဖို႔ အတြက္ timedatectl ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။

ေလ့လာၾကည့္ၾကတာေပါ့။

၁။ system ရဲ့ current date နဲ႔ time ကို ၾကည့္ခ်င္ရင္ timedatectl status ကို သံုးပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

timedatectl status

၂။ ေန႔စြဲ နဲ႔ အခ်ိန္တိုက္ခ်င္ရင္ timedatectl ကို set-time နဲ႔ တြဲသံုးရပါတယ္။

ဥပမာ၊ current date ကို 2017-02-24 ရက္အျဖစ္ သတ္မွတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

timedatectl set-time "2017-02-24"

ဥပမာ၊ current time ကို 05:00:00 နာရီ အျဖစ္ သတ္မွတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

timedatectl set-time "05:00:00"

ဥပမာ၊ date နဲ႔ time ကို တစ္ၿပိဳင္တည္း သတ္မွတ္ခ်င္တယ္ ဆုိပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

timedatectl set-time "2017-02-24 05:00:00"

၃။ linux မွာ hardware clock ကို real time clock (rtc) လို႔ ေခၚပါတယ္။ rtc ကို local timezone နဲ႔ set လုပ္ခ်င္ရင္
set-local-rtc နဲ႔ တြဲသံုးရပါတယ္။ set-local-rtc မွာ 1 နဲ႔ 0 ဆိုၿပီး တန္ဖိုး ၂ ခု ရွိပါတယ္။ 1 ဆိုရင္ yes ျဖစ္ၿပီး 0 ဆိုရင္ no
လို႔ သတ္မွတ္ပါတယ္။ rtc ကို local timezone နဲ႔ set လုပ္မယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

timedatectl set-local-time 1
rtc ကို local timezone နဲ႔ unset လုပ္မယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

timedatectl set-local-time 0

၄။ system ရဲ့ time ကို remote NTP Server ရဲ့ time နဲ႔ synchronizing လုပ္ခ်င္ရင္ မိမိစက္ရဲ့ network time protocol
(ntp) ကို on ထားဖို႔ လိုပါတယ္။ timedatectl ကို set-ntp နဲ႔ တြဲသံုးရပါတယ္။

set-ntp မွာ true နဲ႔ false ဆိုၿပီး တန္ဖိုး ၂ ခု ရွိပါတယ္။ true ဆိုရင္ ntp သည္ yes ျဖစ္ၿပီး false ဆိုရင္ ntp သည္ no ပါ။

ntp ကို NTP Server နဲ႔ synchronize လုပ္မယ္ ဆိုပါစို႔။ command syntax က ေအာက္ပါအတိုင္းပါ။

timedatectl set-ntp true

ntp ကို NTP Server နဲ႔ synchronize မလုပ္ဘူး ဆိုပါစို႔။ command syntax က ေအာက္ပါအတိုင္းပါ။

timedatectl set-ntp false

၅။ timezone ကို ၾကည့္ခ်င္ရင္ timedatectl ကို grep နဲ႔ တြဲသံုးရပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

timedatectl | grep Time

timezones ေတြ အားလံုးကို ျပသေပးေစခ်င္ရင္ list-timezones နဲ႔ တြဲသံုးရပါတယ္။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

timedatectl list-timezones

၆။ မိမိရဲ့ location နဲ႔ သက္ဆိုင္တဲ့ timezone ကို ရွာေဖြလိုရင္ list-tinezones ကို grep -o နဲ႔ တြဲသံုးရပါတယ္။ ဥပမာ၊
Asia က Y နဲ႔စတဲ့ timezone ကို ရွာမယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

timedatectl list-timezones | grep -o "Asia/Y.*"

၇။ local timezone ကို set လုပ္ခ်င္ရင္ set-timezone နဲ႔ တြဲသံုးရပါတယ္။ ဥပမာ၊ Asia/Yangon ကို set လုပ္မယ္
ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
timedatectl set-timezone "Asia/Yangon"

၈။ မိမိ အလိုရွိရာ location အတြက္ timezone ကို တစ္ဆင့္ခ်င္း သတ္မွတ္သြားခ်င္ရင္ tzselect ကို အသံုးျပဳႏိုင္ပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

tzselect

၉။ UTC ကို set လုပ္ဖို႔ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

timedatectl set-timezone UTC

linux ေပၚမွာ date and time နဲ႔ သက္ဆိုင္တာေတြကို စီမံတဲ့ အပိုင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။

linking, hard link, soft link


windows system မွာဆိုရင္ file ေတြ folder ေတြကို shortcut ထုတ္ထားႏိုင္တာ သိမယ္ ထင္ပါတယ္။

linux မွာလည္း အလားတူပဲ၊ file နဲ႔ directory ေတြကို shortcut ပံုစံမ်ိဳး ထုတ္ထားလို႔ရၿပီး၊ ဒါကို linking လုပ္တယ္လို႔
သံုးႏွဳန္းပါတယ္။

linking မွာ -

၁။ hard link

၂။ soft link

လို႔ ၂ မ်ိဳး ရွိပါတယ္။

၁။ hard link : file ေတြကို link ထုတ္တာကို hard link လို႔ ေခၚပါတယ္။ ln ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။

ဥပမာ၊ current user က tom လို႔ ထားပါေတာ့။ /etc/named.conf ဆိုတဲ့ file ကို tom ရဲ့ Desktop ဆီ shortcut1 ဆိုတဲ့
အမည္န႔ဲ link ထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။

ln /etc/named.conf /home/tom/desktop/shortcut1

ဒီေနရာမွာ တစ္ခု သိထားရမွာက၊ link ထုတ္ေတာ့မယ္ဆိုရင္ absolute path ကို အသံုးျပဳေပးရမယ္ဆိုတာပါပဲ။


ထူးျခားခ်က္အေနနဲ႔ /etc/ ေအာက္က named.conf ကို ဖ်က္လိုက္ရင္ေတာင္ /home/tom/Desktop ေအာက္က
shortcut1 မွာ content ေတြ မပ်က္စီးပဲ က်န္ခဲ့ပါလိမ့္မယ္။ ဒါက hard link ရဲ့ ထူးျခားခ်က္ေပါ့။

hard link ကို၊ file ေတြ link ထုတ္ဖို႔ အတြက္ပဲ အသံုးျပဳလို႔ရပါတယ္။

၂။ soft link : directory ေတြကို link ထုတ္တာကို soft link လို႔ ေခၚပါတယ္။ soft link ထုတ္ဖို႔ အတြက္ ln ကို -s ဆိုတဲ့
option နဲ႔ တြဲဖက္ အသံုးျပဳေပးရံုပါပဲ။

ဥပမာ၊ current user က tom လိ႔ု ထားပါေတာ့။ /var/ ေအာက္က log ဆိုတဲ့ directory ကို tom ရဲ့ Desktop ဆီ
shortcutoflog ဆိုတဲ့ အမည္န႔ဲ link ထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။

ln -s /var/log /home/tom/desktop/shortcutoflog

soft link မွာေတာ့ မူလ directory ကို ဖ်က္လိုက္ရင္ link ထုတ္ထားတဲ့ ditectory ပါ ပ်က္ပါတယ္။ ဒါက soft link ရဲ့
အားနည္းခ်က္ေပါ့။

hard link ျဖစ္ေစ soft link ျဖစ္ေစ၊ တူညီတဲ့ file system တစ္ခုတည္း ေပၚမွာပဲ link ထုတ္လို႔ရပါတယ္။ link ထုတ္မယ့္
source နဲ႔ destination တိ႔ဟ
ု ာ တူညီတဲ့ file system တစ္ခုတည္း ေပၚမွာ ရွိေနဖို႔ လိုပါတယ္။

ဆိုရရင္၊ linux system ေပၚမွာ file နဲ႔ directory ေတြကို linking လုပ္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။
finding in linux
windows operating system မွာ file ေတြ folder ေတြကို search နဲ႔ ရွာေဖြႏိုင္တာ သိလိမ့္မယ္လို႔ ယူဆပါတယ္။

linux မွာလည္း အလားတူ find ဆိုတဲ့ command ကို အသံုးျပဳၿပီး ရွာေဖြႏိုင္ပါတယ္။ ဒီလို ရွာေဖြရာမွာ -

၁။ fining with name

၂။ finding based on type

၃။ finding based on their permissions

၄။ finding based on owner and group

၅။ finding based on date and time

၆။ finding based on size

ဆိုၿပီး ၆ ပိုင္း ရွိပါတယ္။

ရွဳပ္ေထြးသေယာင္ ရွိေပမယ့္ တကယ္ေတာ့ ရိုးရွင္းပါတယ္။ ေလ့လာၾကည့္ရေအာင္။

၁။ finding with name

file တစ္ခုကို ရွာဖို႔အတြက္ -name ဆိုတဲ့ option ကို တြဲသံုးရပါတယ္။

ဥပမာ၊ sshd_config ဆိုတဲ့ file ကို root directory / ကေန စရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က
ေအာက္ပါအတိုင္းပါ။

find / -name sshd_config

file ေတြကို ရွာေဖြရာမွာ အမည္ အတိအက်မသိရင္ wild card * ေတြန႔ဲ တြဲဖက္ၿပီး ရွာေဖြႏိုင္ပါတယ္။

ဥပမာ၊ .txt နဲ႔ ဆံုးတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find / -name "*.txt"


ဥပမာ၊ /etc/ ေအာက္မွာ passwd ဆိုတဲ့ file ကို ရွာမယ္။ ဒါေပမယ့္ file ကို အကုန္ မမွတ္မိဘူး။ pass ပဲ မွတ္မိတယ္
ဆိုပါစို႔။ ေအာက္ပါအတိုင္း wild card * နဲ႔ တြဲဖက္ၿပီး ရွာေဖြႏိုင္ပါတယ္။

find /etc -name "*pass*"

file ေတြကို ရွာေဖြရာမွာ capital letter, small letter မခြဲျခားပဲ ရွာေဖြမယ္ဆို -i ဆိုတဲ့ option ကို အသံုးျပဳရပါတယ္။

ဥပမာ၊ /var/ ေအာက္မွာ messages ဆိုတဲ့ အမည္ပါတဲ့ file ေတြကို ရွာခ်င္တယ္။ စာလံုး အႀကီးအေသး မခြဲျခားဘူး။
အမည္ကိုလည္း တိတိက်က် မသိဘူးဆိုပါစို႔။ -i နဲ႔ wild card * ကို တြဲဖက္ၿပီး ေအာက္ပါအတိုင္း ရွာေဖြႏိုင္ပါတယ္။

find /var -i -name *messages*

file အမည္ေတြကို အေျချပဳၿပီး find နဲ႔ ရွာေဖြတဲ့ နည္းလမ္းေတြကေတာ့ ဒီေလာက္ပါပဲ။

၂။ finding based on type

type ကို အေျချပဳၿပီး ရွာေဖြတဲ့အခါ -type option ကို အမ်ိဳးအစားကိုကိုယ္စားျပဳတဲ့ ထပ္တိုး option ၅ မ်ိဳးနဲ႔ တြဲဖက္
အသံုးျပဳရပါတယ္။

-type နဲ႔ တြဲဖက္ အသံုးျပဳရမယ့္ ထပ္တိုး option ေတြကေတာ့ -

၁။ file ကို ကိုယ္စားျပဳတဲ့ f

၂။ directory ကို ကိုယ္စားျပဳတဲ့ d

၃။ soft link ကို ကိုယ္စားျပဳတဲ့ l

၄။ hard link ကို ကိုယ္စားျပဳတဲ့ f –links

၅။ block device ကို ကိုယ္စားျပဳတဲ့ b

တို႔ပဲ ျဖစ္ပါတယ္။

ဥပမာ၊ / ေအာက္ကေန စၿပီး .php နဲ႔ ဆံုးတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

find / -name -type f "*.php"


ဥပမာ၊ /etc ေအာက္မွာ sysconfig ဆိုတဲ့ directory ကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

find /etc -name -type d sysconfig

ဥပမာ၊ / ေအာက္ကေန စၿပီး empty ျဖစ္ေနတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

find -type f -empty

ဥပမာ၊ / ေအာက္ကေန စၿပီး empty ျဖစ္ေနတဲ့ directory ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find -type d -empty

ဥပမာ၊ / ေအာက္ကေနစၿပီး soft link ခ်ိတ္ထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find / -type l

ဥပမာ၊ / ေအာက္ကေနစၿပီး hard link ၁ ခုထက္ ပိုခ်ိတ္ထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find / -type f -links +1

ဥပမာ၊ /dev ေအာက္က storage block device ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

find /dev -type b

type ကို အေျချပဳၿပီး find နဲ႔ ရွာေဖြတဲ့ နည္းလမ္းေတြကေေတာ့ ဒီေလာက္ပါပဲ။


၃။ finding based on their permission

ဒါကေတာ့ ရွင္းပါတယ္ မိမိ ရွာလိုတဲ့ file ကို permission ေပၚ မူတည္ၿပီး ရွာေဖြတာပါ။ -perm ဆိုတဲ့ option ကို
အသံုးျပဳရပါတယ္။

ဥပမာ၊ / ေအာက္ကေန စၿပီး permission 750 ေပးထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိင
ု ္းပါ။

find / -type f -perm 750

ဥပမာ၊ / ေအာက္ကေန စၿပီး permission 750 ေပးထားတဲ့ directory ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find / -type d -perm 750

permission ေပၚမူတည္ၿပီး ရွာေဖြရာမွာ ေဖၚျပထားတဲ့ permission နဲ႔ ဆန္႔က်င္ဘက္ file ကို ရွာခ်င္ရင္ ! ဆိုတဲ့ ထပ္တိုး
option ေလးကို ထည့္ေပးရပါတယ္။

ဥပမာ၊ / ေအာက္ကေန စၿပီး permission 750 မဟုတ္တဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find / -type f -perm ! 750

ဥပမာ၊ / ေအာက္ကေန စၿပီး permission 750 မဟုတ္တဲ့ directory ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find / -type d -perm ! 750

ဥပမာ၊ user အတြက္ special permission ေပးထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find / -perm /u=s


ဥပမာ၊ group အတြက္ special permission ေပးထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find / -perm /g=s

ဥပမာ၊ other အတြက္ special permission ေပးထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find / -perm /o=t

ဥပမာ၊ user အတြက္ read only permission ေပးထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find / -perm /u=r

ဥပမာ၊ group အတြက္ read only permission ေပးထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find / -perm /g=r

permission ကို အေျချပဳၿပီး find နဲ႔ ရွာေဖြတဲ့ နည္းလမ္းေတြကေေတာ့ ဒီေလာက္ပါပဲ။

၄။ finding based on owner and group

ဒါကေတာ့ user ေတြ group ေတြ user id (uid) ေတြ group id (gid) ေတြေပၚ မူတည္ၿပီး ရွာေဖြတဲ့ သေဘာပါ။

ဥပမာ၊ student ဆိုတဲ့ user ပိုင္တဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

find -user student


ဥပမာ၊ user id 1000 က ပိုင္ဆိုင္တဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

find / -uid 1000

ဥပမာ၊ hacking ဆိုတဲ့ group ထဲမွာ ပါတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

find -group hacking

ဥပမာ၊ group id 1000 က ပိုင္ဆိုင္တဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

find / -gid 1000

ဥပမာ၊ student ဆိုတဲ့ user နဲ႔ hacking ဆိုတဲ့ group က ပိုင္တဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find -user student -group hacking

user နဲ႔ group ေပၚ မူတည္ၿပီး ရွာေဖြတဲ့ နည္းလမ္းေတြကေေတာ့ ဒီေလာက္ပါပဲ။

၅။ finding based on date and time

ဒါကေတာ့ ရက္စြဲန႔ဲ အခ်ိန္ေပၚ မူတည္ၿပီး ရွာေဖြတဲ့ နည္းလမ္းေပါ့။

ဥပမာ၊ ၿပီးခဲ့တဲ့ ရက္ ၅၀ က modify လုပ္ထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ -mtime ဆိုတဲ့ option ကို သံုးရပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find -mtime 50

ဥပမာ၊ ၿပီးခဲ့တဲ့ ရက္ ၅၀ က access လုပ္ခံထားရတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ -atime ဆိုတဲ့ option ကို သံုးရပါတယ္။
command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
find -atime 50

ဥပမာ၊ ၿပီးခဲ့တဲ့ ရက္ ၅၀ နဲ႔ ၁၀၀ ၾကားက modify လုပ္ထားတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ -mtime ဆိုတဲ့ option ကိုပဲ
သံုးရပါတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find -mtine +50 -mtime -100

ဥပမာ၊ ၿပီးခဲ့တဲ့ ၁ နာရီက modify လုပ္ခံထားရတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ -mmin ဆိုတဲ့ option ကို သံုးရပါတယ္။ m
က modify .. min က minute ေပါ့။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find -mmin -60

ဥပမာ၊ ၿပီးခဲ့တဲ့ ၁ နာရီက access လုပ္ခံထားရတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ -amin ဆိုတဲ့ option ကို သံုးရပါတယ္။ a
က access .. min က minute ေပါ့။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find -amin -60

ဥပမာ၊ ၿပီးခဲ့တဲ့ ၁ နာရီက change လုပ္ခံထားရတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ -cmin ဆိုတဲ့ option ကို သံုးရပါတယ္။ c
က change .. min က minute ေပါ့။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find -cmin -60

date and time ကို အေျချပဳၿပီး ရွာေဖြတဲ့ နည္းလမ္းေတြကေေတာ့ ဒီေလာက္ပါပဲ။

၆။ finding based on size

size ေပၚ မူတည္ၿပီး ရွာေဖြတဲ့အခါ size သတ္မွတ္ခ်က္ ၃ မ်ိဳးကို ထည့္သြင္းေပးရပါတယ္။ size သတ္မွတ္ခ်က္ ၃
မ်ိဳးကေတာ့ -

၁။ K (kilobyte)

၂။ M (megabyte)

၃။ G (gigabyte)
တို႔ပါပဲ။

ဥပမာ၊ 50 migabyte ရွိတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find / -size 50M

ဥပမာ၊ 50 migabyte နဲ႔ 100 megabyte ၾကား ရွိတဲ့ file ေတြကို ရွာမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find / -size +50M -size -100M

size ေပၚ မူတည္ၿပီး find နဲ႔ ရွာေဖြတဲ့ နည္းလမ္းေတြကေေတာ့ ဒီေလာက္ပါပဲ။

find အသံုးျပဳၿပီး ရွာေဖြတဲ့ နည္းလမ္းေတြကို တင္ဆက္ၿပီးပါၿပီ။ ဒီ ရွာေဖြနည္းေတြအျပင္ file ေတြကို ရွာေဖြၿပီး ရလာတဲ့
file ေတြကို ဖ်က္ပစ္ႏိုင္ပါေသးတယ္။ -exec rm {} \; ေလးကို ထည့္သံုးေပးရံုပါပဲ။

ဥပမာ၊ /home ဆိုတဲ့ directory ေအာက္က .mp3 နဲ႔ ဆံုးတဲ့ 10 megabyte ေက်ာ္တဲ့ file ေတြကို ရွာၿပီး တန္းဖ်က္မယ္
ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

find /home -type -f -name -size +10M "*.mp3" -exec rm {} \;

find နဲ႔ သက္ဆိုင္တဲ့အေၾကာင္းေတြကေတာ့ ဒီေလာက္ပါပဲ။ ျဖည္းျဖည္းခ်င္း မွတ္သားၿပီး ဖတ္သြားရင္ နားလည္ရ


လြယ္ကူသြားမွာပါ။

အားလံုးပဲ အဆင္ေျပပါေစ။
controlling jobs

linux ရဲ့ terminal ထဲမွာ command တစ္ခုကို run လိုက္တာကို job သိ႔မ
ု ဟုတ္ process လို႔ ေခၚပါတယ္။ job တစ္ခုမွာ
job id, process id, state နဲ႔ job ဆိုၿပီး အပိုင္း ၄ ခု ရွိပါတယ္။

ဥပမာ၊ sleep 1500 လိ႔ု ရိုက္ၿပီး shell ကို sleep mode ပို႔လိုက္တယ္ ဆိုပါစို႔။ ဒါဆို sleep 1500 သည္ job တစ္ခု
ျဖစ္သြားပါၿပီ။

ဒီ job .. run ေနစဥ္မွာ shell ေပၚမွာ တျခား command run လိ႔မ


ု ရပါဘူး။

ဒီ job ကို kill ခ်င္ရင္ keyboard ေပၚက ctrl+c ကို ႏွိပ္ၿပီး kill ႏိုင္ပါတယ္။

ေနာက္တစ္ခုက၊ ဒီ job ကို မရွင္းလင္းပဲ sleep 1500 ဆိုတဲ့ job ကို keyboard ေပၚက ctrl+z ကို ႏွိပ္၊ stop လုပ္ၿပီး
background ကို ပို႔ထားလိ႔ရ
ု ပါတယ္။ ဒါဆို ဒီ job ရဲ့ state ဟာ stop ျဖစ္ၿပီး background ကို ေရာက္သြားပါလိမ့္မယ္။

ctrl+z ႏွိပ္လိုက္လို႔ background ကို ေရာက္ၿပီး stop ျဖစ္ေနတဲ့ job တစ္ခက


ု ို background မွာ run ေနေစခ်င္ရင္ bg
%jobID ဆိုတဲ့ format ကို သံုးၿပီး run ႏိုင္ပါတယ္။

ဥပမာ၊ background မွာ ရွိၿပီး stop ျဖစ္ေနတဲ့ sleep 1500 ဆိုတဲ့ job ရဲ့ id က 1 ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax က ေအာက္ပါအတိုင္းပါ။

bg %1

ctrl+z ႏွိပ္လိုက္လို႔ background ကို ေရာက္ၿပီး stop ျဖစ္ေနတဲ့ job တစ္ခုကို foreground ဆီ ျပန္ေခၚၿပီး run
ေနေစခ်င္ရင္ fg %jobID ဆိုတဲ့ format ကို သံုးၿပီး run ႏိုင္ပါတယ္။

ဥပမာ၊ sleep 1500 ဆိုတဲ့ job ရဲ့ id က 1 ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က ေအာက္ပါအတိုင္းပါ။

fg %1

command တစ္ခုကို စစ run ခ်င္းမွာပဲ background ကို ပို႔ၿပီး run ေနေစခ်င္ရင္ & ဆိုတဲ့ သေကၤတကို command
ေနာက္မွာ ထည့္ေပးရံုနဲ႔ အဆင္ေျပပါတယ္။

ဥပမာ၊ sleep 1500 ဆိုတဲ့ conmand ကို စစ run ခ်င္း background မွာ သြား run ေစခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္
command syntax က ေအာက္ပါအတိုင္းပါ။
sleep 1500 &

ဒီလို ctrl+z ႏွိပ္လိုက္လို႔ background ကို ေရာက္သြားတဲ့ job ေတြရဲ့ အေျခအေနကို jobs ဆိုတဲ့ command နဲ႔
ေခၚၾကည့္ႏိုင္ပါတယ္။ jobs -l လို႔ ရိုက္ enter ေခါက္လိုက္ရင္ job id, process id, run ေနလား stop ျဖစ္ေနလားဆိုတဲ့
state, job အမ်ိဳးအစား စတာေတြကို ေတြ႔ျမင္ရပါလိမ့္မယ္။

ဥပမာ၊ background မွာ ရွိေနတဲ့ job အားလံုးရဲ့ သတ္မွတ္ခ်က္ေတြကို ၾကည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

jobs -l

ဥပမာ၊ background မွာ run ေနတဲ့ job ေတြရဲ့ အေျခအေန သတ္မွတ္ခ်က္ေတြကို သီးသန္႔ ၾကည့္မယ္ ဆိုပါစို႔။
မသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

jobs -r

ဥပမာ၊ background မွာ stop ျဖစ္ေနတဲ့ job ေတြရဲ့ အေျခအေန သတ္မွတ္ခ်က္ေတြကို သီးသန္႔ ၾကည့္မယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

jobs -s

စာလည္း နည္းနည္း ရွည္သြားပါၿပီ။ terminal ေပၚမွာ command နဲ႔ သက္ဆိုင္တဲ့ job ေတြကို
ကိုင္တြယ္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။
controlling processes

ဒီတစ္ခါကေတာ့ linux system ေပၚမွာ run ေနတဲ့ process ေတြကို ကိုင္တြယ္မယ့္ အေၾကာင္းပါ။

linux ေပၚမွာ run ေနတဲ့ process ေတြကို ၄င္းတို႔ရဲ့ process id ကေနတစ္ဆင့္ ထိန္းခ်ဳပ္ရပါတယ္။

run ေနတဲ့ process ေတြန႔ဲ process id ေတြကို process -aux ဆိုတဲ့ command နဲ႔ ေခၚၾကည့္ႏိုင္ပါတယ္။

ps -aux လိ႔ု ရိုက္ enter ေခါက္လိုက္ရင္ process ေတြန႔ဲ သူတို႔ရဲ့ id ေတြ က်လာပါလိမ့္မယ္။

process တစ္ခုကို ထိန္းခ်ဳပ္ဖို႔ အတြက္ -

၁။ kill

၂။ killall

၃။ pkill

၄။ pgrep

၅။ pstree

စတဲ့ command ေတြကို အသံုးျပဳရပါတယ္။

process ေတြကို ထိန္းခ်ဳပ္ရာမွာ အေရးပါတဲ့ options ေတြန႔ဲ သူတို႔ရဲ့ code no. ေတြကေတာ့ -

(9) KILL

(15) TERM

(18) CONT

(19) STOP

တို႔ပါပဲ။

ဥပမာ၊ process id 1500 ဆိုတဲ့ process တစ္ခုကို KILL မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

kill -SIGKILL 1500 သိ႔မ


ု ဟုတ္ kill -9 1500

ဥပမာ၊ process id 1500 ဆိုတဲ့ process တစ္ခုကို TERMINATE လုပ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။
kill -SIGTERM 1500 သို႔မဟုတ္ kill -15 1500

ဥပမာ၊ process id 1500 ဆိုတဲ့ process တစ္ခုကို CONTINUE နဲ႔ ဆက္ run မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

kill -SIGCONT 1500 သိ႔မ


ု ဟုတ္ kill -18 1500

ဥပမာ၊ process id 1500 ဆိုတဲ့ process တစ္ခုကို STOP လုပ္ ရပ္ထားမယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

kill -SIGSTOP 1500 သို႔မဟုတ္ kill -19 1500

ဒါ့အျပင္ လက္ရွိ account မွာ run ေနတဲ့ process ေတြသာမက မိမိစက္ကို ssh ကေန တစ္ဆင့္ျဖစ္ေစ ဝင္ေရာက္
အသံုးျပဳေနတဲ့ user ေတြရဲ့ process ေတြကိုပါ ထိန္းခ်ဳပ္ႏိုင္ပါေသးတယ္။

မိမိ စက္ကို ဘယ္သူေတြ login ဝင္ေနသလဲဆိုတာကိုေတာ့ w -f ဆိုတဲ့ command နဲ႔ ၾကည့္ရွဳႏိုင္ပါတယ္။

ဥပမာ၊ w -f နဲ႔ ၾကည့္လိုက္တဲ့အခါ tom ဆိတ


ု ဲ့ user ဟာ မိမိ စက္ကို login ဝင္ထားတယ္။ tom ရဲ့ process ေတြကို
ၾကည့္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

pgrep -l -u tom

မိမိ စက္ကို login ဝင္ေနတဲ့ user ရဲ့ process ေတြကို pgrep အျပင္ pstree ဆိုတဲ့ command သံုးၿပီးလည္း
ၾကည့္ႏိုင္ပါေသးတယ္။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

pstree -p tom

tom ဆိုတဲ့ user ဆီမွာ run ေနတဲ့ process id 528 ကို လွမ္း kill မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

pkill -u tom -SIGKILL 528


kill နဲ႔ သက္ဆိုင္တဲ့ တစ္ျခား options ေတြကို ဆက္လက္ေလ့လာလိုရင္ kill -l လို႔ ရိုက္ enter ေခါက္ၿပီး
ေလ့လာႏိုင္ပါတယ္။

linux system ေပၚမွာ process ေတြကို ထိန္းခ်ဳပ္တဲ့ အပိုင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။

monitoring the system with top

windows မွာဆိုရင္ system ကို monitoring လုပ္ဖို႔ task manager ပါတာ သိၾကမွာပါ။ အလားတူပါပဲ linux မွာ top
ဆိုတဲ့ command ကို အသံုးျပဳၿပီး system, cpu usage, memory အေျခအေန နဲ႔ process ေတြကို live
ေစာင့္ၾကည့္ႏိုင္ပါတယ္။

စလိုက္ရေအာင္ !

system နဲ႔ process အားလံုးကို ၾကည့္ခ်င္ရင္ terminal မွာ top လိ႔ု ရိုက္ enter ေခါက္ရံုပါပဲ။ command syntax
ကေတာ့ ေအာက္ပါ အတိုင္းပါ။

top

process id ေတြကိုပဲ သီးသန္႔ ၾကည့္မယ္ဆိုရင္ -p ဆိုတဲ့ option နဲ႔ တြဲသံုးရပါတယ္။

top -p

user တစ္ဦးရဲ့ process ေတြကိုပဲ ၾကည့္ခ်င္တဲ့ အခါ -u ဆိုတဲ့ option နဲ႔ တြဲသံုးရပါတယ္။

ဥပမာ၊ tom ဆိုတဲ့ user ရဲ့ process ေတြကိုပဲ သီးသန္႔ ၾကည့္မယ္ ဆိုပါစို႔။ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

top -u tom

idle ျဖစ္ေနတဲ့ process ေတြကို မၾကည့္ဘူး active ျဖစ္ေနတဲ့ process ေတြကိုပဲ ၾကည့္မယ္ဆိုရင္ -i ဆိုတဲ့ option ကို
တြဲသံုးရပါတယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
top -i

top နဲ႔ ေဖၚျပထားတဲ့ result ေတြကို သိမ္းထားခ်င္ရင္ keyboard ေပၚက shift+w ကို တြဲႏွိပ္ေပးရပါတယ္။ ဒီအခါ result
ေတြကို /etc/ ေအာက္မွာ .toprc ဆိုတဲ့ file အျဖစ္ save လုပ္သြားပါလိမ့္မယ္။

top နဲ႔ ၾကည္ရ


့ ွဳေနရာကေန ထြက္ခ်င္ရင္ေတာ့ keyboard ေပၚက q ကို ႏွိပ္ၿပီး ျပန္ထြက္ႏိုင္ပါတယ္။

top ကို အသံုးျပဳၿပီး system နဲ႔ process ေတြကို monitoring လုပ္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပပါေစ။

grep ျဖင့္ စာသားမ်ားကို ဆြဲထုတ္ျခင္း


log file ေတြ text file ေတြထဲက စာသားေတြကို ဆြဲထုတ္ခ်င္တဲ့အခါ grep command ကို အသံုးျပဳရပါတယ္။

အရင္ဆံုး linux machine ကို root account နဲ႔ login ဝင္ပါ။

current user's home directory ေအာက္မွာ touch file1 နဲ႔ file ေလး ၁ ခု ေဆာက္လိုက္ပါ။

vi file1 command နဲ႔ file1 ကို vim text editor နဲ႔ ဖြင့္ၿပီး ေအာက္က စာေၾကာင္းေလးေတြကို ရိုက္ထည့္ပါ။

sky
fly
cat
table
blue

ကဲ ! ခုဆို grep ကို စမ္းသပ္ဖို႔ အသင့္ျဖစ္ေနပါၿပီ။

၁။ စာလံုး အတိအက်ေပၚ မူတည္ၿပီး စာေၾကာင္းကို ဆြဲထုတ္ခ်င္တဲ့အခါ grep ေရွ့မွာ စာလံုးအတိအက်ကို expression


အေနနဲ႔ ထည့္ေပးရပါတယ္။ ဥပမာ၊ file1 ထဲက cat ဆိုတဲ့ စာလံုးကို ဆြဲထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

grep "cat" file1


၂။ ထိပ္ဆံုး စာလံုးေပၚ မူတည္ၿပီး ဆြဲထုတ္လိုတဲ့အခါ ^ သေကၤတကို အသံုးျပဳရပါတယ္။ ဥပမာ၊ c နဲ႔ စတဲ့ စာေၾကာင္းကို
ဆြဲထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါမတိုင္းပါ။

grep "^c" file1


၃။ ေနာက္ဆံုး စာလံုးေပၚ မူတည္ၿပီး ဆြဲထုတ္လိုတဲ့အခါ $ သေကၤတကို အသံုးျပဳရပါတယ္။ ဥပမာ၊ t နဲ႔ ဆံုးတဲ့
စာေၾကာင္းကို ဆြဲထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါမတိုင္းပါ။

grep "t$" file1

၄။ expression ထဲမွာ . * စတဲ့ wild card ေတြကို အသံုးျပဳၿပီး စာေၾကာင္းေတြကို ဆြဲထုတ္ႏိုင္ပါတယ္။ ဥပမာ၊ table ကို
wild card သံုးၿပီး ဆြဲထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

grep "t.*e" file1

၅။ အစ စာလံုးနဲ႔ အဆံုး စာလံုး ၾကားက စာလံုးေတြကို ခန္႔မွန္းၿပီး ဆြဲထုတ္လိုတဲ့အခါ [ ] ကို အသံုးျပဳရပါတယ္။ ဥပမာ၊
table ဆိုတဲ့ စာလံုးမွာ t နဲ႔ e ၾကားက စာလံုးေတြကို ခန္႔မွန္းၿပီး ဆြဲထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

grep "t[lba]e" file1

၆။ အစ စာလံုးနဲ႔ အဆံုး စာလံုး ၾကားက စာလံုး အေရအတြက္ေပၚ မူတည္ၿပီး ဆြဲထုတ္ခ်င္တဲ့အခါ .\{ \} ကို
အသံုးျပဳရပါတယ္။ ဥပမာ၊ table ဆိုတဲ့ စာလံုးမွာ t နဲ႔ e ၾကားက အေရအတြက္ေပၚ မူတည္ၿပီး ဆြဲထုတ္မယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

grep "t.\{3\}e" file1

၇။ ဆြဲထုတ္လိုက္တဲ့ စာသားနဲ႔ သူ႔ေအာက္က ၂ ေၾကာင္းကိုပါ ၾကည့္ခ်င္ရင္ -A2 ဆိုတဲ့ option ကို သံုးရပါတယ္။ ဥပမာ၊
cat နဲ႔ သူ႔ေအာက္က ၂ ေၾကာင္းကိုပါ ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။
grep -A2 "cat" file1

၈။ ဆြဲထုတ္လိုက္တဲ့ စာသားနဲ႔ သူ႔အေပၚက ၂ ေၾကာင္းကိုပါ ၾကည့္ခ်င္ရင္ -B2 ဆိုတဲ့ option ကို သံုးရပါတယ္။ ဥပမာ၊ cat
နဲ႔ သူ႔အေပၚက ၂ ေၾကာင္းကိုပါ ၾကည့္ခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

grep -B2 "cat" file1

၉။ စာလံုးကို case-sensitive မျဖစ္ပဲ ဆြဲထုတ္လိုတဲ့အခါ -i ဆိုတဲ့ option ကို အသံုးျပဳရပါတယ္။ ဥပမာ၊ cat ကို case-
sensitive မျဖစ္ေစပဲ ဆြဲထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
grep -i "CAT" file1

၁၀။ ဆြဲထုတ္လိုတဲ့ စာသားကို current directory ေအာက္မွာ ရွိတဲ့file တိုင္းကေန ရွာေဖြ ဆြဲထုတ္လိုတဲ့အခါ -r ဆိုတဲ့
option ကို အသံုးျပဳရပါတယ္။ ဥပမာ၊ cat ကို file တိုင္းကေန ရွာေဖြ ဆြဲထုတ္ေပးေစခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဴရမယ့္
command syntax ကေတာ့ ေအာက္ပါအတိုင္းကါ။

grep -r "cat"

၁၁။ ေဖၚျပလိုက္တဲ့ expression မပါတဲ့ စာေၾကာင္းေတြကိုခ်ည္း ဆြဲထုတ္လိုတဲ့အခါ -v ဆိုတဲ့ option ကို


အသံုးျပဳရပါတယ္။ ဥပမာ၊ cat မပါတဲ့ စာေၾကာင္းေတြကိုခ်ည္း ဆြဲထူတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

grep -v "cat" file1

၁၂။ expression ကို ၁ ခုထက္ ပိုေဖၚျပၿပီး စာေၾကာင္းေတြကို ဆြဲထုတ္လိုတဲ့အခါ -e ဆိုတဲ့ option ခံေပးရပါတယ္။
ဥပမာ၊ cat နဲ႔ table ဆိုတဲ့ စာေၾကာင္း ၂ ခုကို တစ္ၿပိဳင္နက္ ဆြဲထုတ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

grep -e "cat" -e "table" file1

ကဲ ! လြယ္ပါတယ္ေနာ္။

grep ကို အသံုးျပဳၿပီး စာသားေတြကို ဆြဲထုတ္တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပၾကပါေစ။
at ကို အသံုးျပဳ၍ job တစ္ခုကို အခ်ိန္ဇယားျဖင့္ run ေစျခင္း
linux ေပၚမွာ job တစ္ခုကို အခ်ိန္ဇယားေလး ဆြဲၿပီး run ခိုင္းမယ္။ ေနာက္ ၁ နာရီ ေနရင္၊ ေနာက္ ၅ မိနစ္ ေနရင္၊ ေနာက္
၁ ရက္ ေနရင္၊ စသျဖင့္ေပါ့။

ဒီလို run ေစခ်င္တဲ့အခါ at ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။ package name က at ျဖစ္ၿပီး သူ႔ရဲ့ service name
က atd ပါ။

at ကို အသံုးျပဳၿပီး ေန႔စဥ္ လစဥ္ ပံုမွန္ေတာ့ run ခိုင္းလို႔ မရပါဘူး။ one time ပဲ ရပါတယ္။

၁။ ဥပမာ၊ job တစ္ခု ကို ေနာက္ ၅ မိနစ္ ေနရင္ run ေစခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax က
ေအာက္ပါအတိုင္းပါ။

at now+5min လိ႔ု ရိုက္ enter ေခါက္ပါ။ ဒီအခါ at > ဆို ေပၚလာၿပီး at ရဲ့ shell ထဲကို ေရာက္ရွိသြားပါလိမ့္မယ္။
အဲဒီ shell ထဲမွာ ကိုယ္ run ေစခ်င္တဲ့ job ကို ရိုက္ထည့္ ေပးရမွာပါ။
at > echo "hello world" >> ~/file1
ခုလို ရိုက္ထည့္ၿပီးလို႔ရွိရင္ ctrl + d ကို ႏွိပ္ၿပီး ျပန္ထြက္ရပါမယ္။

ေနာက္ ၅ မိနစ္ ေနတဲ့အခါ current user's home directory ~/ ေအာက္က file1 ထဲမွာ hello world ဆိုတဲ့
စာသားေလး ေရာက္ေနပါလိမ့္မယ္။

ဒါကေတာ့ at ကို အသံုးျပဳၿပီး job တစ္ခုကို အခ်ိန္ဇယားနဲ႔ run ခိုင္းတဲ့ သေဘာတရားပါပဲ။

၂။ ဒီလို ခိုင္းေစရာမွာ ဒီ job အတြက္ cpu နဲ႔ ram ပမာဏကို priority သတ္မွတ္ေပးႏိုင္ပါေသးတယ္။ prioriry a ကေန z
အထိ ရွိၿပီး ဘာမွ မသတ္မွတ္ရင္ default priority a နဲ႔ run ပါတယ္။

ဥပမာ၊ ေစာေစာက job ကို priority b နဲ႔ run ေစခ်င္တယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

at -q b now+5min

၃။ ဒီလို အခ်ိန္ဇယားနဲ႔ run ခိုင္းထားတဲ့ job ေတြ ရွိမရွိ ၾကည့္ခ်င္ရင္ atq ဆိုတဲ့ command ကို သံုးရပါတယ္။ at -l
လို႔လည္း သံုးႏိုင္ပါတယ္။ ဒီအခါ schedule ဆြဲထားတဲ့ job ေတြကို id နံပါတ္န႔ဲ ေဖၚျပေပးပါလိမ့္မယ္။

at -l

၄။ job တစ္ခု ဘယ္လို run မလဲ သိခ်င္ရင္ေတာ့ at ေရွ့မွာ -c နဲ႔ task id ကိုထည့္ enter ေခါက္ၿပီး ၾကည့္ႏိုင္ပါတယ္။

ဥပမာ၊ atq နဲ႔ ၾကည့္လိုက္လို႔ job id 10 ကို ေတြ႔တယ္။ ဒီ job id 10 သည္ ဘယ္လို run မလဲ ၾကည့္မယ္ ဆိုပါစို႔။
အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။
at -c 10

၅။ job တစ္ခု ကို ျပန္ၿပီး cancel လုပ္ခ်င္တဲ့အခါ atrm ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။ ဥပမာ၊ task id 10 ကို
cancel လုပ္မယ္ ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

atrm 10

at ကို အသံုးခ်ၿပီး job ေတြကို schedule ဆြဲတဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပၾကပါေစ။

crontab ကို အသံုးျပဳ၍ job တစ္ခုကို အခ်ိန္ဇယားျဖင့္ ပံုမွန္ run ေစျခင္း


linux ေပၚမွာ at ဆိုတဲ့ command ကို အသံုးျပဳၿပီး job တစ္ခုကို run ခိုင္းတဲ့အေၾကာင္းကို ေရးၿပီးပါၿပီ။

at အသံုးျပဳရင္ job တစ္ခုကို ၁ ခါပဲ run လိ႔ု ရပါတယ္။ one time ေပါ့။ ေန႔စဥ္ လစဥ္ ပံုမွန္ ခိုင္းေစထားလို႔ မရပါဘူး။
ေန႔စဥ္ လစဥ္ ပံုမွန္ ခိုင္းေစထားလိုတဲ့အခါ crontab ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။

သူ႔ရဲ့ package name က cronie ျဖစ္ၿပီး service name က crond .. command က crontab ပါ။

job တစ္ခုကို အခ်ိန္ဇယားနဲ႔ ပံုမွန္ ခိုင္းေစထားလိုတဲ့အခါ crontab -e ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။ crontab
-e လို႔ ရိုက္ enter ေခါက္လိုက္ရင္ vi နဲ႔ file တစ္ခု ပြင့္လာပါလိမ့္မယ္။
အဲဒီ ပြင့္လာတဲ့ file ထဲကို အပိုင္း ၆ ပိုင္းနဲ႔ အစဥ္လိုက္ configure လုပ္ေပးရပါတယ္။ အဲဒီ အပိုင္း ၆ ပိုင္းကေတာ့ -

၁။ မိနစ္ (0 to 59)
၂။ နာရီ (0 to 23)
၃။ day of month (1 to 31)
၄။ month (1 to 12)
၅။ day of week (0 [sunday] to 6 [saturday]) { * = ဘယ္ေန႔မဆို }
၆။ job script (run မယ့္ job)

တို႔ပါပဲ။ အဲဒီ format ပံုစံကို /etc/crontab ဆိုတဲ့ file မွာ ဝင္ၾကည့္ႏိုင္ပါတယ္။

ဥပမာ၊ ဂ်ဴလိုင္လ ၁၉ ရက္ေန႔ မနက္ ၇ နာရီ ၃၀ မိနစ္ ေရာက္တိုင္း current user's home directory ေအာက္က
Desktop ေအာက္က aungsan.mp3 ဆိုတဲ့ သီခ်င္းကို ပြင့္လာေစခ်င္တယ္ ဆိုပါစို႔။

crontab -e လိ႔ု ရိုက္ enter ေခါက္ၿပီး ေအာက္ပါအတိုင္း configure လုပ္ရပါမယ္။ i ကို ႏွိပ္ insert mode နဲ႔ ဝင္ၿပီး
ေအာက္ကအတိုင္း ေရး။
30 7 19 7 * ~/Desktop/aungsan.mp3

ၿပီးရင္ Esc :wq နဲ႔ ျပန္ထြက္ေပါ့။

ဒီေနရာမွာ 30 က မိနစ္ 7 က နာရီ 19 က day of month 7 က month * က ဘယ္ေန႔မဆို၊ ~/Desktop/aungsan.mp3


က job script ဒီလို အဓိပၸါယ္ရပါတယ္။

ေနာက္ job တစ္ခု ခိုင္းခ်င္ရင္ အာ့ဒီ ေအာက္မွာပဲ ေနာက္ ၁ေၾကာင္း ထပ္ေရးႏိုင္ပါတယ္။


ဒါကေတာ့ crontab -e နဲ႔ job ၁ ခုကို အခ်ိန္ဇယားနဲ႔ ပံုမွန္ run ခိုင္းတဲ့ သေဘာတရားပါ။

job ေတြ ဘယ္ႏွစ္ခု ရွိလဲ သိခ်င္ရင္ crontab -l နဲ႔ ၾကည့္ႏိုင္ပါတယ္။

job ေတြကို ျပန္ဖ်က္ခ်င္ရင္ေတာ့ crontab -r လိ႔ု ရိုက္ enter ေခါက္ရံုပါပဲ။

crontab -e ကို အသံုးျပဳၿပီး job ေတြကို အခ်ိန္ဇယားနဲ႔ ပံုမွန္ ခိုင္းေစတဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပၾကပါေစ။

system cron jobs


ဒါေလးက အေရးမႀကီးေပမယ့္ သိထားေတာ့ ေကာင္းတာေပါ့။

at တို႔ crontab တို႔ စတဲ့ command ေတြကို အသံုးျပဳၿပီး job ေတြကို အခ်ိန္ဇယားနဲ႔ ေစခိုင္းတဲ့အေၾကာင္းကေတာ့
ေရးၿပီးခဲ့ပါၿပီ။

ခုတစ္ခါ တင္ဆက္မွာက system အေနနဲ႔ တခ်ိဳ႔ job ေတြကို သူ႔ဖါသာ အခ်ိန္ဇယားနဲ႔ ဘယ္လို run ေနသလဲဆိုတာပါပဲ။
သေဘာတရားေလးေပါ့။

၁။ system cron job နဲ႔ ဆိုင္တဲ့ file ေတြဟာ /etc/cron.d ေအာက္မွာ ရွိပါတယ္။

၂။ system အေနနဲ႔ job ေတြကို run တဲ့အခါ run-parts ဆိုတဲ့ program က ေနာက္ကြယ္ကေန အလုပ္လုပ္ေပးပါတယ္။
run တဲ့ ပံုစံကို /etc/anacrontab ထဲမွာ ေဖၚျပထားပါတယ္။ vi နဲ႔ ဝင္ၾကည့္ႏိုင္ပါတယ္။

ေန႔ရက္အလိုက္ run ရမယ့္ job ေတြကို /etc/cron.daily ဆိုတဲ့ directory ေအာက္မွာ သြား run ပါတယ္။

အပတ္စဥ္ run ရမယ့္ job ေတြကို /etc/cron.weekly ဆိုတဲ့ directory ေအာက္မွာ သြား run ပါတယ္။

လစဥ္ run ရမယ့္ job ေတြကို /etc/cron.monthly ဆိုတဲ့ directory ေအာက္မွာ သြား run ပါတယ္။
၃။ နာရီ အလိုက္ run ရမယ့္ job ေတြကိုေတာ့ /etc/cron.d/0hourly ဆိုတဲ့ file က /etc/cron.hourly ဆိုတဲ့ directory
ေအာက္မွာ သြား run ပါတယ္။u /etc/cron.d/0hourly ဆိုတဲ့ file ကို vi text editor နဲ႔ ဖြင့္ၾကည့္ရင္ ျမင္ႏိုင္ပါတယ္။

system အေနနဲ႔ job ေတြကို အခ်ိန္ဇယားနဲ႔ run တဲ့ သေဘာတရားကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုးပဲ အဆင္ေျပၾကပါေစ။

SELinux (Security Enhanced Linux)


linux မွာ SELinux ဆိုတာ firewall မဟုတ္ပဲ security အတြက္ ထားထားတဲ့ layer တစ္ခုပါ။ ဥပမာ၊ http ကို
ဖြင့္ေပးထားရင္ေတာင္မွ SELinux က ခြင့္ျပဳထားတဲ့ file ေတြကိုပဲ access လုပ္လို႔ရမယ္။ ဒီသေဘာပါ။

SELinux ရဲ့ အရွည္က Securiry Enhance Linux ပါ။ SELinux ကို ေကာင္းေကာင္း အသံုးခ်ႏိုင္ဖို႔အတြက္
policycoreutils-python ဆိုတဲ့ package နဲ႔ setroubleshoot-server ဆိုတဲ့ package လိုအပ္ပါတယ္။ မရွိရင္ yum
install နဲ႔ သြင္းေပးရပါမယ္။

ကဲ ! ေလ့လာၾကည့္ရေအာင္။

အရင္ဆံုး root account နဲ႔ login ဝင္ၿပီး mkdir dir1 ဆိုတဲ့ directory ေလး ၁ ခု touch file1 နဲ႔ file ေလး ၁ ခု
ေဆာက္လိုက္ပါ။

file နဲ႔ directory ေတြမွာ SELinux က သတ္မွတ္ေပးထားတဲ့ label ေလးေတြ ရွိပါတယ္။ ဒါကို context လို႔ ေခၚပါတယ္။ ဒီ
context ေလးေတြေပၚ မူတည္ၿပီး access လုပ္ခြင့္ေတြ ေျပာင္းလဲသြားတာပါ။

file မွာ ပါတဲ့ context ကို ၾကည့္ခ်င္ရင္ ls -lZ ကို အသံုးျပဳရပါတယ္။

ls -lZ file1

directory မွာ ပါတဲ့ context ကို ၾကည့္ခ်င္ရင္ ls -ldZ ကို အသံုးျပဳရပါတယ္။

ls -ldZ dir1

process ေတြမွာ ပါတဲ့ context ေတြကို ၾကည့္ခ်င္ရင္ ps -auxZ နဲ႔ ၾကည့္ရပါတယ္။

ps -auxZ

ဟုတ္ၿပီ။ ဆက္သြားၾကရေအာင္။

SELinux မွာ mode ၃ မ်ိဳး ရွိပါတယ္။ ဒါေတြကေတာ့၊

1. enforcing
2. permissive

3. disabled

တိ႔ပ
ု ါပဲ။

1. enforcing က rule နဲ႔ မညီတာေတြကို ပိတ္ပစ္ပါတယ္။

2. permissive က rule နဲ႔ မညီတာေတြကို ပိတ္မပစ္ပါဘူး ဒါေပမယ့္ ဘာေတြျဖစ္သြားတယ္ဆိုတာကို alert လုပ္ပါတယ္။

3. disabled ကေတာ့ SELinux ကို လံုးဝ ပိတ္ထားတာပါ။

SELinux သည္ ဘယ္ mode မွာ ရွိေနသလဲ ၾကည့္ခ်င္ရင္ getenforce ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။

getenforce

SELinux ရဲ့ mode ကို ေျပာင္းခ်င္ရင္၊ setenforce ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။

1. enforcing ကို ေျပာင္းခ်င္ရင္ setenforce 1

2. permissive ကို ေျပာင္းခ်င္ရင္ setenforce 0

3. disabled လုပ္ခ်င္ရင္ /etc/selinux/config ကို vi နဲ႔ ဝင္ၿပီး SELINUX=disabled လို႔ ျပင္ေပးရပါမယ္။

ကဲ ! ဆက္လိုက္ရေအာင္။

file နဲ႔ directory ေတြ အတြက္ context ေတြကို ယာယီ (temporary) နဲ႔ အၿမဲ (permanent) ဆိုၿပီး
သတ္မွတ္ေပးႏိုင္ပါတယ္။

1. temporary သတ္မွတ္ခ်င္ရင္ chcon -t ကို အသံုးျပဳရပါတယ္။ reboot လုပ္လိုက္ရင္ ျပန္ပ်က္ပါတယ္။ ဥပမာ၊

chcon -t httpd_sys_content_t file1

2. pernanent သတ္မွတ္ခ်င္ရင္ semanage fcontext -a -t ကို အသံုးျပဳရပါတယ္။ reboot လုပ္လည္း


မပ်က္ေတာ့ပါဘူး။

semanage fcontext -a -t "httpd_sys_content_t' dir1

3. context တစ္ခုကို permanent သတ္မွတ္ၿပီးရင္ update ျဖစ္သြားေအာင္ restorecon -RFv ကို run ေပးရပါတယ္။

restorecon -RFv dir1


directory နဲ႔ သူ႔ေအာက္က sub dir ေတြ file ေတြကိုပါ တစ္ခါတည္း သတ္မွတ္ေပးခ်င္ရင္ (/.*)?
ေလးထည့္ေပးရပါတယ္။

semanage fcontext -a -t "httpd_sys_content_t" "dir1(/.*)?"

ဒီေနရာမွာ httpd_sys_content_t သည္ contexr ပါ။ ဒီလို သတ္မွတ္ျခင္းအားျဖင့္ http ကေနတစ္ဆင့္ ဒီ directory ကို
access လုပ္ခြင့္ ရသြားပါတယ္။

ကဲ ! ထပ္ဆက္လိုက္ရေအာင္။

SELinux ရဲ့ ေပးထားတဲ့ policy ေတြကို on/off ဖြင့္ပိတ္လုပ္ထားႏိုင္ပါတယ္။

1. policy ေတြကို ၾကည့္ခ်င္ရင္ getsebool -a နဲ႔ ၾကည့္ႏိုင္ပါတယ္။ policy ေပါင္း ၂၈၀ ရွိပါတယ္။

getsebool -a

အေၾကာင္းအရာေတြန႔ဲ ျပည့္ျပည့္စံုစံု ၾကည့္ခ်င္ရင္ semanage boolean -l ကို အသံုးျပဳရပါတယ္။

semanage boolean -l

2. policy ေတြကို ျပင္မယ္ဆို setsebool ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။ ယာယီ ျပင္မယ္ဆို setsebool ကို
သံုးရံုပါပဲ။

setsebool httpd_enable_homedirs on

ယာယီသတ္မွတ္ထားတဲ့ policy ေတြကို ၾကည့္ခ်င္ရင္ setsebool -a ကို အသံုးျပဳရပါတယ္။

setsebool -a

3. policy ကို permanent သတ္မွတ္ခ်င္ရင္ -p ဆိုတဲ့ option ထည့္ေပးရပါတယ္။

setsebool -p httpd_enable_homedirs on

ကဲ ! trouble shoot အေၾကာင္းေလး ဆက္လိုက္ရေအာင္။

file တစ္ခုခု directory တစ္ခုခုကို access လုပ္လို႔ မရရင္ error တက္တတ္ပါတယ္။ ဒါဟာ SELinux က ပိတ္ထားလိ႔ပ
ု ါ။
ဒီအခါ system log ကို tail -f -n 30 နဲ႔ ဝင္ဖတ္ၿပီး sealert ဆိုတဲ့ code ကို ရွာၿပီး run ေပးရပါတယ္။ ဒီအခါ SELinux နဲ႔
ဘယ္လို ျပင္ဆင္ေပးဖို႔ လိုအပ္ေနသလဲဆတ
ို ာ ျမင္ေတြ႔ရပါလိမ့္မယ္။

tail -f -n 30 /var/log/messages

ကဲ ! SELinux ရဲ့ အေျခခံ သေဘာတရားေတြကေတာ့ ဒီေလာက္ပါပဲ။


နည္းနည္း ရွဳပ္ရင္ ၃ ခါေလာက္ ျပန္ဖတ္ၾကည့္ပါ လို႔။

အားလံုးပဲ အဆင္ေျပပါေစ။

LDAP ႏွင့္ login ၀င္ေရာက္ျခင္း


LDAP ဆိုတာ Lightweight Directory Access Protocol ပါ။

LDAP ကို windows server ရဲ့ (AD) Active Directory Object ေတြန႔ဲ ခ်ိတ္ဆက္ရာမွာ user authentication နဲ႔
authorization အတြက္ အသံုးျပဳပါတယ္။ network ေပၚမွာ credential data ေတြကို သိမ္းဆည္းရာမွာလည္း LDAP ကို
အသံုးျပဳပါတယ္။

စကားမစပ္ AD အေၾကာင္းေျပာရရင္ AD သည္ database တစ္ခု ျဖစ္ၿပီး AD က ဘာလုပ္သလဲဆိုေတာ့ organization


တစ္ခုရဲ့ user account နဲ႔ password ေတြကို ျမင့္မားတဲ့ security နဲ႔ ထိန္းေၾကာင္းေပးပါတယ္။ user account နဲ႔
password ေတြကို protected location တစ္ခုမွာ သိမ္းဆည္းေပးပါတယ္။ ဒါ့အျပင္ AD အေနနဲ႔ domain ေတြ အမ်ားႀကီး
ထပ္ခြဲႏိုင္ပါေသးတယ္။ ဒါကေတာ့ AD ရဲ့ concept ပါ။

ဆိုရရင္ linux မွာ Active Directory (AD) မရွိပါဘူး။ AD ကို လိုခ်င္ရင္ windows server ကို အသံုးျပဳရပါမယ္။

အခု တင္ျပမယ့္ အေၾကာင္းအရာကေတာ့ linux ကေန LDAP server ဆီ ခ်ိတ္ဆက္တဲ့အေၾကာင္းပါပဲ။

ဒီလို ခ်ိတ္ဆက္ဖို႔ server ဘက္ကေန ေအာက္ပါ အခ်က္အလက္ေတြကို ေပးထားပါလိမ့္မယ္။ ဥပမာ၊

LDAP Base DN >> dc=example, dc=com

LDAP server >> classroom.example.com

use TLS >> yes

Root CA >> http://classroom.example.com/pub/ca.crt

realm >> EXAMPLE.COM

KDC >> classroom.example.com

admin server >> classroom.example.com

LDAP User >> xerocool

password >> redhat123


စတာေတြကို ေပးထားပါလိမ့္မယ္။

အာ့လို ေပးထားတဲ့အခ်က္ေတြကို photo မွာ ျမင္ရတဲ့အတိုင္း linux ရဲ့ graphical user interface မွာ ျဖည့္ၿပီး apply
လုပ္ရမွာပါ။ လြယ္ကူ ရိုးရွင္းပါတယ္။

စလိုက္ၾကရေအာင္။

၁။ အရင္ဆံုး package ၃ ခု ကို ေအာက္ပါအတိုင္း install လုပ္ပါ။

yum -y install authconfig-gtk sssd krb5-workstation

၂။ terminal မွာ ေအာက္ပါ command ကို ရိုက္ၿပီး enter ေခါက္လိုက္ပါ။

system-config-authentication

၃။ photo မွာ ျပထားတဲ့အတိုင္း ပြင့္လာပါလိမ့္မယ္။


၄။ windows ဘက္က ေပးထားတဲ့ အခ်က္အလက္ေတြအတိုင္း ျဖည့္ပါ။

၅။ Advanced options tab ကို သြားပါ။ Create home directories on the first login ကို အမွန္ျခစ္ေပးလိုက္ပါ။ Apply
ကို ႏွိပ္ပါ။

ဒါဆို LDAP နဲ႔ login ဝင္ဖ႔ို အဆင္သင့္ျဖစ္ပါၿပီ။

login ဝင္ၾကည့္ၾကစို႔။ ၂ ခ်က္ပါပဲ။

၁။ အရင္ဆံုး getent ဆိုတဲ့ command ကို အသံုးျပဳရပါမယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

getent passwd xerocool

၂။ ssh ကေနတစ္ဆင့္ LDAP user name နဲ႔ login ဝင္ႏိုင္ပါၿပီ။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

ssh xerocool@localhost

password ေတာင္းရင္ ပထမပိုင္းမွာ ေပးထားတဲ့အတိုင္း redhat123 လိ႔ု ထည့္ enter ေခါက္ေပးလိုက္ပါ။

ဒါဆို xerocool ဆိုတဲ့ user ရဲ့ home directory ေအာက္ကို ေရာက္ရွိသြားပါလိမ့္မယ္။

ဒါပါပဲ။ linux ကေန LDAP အသံုးျပဳၿပီး login ဝင္တဲ့အပိုင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုး အဆင္ေျပၾကပါေစ။
HD (hard disk) အား partition ပိုင္းျခင္း format ခ်ျခင္း mount လုပ္ျခင္း
ဒီတစ္ခါေတာ့ linux မွာ HD ကို

၁။ partition ပိုင္းတာ

၂။ ရလာတဲ့ partition ကို format ခ်တာ

၃။ format ခ်ထားတဲ့ partition ကို မိမိ သတ္မွတ္ထားတဲ့ directory မွာ mount လုပ္ တပ္ဆင္တာ

စသျဖင့္ ေလ့လာၾကည့္ရေအာင္။

lsblk လိ႔ု ရိုက္ enter ေခါက္လိုက္ရင္ HD ေတြရဲ့ စာရင္းကို ေတြ႔ရမွာပါ။

HD က

၁။ IDE အမ်ိဳးအစားဆိုရင္ hda, hdb

၂။ SATA အမ်ိဳးအစားဆိုရင္ sda, sdb

၃။ virtual HD ဆိုရင္ vda, vdb

စသျဖင့္ ျမင္ရပါလိမ့္မယ္။

ဒီေနရာမွာ နမူနာအျဖစ္ HD ကို sdb လိ႔ု မွတ္ထားေပးပါ။

ကဲ ! sdb ဆိုတဲ့ HD ကို partition ပိုင္းၾကည့္ရေအာင္။

၁။ fdisk /dev/sdb လိ႔ု ရိုက္ enter ေခါက္လိုက္ပါ။

၂။ Command (m for help) : လို႔ ေပၚလာပါလိမ့္မယ္။ partition အသစ္ ပိုင္းမွာျဖစ္တဲ့အတြက္ n လို႔ ရိုက္ enter
ေခါက္ေပးလိုက္ပါ။

၃။ Partition type ကို ေရြးခိုင္းပါလိမ့္မယ္။ primary partition အေနနဲ႔ ပိုင္းမွာျဖစ္လို႔ p လိ႔ု ရိုက္ enter
ေခါက္ေပးလိုက္ပါ။

၄။ Partition number ျဖည့္ခိုင္းပါလိမ့္မယ္။ ပထမဆံုး partition ျဖစ္တာေၾကာင့္ 1 လို႔ ရိုက္ enter ေခါက္ေပးလိုက္ပါ။

၅။ First sector ထည့္ခိုင္းပါလိမ့္မယ္။ blank အတိုင္းထားၿပီး enter ေခါက္ေပးလိုက္ပါ။

၆။ Last sector ထည့္ခိုင္းပါလိမ့္မယ္။ ဒီဥပမာမွာ 2G ပိုင္းမွာ ျဖစ္တဲ့ အတြက္ +2G လိ႔ု ရိုက္ enter ေခါက္ေပးလိုက္ပါ။

၇။ Command (m for help) : ဆိုတဲ့ေနရာကို ျပန္ေရာက္သြားပါလိမ့္မယ္။ partition ID သတ္မွတ္ေပးဖို႔ အတြက္ t လိ႔ု


ရိုက္ enter ေခါက္လိုက္ပါ။
၈။ Hex code (type L to list all codes) : လို႔ ေတြ႔ရပါမယ္။ L လို႔ ရိုက္ enter ေခါက္ေပးလိုက္တဲ့အခါ code ေတြကို
ေတြ႔ရပါမယ္။ linux အတြက္ ID က 83, swap အတြက္ ID က 82, LVM အတြက္ ID က 8e ပါ။ ဒီေနရာမွာ 83 လိ႔ု ရိုက္
enter ေခါက္ေပးလိုက္ပါ။

၉။ Command (m for help) : ဆီ ျပန္ေရာက္လာပါလိမ့္မယ္။ w လို႔ ရိုက္ enter ေခါက္ၿပီး save လိုက္ပါ။

၁၀။ ဒါဆို partition တစ္ခု ဖန္တီးၿပီးသြားပါၿပီ။ partition အသစ္ကို system က သိေအာင္ partprobe လို႔ ရိုက္ enter
ေခါက္ေပးလိုက္ပါ။

၁၁။ lsblk ဆိုတဲ့ command ကို သံုးၿပီး ျပန္ၾကည့္လိုက္ပါ။ /dev/sdb1 ဆိုတဲ့ partition တစ္ခု တိုးလာတာကို
ျမင္ရပါလိမ့္မယ္။

partition ပိုင္းတာကေတာ့ ဒီေလာက္ပါပဲ။ format ခ်တဲ့အေၾကာင္း ဆက္သြားၾကရေအာင္။

format ခ်ဖိ႔ု အတြက္ mkfs ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။

၁။ xfs နဲ႔ format ခ်မယ္ဆို mkfs.xfs

၂။ ext4 နဲ႔ format ခ်မဟ္ဆို mkfs.ext4

ဒီလို အသံုးျပဳရပါတယ္။

ေစာေစာက ပိုင္းထားတဲ့ /dev/sdb1 ကို ext4 နဲ႔ format ခ်မယ္ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါ။

mkfs.ext4 /dev/sdb1

ဒါကေတာ့ format ခ်တဲ့အၾကာင္းပါပဲ။ format ခ်ၿပီးတဲ့ေနာက္ အသံုးျပဳဖို႔ file ေတြ ထည့္ႏိုင္ဖို႔ directory တစ္ခုခုမွာ
mount လုပ္ တပ္ဆင္ရပါတယ္။

သင္ဟာ root account နဲ႔ login ဝင္ထားတယ္ ဆိုပါစို႔။

/ directory ေအာက္မွာ mkdir hd1 လို႔ directory ေလး ၁ ခု ေဆာက္လိုက္ပါ။

format ခ်ၿပီးသား partition ကို hd1 ဆိုတဲ့ directory ဆီ mount လုပ္မယ္ဆိုပါစို႔။ အသံုးျပဳရမယ့္ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါ။

mount /dev/sdb1 /hd1

ဒါက ယာယီ mount လုပ္တာပါ။ reboot လုပ္လိုက္ရင္ ျပန္ျပဳတ္ပါတယ္။

အၿမဲ mount လုပ္ထားခ်င္ရင္ /etc/fstab ကို vi နဲ႔ ဖြင့္ၿပီး ေအာက္ပါအတိုင္း ေရးသြင္းေပးရပါမယ္။

၁။ vi /etc/fstab
၂။ i ကို ႏွိပ္ insert mode ကို ဝင္

၃။ /dev/sdb1 /hd1 ext4 defaults 0 0 လို႔ ေရး

၄။ escape ႏွိပ္ :wq နဲ႔ ျပန္ထြက္

ဒါဆို အၿမဲ mount ျဖစ္သြားပါၿပီ။ cd /hd1 ကို ဝင္ၿပီး file ေတြ သိမ္းဆည္းႏိုင္ပါၿပီ။

ကဲ ! HD ကို partition ပိုင္း၊ format ခ်၊ directory မွာ mount လုပ္ တပ္ဆင္တဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုး အဆင္ေျပၾကပါေစ။

virtual memory
linux မွာ Hard Disk (HD) ကို partition ပိုင္းတာ format ခ်တာ၊ directory မွာ mount လုပ္တာေတြကို တင္ခဲ့ၿပီးပါၿပီ။

ဒီတစ္ခါ virtual memory (RAM အတု) ဖန္တီးတဲ့အေၾကာင္းကို ေလ့လာၾကည့္ရေအာင္။

physical ram မေလာက္တဲ့အခါ virtual memory ဟာ ram လိုပဲ အလုပ္လုပ္ေပးပါတယ္။ linux မွာ virtual memory
ကို swap လို႔ ေခၚပါတယ္။

free -h ဆိုတဲ့ command နဲ႔ ဝင္ၾကည့္မယ္ဆိုရင္ swap ကို ေတြ႔ရပါလိမ့္မယ္။

ကဲ ! swap တစ္ခုကို ဘယ္လို ဖန္တီးမလဲ စတင္လိုက္ရေအာင္။

၁။ HD ကို partition ပိုင္းကတည္းက type ID ကို 82 လို႔ သတ္မွတ္ေပးလိုက္ပါ။ ဒီေနရာမွ နမူနာအျဖစ္ partition ကို
/dev/sdb1 လိ႔ု ဆိုၾကပါစို႔။ size က 1G ထားပါစို႔။

၂။ sdb1 ရလာၿပီးတဲ့ေနာက္ သူ႔ကို format ခ်ရပါမယ္။ storage အေနနဲ႔ မဟုတ္ပဲ virtual memory ဖန္တီးမွာ ျဖစ္လို႔
mkswap ဆိုတဲ့ command ကို အသံုးျပဳရပါမယ္။

mkswap /dev/sdb1 လိ႔ု ရိုက္ enter ေခါက္လိုက္ပါ။

ဒါဆို swap တစ္ခု ရပါၿပီ။

၃။ swap ကို virtual memory အျဖစ္ တပ္ဆင္ဖို႔ swapon ဆိုတဲ့ command ကို အသံုးျပဳရပါတယ္။

swapon /dev/sdb1 လိ႔ု ရိုက္ enter ေခါက္လိုက္ပါ။

၄။ free -h လို႔ ရိုက္ enter ေခါက္လိုက္ပါ။ ram ေနရာမွာ swap အေနနဲ႔ 1G ထက္တိုးလာတာ ေတြ႔ရပါလိမ့္မယ္။

၅။ virtual memory အျဖစ္ တပ္ဆင္ထားတဲ့ swap ကို ျပန္ျဖဳတ္ခ်င္တယ္ ဆိုပါစို႔။ swapoff ဆိုတဲ့ command ကို
အသံုးျပဳရပါတယ္။
swapoff /dev/sdb1 လို႔ ရိုက္ enter ေခါက္လိုက္ပါ။

free -h နဲ႔ ျပန္ၾကည့္ပါ။ swap ရဲ့ size ျပန္ေလ်ာ့သြားတာကို ေတြ႔ရပါလိမ့္မယ္။

အသံုးျပဳခဲ့တဲ့ command ေတြကို ျပန္ၾကည့္မယ္ဆိုရင္ …

၁။ HD ကို partition ပိုင္းစဥ္မွာ type ID ကို 82 လိ႔ု ေပး

၂။ mkswap /dev/sdb1

၃။ swapon /dev/sdb1

၄။ free –h

၅။ ျပန္ျဖဳတ္မယ္ဆို swapoff /dev/sdb1

လို႔ ေတြ႔ရမွာပါ။

linux မွာ swap တစ္ခု ဖန္တီးၿပီး virtual memory အျဖစ္ တပ္ဆင္ အသံုးျပဳတဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

စာဖတ္ရင္း တစ္ဆင့္ခ်င္း စမ္းလုပ္သြားရင္ အဆင္ေျပပါလိမ့္မယ္။

swap နဲ႔ ပတ္သက္တာေတြ မျပဳလုပ္ခင္ ယခင္ post မွာ တင္ထားတဲ့ HD ကို partition ပိုင္းတာ၊ type ID
သတ္မွတ္တာေတြကို နားလည္ထားဖို႔ေတာ့လိုပါတယ္။

အားလံုးပဲ အဆင္ေျပၾကပါေစ။
LVM - Logical Volume Management
linux မွာ hard disk (HD) ကို ပံုမွန္ partition ပိုင္းတာ၊ virtual memory ဖန္တီးတာေတြ ၿပီးခဲ့ပါၿပီ။

ခုတစ္ခါက LVM နဲ႔ logical volume ေတြ ဖန္တီးတာကို တင္ျပေပးမွာပါ။

ဘာ့ေၾကာင့္ ရိုးရိုး partition မပိုင္းပဲ logical volume (LV) ေတြ ဖန္တီးမွာလဲ။ ဘာ့ေၾကာင့္လဲ ဆိုေတာ့ LVM မွာ
အားသာခ်က္ေတြ ရွိလို႔ပါ။

၁။ partition တစ္ခုကို အလြယ္တကူ size တိုးတာ

၂။ partition တစ္ခုကေန တစ္ခုကို data ေတြ မထိခိုက္ေစပဲ down time zero နဲ႔ ေရြ႔ပစ္တာ

ဒါေတြ လုပ္လို႔ ရပါတယ္။

ကဲ ! စလိုက္ၾကစို႔။

LV ေတြ ဖန္တီးရာမွာ အစဥ္လိုက္ အသံုးျပဴသြားရမယ့္ command ေတြကေတာ့ ေအာက္ပါအတိုင္းပါ။

၁။ pvcreate
၂။ pvs
၃။ vgcreate
၄။ vgs
၅။ lvcreate
၆။ lvs

အရင္ဆံုး HD ကို fdisk ဆိုတဲ့ command အသံုးျပဳၿပီး partition ပိုင္းရာမွာ type ID ကို 8e လို႔ သတ္မွတ္ေပးလိုက္ပါ။
type ID သတ္မွတ္ေပးတဲ့ အေၾကာင္းကို ယခင္ status မွာ ေရးသားခဲ့ၿပီးပါၿပီ။

ဟုတ္ၿပီ။ size 2G စီ ရွိတဲ့ /dev/sdb1 နဲ႔ /dev/sdb2 ဆိုတဲ့ partition ၂ ခု ရၿပီဆိုပါေတာ့။ ဒီ partition ၂ ခုကို
အရင္းျပဳၿပီး logical volume (LV) ေတြ ဖန္တီးလိုက္ရေအာင္။

၁။ အရင္ဦးဆံုး partition ေတြကို physical volume (PV) ေတြ အျဖစ္ ေျပာင္းလဲရပါမယ္။ partition ၂ ခုကို PV အျဖစ္
ေျပာင္းလဲဖို႔ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

pvcreate /dev/sdb1 /dev/sdb2

၂။ ရရွိလာတဲ့ physical volume ၂ ခုကို ျပန္ၾကည့္ခ်င္ရင္ pvs လို႔ ရိုက္ enter ေခါက္ရပါမယ္။

၃။ ရရွိလာတဲ့ physical volume ၂ ခုကို အရင္းျပဳၿပီး volume group (VG) ၁ ခု ေဆာက္ေပးရပါမယ္။ command
syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

vgcreate my_vg /dev/sdb1 /dev/sdb2


my_vg ဆိုတာ volume group အမည္ပါ။ မိမိ ႏွစ္သက္သလို ေပးႏိုင္ပါတယ္။

၄။ ရရွိလာတဲ့ volume group ကို ျပန္ၾကည့္ခ်င္ရင္ vgs လို႔ ရိုက္ enter ေခါက္ရပါမယ္။

၅။ ခုဆိုရင္ physical volume >> sdb1 နဲ႔ sdb2 ႏွစ္ခုေပါင္း 4G ရွိတဲ့ my_vg လို႔ အမည္ရတဲ့ volume group ၁ ခု
ရလာပါၿပီ။

ဒီ vg ကေနမွ 1G စီ ရွိတဲ့ logical volume (LV) ၂ ခု ဖန္တီးပါမယ္။ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

lvcreate -n my_lv1 -L 1G my_vg

ဒါဆို lv ၁ ခု ရပါၿပီ။

lvcreate -n my_lv2 -L 1G my_vg

ဒါဆို lv ၂ ခု ရပါၿပီ။

my_lv1 နဲ႔ my_lv2 က အမည္ေတြပါ။ မိမိ ႏွစ္သက္သလို ေပးႏိုင္ပါတယ္။

၆။ ရရွိလာတဲ့ logical volume ေတြကို ျပန္ၾကည့္ခ်င္ရင္ lvs လို႔ ရိုက္ enter ေခါက္ရပါမယ္။

logical volume ေတြကို ဖန္တီးတဲ့ အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

ဒီ logical volume ေတြကို size ထပ္တိုး extend လုပ္တဲ့ အပိုင္းဆီ ဆက္သြားၾကရေအာင္။

ဥပမာ၊ ေစာေစာက my_lv ဟာ 1G နဲ႔ မေလာက္ဘူး ဆိုပါေတာ့။ သူ႔ကို 1G ထပ္တိုးမယ္ ဆိုပါစို႔။ lvextend ဆိုတဲ့
command ကို အသံုးျပဳရပါတယ္။ အသံုးျပဳရမယ့္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါ။

lvextend -L +1G /dev/my_vg/my_lv1

lvs လို႔ ရိုက္ enter ေခါက္ၿပီး ျပန္ၾကည့္ပါ။ my_lv1 မွာ 1G ထပ္တိုးေနတာ ေတြ႔ရပါလိမ့္မယ္။

ကဲ ! ဟုတ္ၿပီ။

ဒီ logical volume ျဖစ္တဲ့ my_lv1 ကို format ခ်ၾကည့္ရေအာင္။ xfs နဲ႔ format ခ်မယ္ ဆိုပါစို႔။ command syntax
ကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။

mkfs.xfs /dev/my_vg/my_lv1

ဒါဆို my_lv1 ကို xfs type နဲ႔ format ခ်ၿပီးပါၿပီ။ directory တစ္ခုခုမွာ mount လုပ္ၿပီး storage အျဖစ္ အသံုးျပဳလိ႔ု
ရၿပီေပါ့။

mount လုပ္တဲ့ အပိုင္းေလး ဆက္သြားလိုက္ရေအာင္။


current user က root ဆိုပါစို႔။ mkdir storage လိ႔ု ရိုက္ enter ေခါက္ၿပီး current user ရဲ့ home directory ေအာက္မွာ
storage ဆိုတဲ့ အမည္န႔ဲ directory တစ္ခု ေဆာက္လိုက္ပါ။

my_lv1 ကို storage ဆိုတဲ့ directory (folder) ဆီ mount လုပ္ဖို႔ အသံုးျပဳရမယ့္ command syntax ကေတာ့
ေအာက္ပါအတိုင္းပါပဲ။

mount /dev/my_vg/my_lv1 /root/storage

ကဲ ! ခုဆို storage ဆိုတဲ့ directory ထဲမွာ data ေတြ စတင္ သိမ္းႏိုင္ပါၿပီ။

Logical Volume Management (LVM) အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

နည္းနည္း ရွဳပ္သလို ထင္ရေပမယ့္ ၃ ခါေလာက္ ဖတ္ရင္း စမ္းၾကည့္မယ္ဆို လြယ္ကူသြားမွာပါ။

pv >> vg >> lv ဒီလို တစ္ဆင့္ခ်င္း သြားတာမို႔ လြယ္လြယ္ေလးပါေနာ္။

အားလံုးပဲ အဆင္ေျပၾကပါေစ။

Accessing Network Storage


ဒီတစ္ခါ တင္ျပမွာက linux မွာ server ဘက္က share ထားတဲ့ storage တစ္ခုကို မိမိ စက္ရဲ့ သတ္မွတ္ထားတဲ့
directory တစ္ခုဆီ mount လုပ္ ခ်ိတ္ဆက္တဲ့အေၾကာင္းပါ။

server ဘက္က storage ၁ ခုကို share မယ္။ ဒါကို ကိုယ့္စက္ကေန လွမ္းခ်ိတ္ယူမယ္။ ဒါပါပဲ။

server ဘက္ကေန mount လုပ္ရမယ့္ source လမ္းေၾကာင္းေတြ option ေတြ ေပးထားပါလိမ့္မယ္။ ဥပမာ၊

type >> nfs

options >> sync,sec=krb5p

source >> server:/share/public

keytab >> http://server.com/pub/krb5.keytab

စသျဖင့္ေပါ့။

nfs ဆိုတာက network file system ကို ဆိုလိုတာပါ။

sync, sec=krb5p ကေတာ့ security option ပါ။

source ဆိုတာကေတာ့ ဒီေနရာမွာ server ဘက္က ေပးထားတဲ့ root directory ေအာက္က share ေအာက္က public
ဆိုတဲ့ storage (server:/share/public) ကို မိမိဘက္မွာ mount လုပ္ တပ္ဆင္ေပးရမွာပါ။
keytab ဆိုတာကေတာ့ security နဲ႔ ဆိုင္တဲ့ key ကို download လုပ္ရမယ့္ link ပါ။

ကဲ ! စလိုက္ၾကရေအာင္။

၁။ nfs-utils ဆိုတဲ့ package ကို install လုပ္ပါ။

yum -y install nfs-utils

၂။ wget ဆိုတဲ့ command line download manager ကို သြင္းပါ။

yum -y install wget

၃။။ keytab ကို download ဆြဲၿပီး root directory ေအာက္က etc ေအာက္ (/etc/) မွာ ေနရာခ်ပါ။

wget -O /etc/krb5.keytab "http://server.com/pub/krb5.keytab"

၄။ mkdir နဲ႔ mount point (directory) တစ္ခု ဖန္တီးပါ။

mkdir mountpoint

၅။ server ဘက္က share ထားတဲ့ storage ကို ေအာက္ပါ command နဲ႔ ၾကည့္ပါ။

showmount -e serveraddress

serveraddress ေနရာမွာ server ရဲ့ hostname ကို ထည့္ေပးရမွာပါ။

၆။ server ဘက္က storage ကို ယာယီ mount ဖို႔ အတြက္ command syntax ကေတာ့ ေအာက္ပါအတိုင္းပါပဲ။

mount -t nfs -o sync,sec=krb5p server:/share/public /root/mountpoint

reboot လုပ္လိုက္ရင္ ျပန္ပ်က္ပါတယ္။

၇။ server ဘက္က storage ကို အၿမဲ parmanent mount ထားခ်င္ရင္ /etc/fstab ကို vi နဲ႔ ဖြင့္ၿပီး ေအာက္ပါအတိုင္း
ေရးသြင္းပါ။

server:/share/public /root/mountpoint nfs sync,sec=krb5p 0 0

၈။ ၿပီးရင္ ေအာက္ပါ command ၂ ခု ကို run ေပးပါ။

systemctl enable nfs-secure

systemctl restart nfs-secure


ဒါဆိုရင္ server ဘက္က ေပးထားတဲ့ storage ကို မိမိဘက္ျခမ္းမွာ တပ္ဆင္ျခင္း ၿပီးဆံုးပါၿပီ။

အားလံုးပဲ အဆင္ေျပၾကပါေစ။

auto mount (အလိုအေလ်ာက္ mount လုပ္ျခင္း)


linux မွာ server ဘက္က share ထားတဲ့ storage ေတြကို မိမိ ဘက္ျခမ္းမွာ mount ဆိုတဲ့ command သံုးၿပီး ယာယီ
mount လုပ္တာ၊ /etc/fstab ထဲ vi နဲ႔ ဝင္ေရးၿပီး permanent mount လုပ္ တပ္ဆင္တာ၊ စတဲ့ အေၾကာင္း ေရးခဲ့ၿပီးပါၿပီ။

အခုတစ္ခါ server ဘက္က share ထားတာကို auto mount တဲ့အေၾကာင္း ေလ့လာၾကည့္ရေအာင္။

auto mount ကို အသံုးျပဳႏိုင္ဖို႔ autofs ဆိုတဲ့ package ကို အရင္ဆံုး သြင္းထားရပါမယ္။ ေအာက္ပါအတိုင္းေပါ့။

yum -y install autofs

ဟုတ္ၿပီ။ ေရွ့ဆက္ၾကရေအာင္။

server ဘက္ကေန ေအာက္ပါ အခ်က္အလက္ေတြကို ေပးထားပါလိမ့္မယ္။

၁။ server ဘက္ကေန server:/share/public ကို share ထားပါတယ္။

၂။ security key file လမ္းေၾကာင္း >> http://www.example.com/keytab/desktop3.keytab

၃။ security key >> krb5p

၄။။ read and write access

ဟုတ္ၿပီ။ server ဘက္က share ထားတဲ့ /share/ ေအာက္က public ဆိုတဲ့ directory ကို မိမိ ဘက္ျခမ္းမွာ auto
mount လုပ္ၾကည့္ရေအာင္။

auto mount တဲ့ ေနရာမွာ

၁။ direct mount

၂။ indirect mount

လို႔ ၂ နည္း ရွိပါတယ္။

အရင္ဆံုး ေပးထားတဲ့ security key ကို download ခ်ၿပီး /etc/ ေအာက္မွာ krb5.keytab အမည္န႔ဲ သိမ္းပါ။
ေအာက္ပါအတိုင္းေပါ့။

wget -O /etc/krb5.keytab htto://www.example.com/keytab/desktop3.keytab


current user ရဲ့ root directory ေအာက္မွာ mount point (/mnt/public/) ေဆာက္ေပးပါ။ ေအာက္ပါအတိုင္းေပါ့။

mkdir /mnt

mkdir /mnt/public

#direct_mount

၁။ /etc/auto.master.d ဆိုတဲ့ directory ေအာက္ကို သြားပါ။ .autofs နဲ႔ ဆံုးတဲ့ file ၁ ခု ေဆာက္ပါ။ file အမည္ကို
ႏွစ္သက္သလို ေပးလို႔ရပါတယ္။ .autofs နဲ႔ ဆံုးဖို႔က အဓိကပါ။ ေအာက္ပါအတိုင္းေပါ့။

touch direct.autofs

အဲဒီ direct .autofs ဆိုတဲ့ file ကို direct map file သို႔မဟုတ္ master map file လို႔ ေခၚပါတယ္။

၂။ direct.autofs ထဲကို vi နဲ႔ ဝင္ၿပီး ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

/- /etc/auto.direct

auto.direct ဆိုတာ မၾကာခင္ ေဆာက္မယ့္ map file ရဲ့ အမည္ပါ။ map file ရဲ့ လမ္းေၾကာင္းပါ။

၃။ /etc/ ေအာက္ကို ဝင္ပါ။ ေစာေစာက ေရးသြင္းခဲ့တဲ့ auto.direct အမည္န႔ဲ file ၁ ခု ေဆာက္ေပးပါ။


ေအာက္ပါအတိုင္းေပါ့။

touch auto.direct

။ auto.direct ထဲမွာ mount လုပ္မယ့္ mount point ရယ္ options ရယ္ source ရယ္ကို vi နဲ႔ ဝင္ၿပီး ေရးသြင္းပါ။
ဒီေနရာမွာ mount point က /mnt/public ဆိုပါစို႔။ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

/mnt/public -rw,sync,sec=krb5p server:/share/public

၅။ systemctl enable autofs လိ႔ု ရိုက္ enter ေခါက္ပါ။ systemctl start autofs လို႔ ရိုက္ enter ေခါက္ပါ။ systemctl
restart autofs လို႔ ရိုက္ enter ေခါက္ပါ။

ဒါဆိုရင္ server ဘက္က share ထားတဲ့ storage ကို direct နဲ႔ auto mount တဲ့အပိုင္းၿပီးဆံုးပါၿပီ။ indirect auto mount
တဲ့ အေၾကာင္း ဆက္သြားၾကရေအာင္။

#inditect_mount

၁။ /etc/auto.master.d ဆိုတဲ့ directory ေအာက္ကို သြားပါ။ .autofs နဲ႔ ဆံုးတဲ့ file ၁ ခု ေဆာက္ပါ။ file အမည္ကို
ႏွစ္သက္သလို ေပးလို႔ရပါတယ္။ .autofs နဲ႔ ဆံုးဖို႔က အဓိကပါ။ ေအာက္ပါအတိုင္းေပါ့။
touch indirect.autofs

အဲဒီ indirect .autofs ဆိုတဲ့ file ကို indirect map file သို႔မဟုတ္ master map file လို႔ ေခၚပါတယ္။

၂။ indirect.autofs ထဲကို vi နဲ႔ ဝင္ၿပီး ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

/mnt/ /etc/auto.indirect

auto.indirect ဆိုတာ မၾကာခင္ ေဆာက္မယ့္ map file ရဲ့ အမည္ပါ။ map file ရဲ့ လမ္းေၾကာင္းပါ။

၃။ /etc/ ေအာက္ကို ဝင္ပါ။ ေစာေစာက ေရးသြင္းခဲ့တဲ့ auto.indirect အမည္န႔ဲ file ၁ ခု ေဆာက္ေပးပါ။


ေအာက္ပါအတိုင္းေပါ့။

touch auto.indirect

auto.indirect ထဲမွာ mount လုပ္မယ့္ mount point ရယ္ options ရယ္ source ရယ္ကို vi နဲ႔ ဝင္ၿပီး ေရးသြင္းပါ။
ဒီေနရာမွာ mount point က /mnt/public ဆိုပါစို႔။ * လို႔ ေရးပါ။ source ရဲ့ အဆံုးမွာ & လို႔ ေရးပါ။ ေအာက္ပါအတိုင္းေပါ့။

* -rw, sync, sec=krb5p server:/share/&

သို႔မဟုတ္

public –rw, sync, sec=krb5p server:/share/public

၅။ systemctl enable autofs လိ႔ု ရိုက္ enter ေခါက္ပါ။ systemctl start autofs လိ႔ု ရိုက္ enter ေခါက္ပါ။ systemctl
restart autofs လိ႔ု ရိုက္ enter ေခါက္ပါ။

ဒါဆိုရင္ server ဘက္က share ထားတဲ့ storage ကို indirect နဲ႔ auto mount တဲ့အပိုင္းၿပီးဆံုးပါၿပီ။

mount လုပ္ထားတာ မွန္မမွန္ mount –a ဆိုတဲ့ command အသံုးျပဳၿပီး ျပန္စစ္ၾကည့္ႏိုင္ပါတယ္။ mount –a ရိုက္

linux မွာ server ဘက္က share ထားတဲ့ storage ကို auto mount တဲ့အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

အားလံုး အဆင္ေျပၾကပါေစေနာ္။
mounting a SMB File System
ဒီတစ္ခါ ေရးမွာက ေတာ့ SMB Server ဘက္ကေန share ထားတဲ့ storage directory ကို client side မွာ ခ်ိတ္ဆက္တဲ့
အေၾကာင္းပါ။

mounting/mount လုပ္တယ္ဆိုတာ တစ္ဘက္က share ထားတဲ့ storage ကို မိမိ ဘက္ျခမ္း client side မွာ
တပ္ဆင္တာကို ဆိုလိုတာပါ။

mount လုပ္တာနဲ႔ ပတ္သက္လ႔ို ယခင္ post ေတြမွာလည္း ေရးခဲ့ဘူးပါၿပီ။ mount လုပ္နည္းေတြက တစ္ခုန႔တ
ဲ စ္ခု
အခ်က္အလက္ေရးသြင္းတဲ့ အပိုင္းမွာ အနည္းငယ္ လြဲရံုမွအပ အေျခခံ concept ခ်င္းက အတူတူပါပဲ။

SMB မွာဆိုရင္ mount လုပ္ရာမွာ uaer name နဲ႔ password ေလး ထည့္ေပးရတာ ၁ ခ်က္ ပိုလာတာ တစ္ခုပါပဲ။

ကဲ ! စလိုက္ရေအာင္။

ဒီလို ခ်ိတ္ဆက္ဖို႔အတြက္ SMB Server ဘက္ကေန ေအာက္ပါ အခ်က္အလက္ေတြကို ေပးထားပါလိမ့္မယ္။

၁။ share ထားတဲ့ directory လမ္းေၾကာင္း

၂။ user name, password နဲ႔ domain group

၃။ file system type (cifs)

စတာေတြကို ေပးထားပါလိမ့္မယ္။

အာ့ဒီေပးထားတဲ့ အခ်က္ေတြကို အသံုးျပဳၿပီး smb server ဘက္က share ထားတာကို မိမိ ဘက္မွာ mount
လုပ္ေပးရမွာပါ။

mount လုပ္ရာမွာ

၁။ ယာယီ mount

၂။ permanent mount

၃။ auto mount

ဆိုၿပီး ၃ ပိုင္းခြဲ တင္ျပသြားပါ့မယ္။

မစတင္မီ အရင္ဆံုး cifs-utils ဆိုတဲ့ package ကို အရင္ဆံုး install လုပ္ပါ။ ေအာက္ပါအတိုင္းေပါ့။

yum -y install cifs-utils

ဥပမာ အေနနဲ႔ server ဘက္ကေန ေအာက္ပါအတိုင္း share ထားတယ္ ဆိုပါစို႔။

၁။ /student ကို share ထားတယ္။


၂။ user name က tom, password က redhat, domain group က MYGROUO

၃။ file system type က cifs

ဒီအခ်က္ေတြကို အေျခခံၿပီး mount လုပ္ၾကရေအာင္။

#ယာယီ_mount or manual mount

၁။ root ေအာက္မွာ share ဆိုတဲ့ directory ေအာက္မွာ student1 အမည္န႔ဲ mount point တစ္ခု ေဆာက္ပါ။

mkdir /share

mkdir /share/student1

၂။ user name, password ေတြကို file တစ္ခု ေဆာက္ၿပီး သိမ္းပါ။

touch /secure.smb

၃။ vi /secure.smb လိ႔ု ဖြင့္ၿပီး ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

username=tom
password=redhat
domain=MYGROUP

ၿပီးရင္ secure.smb ကို ေအာက္ပါအတိုင္း permission ေပးပါ။

chmod 600 /secure.smb

၄။ terminal တြင္ ေအာက္ပါအတိုင္း ေရးသြင္းၿပီး mount ပါ။

mount -t cifs -o credentials=/secure.smb //server/student /student1

ဒါဆို server ဘက္က share ထားတဲ့ student ဆိုတဲ့ directory ကို ယာယီ mount ႏိုင္ပါၿပီ။

#permanent_mount or persistent mount

permanent mount ဖို႔ အတြက္ကေတာ့ /etc/fstab မွာ ေအာက္ပါအတိုင္း ဝင္ေရး ေပးရပါမယ္။

//server/student /share/student1 cifs credentials=/ecure.smb 0 0

ဒါဆို permanent mount လုပ္ျခင္း ၿပီးဆံုးပါၿပီ။

#auto_mount
၁။ /etc/auto.master.d ေအာက္မွာ indirect.autofs လိ႔ု ေဆာက္ေပးပါ။ indirect.autofs ထဲမွာ mount point နဲ႔ map
file လမ္းေၾကာင္းကို ေအာက္ပါအတို္င္း ေရးသြင္းပါ။

/share /etc/auto.indirect

၂။ /etc/auto.indirect ထဲမွာ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။

student1 -fstype=cifs,credentials=/secure.smv ://server/student

၃။ systemctl restart autofs လိ႔ု ရိုက္ enter ေခါက္ပါ။

ဒါဆို auto mount လုပ္ျခင္း ၿပီးဆံုးပါၿပီ။

ကဲ ! SMB server ဘက္က share ထားတဲ့ directory ကို မိမိဘက္ျခမ္းမွာ mount လုပ္ ခ်ိတ္ဆက္တဲ့
အေၾကာင္းကေတာ့ ဒီေလာက္ပါပဲ။

နည္းနည္း ရွဳပ္သလို ရွိေပမယ့္ ယခင္ mount လုပ္နည္း သင္ခန္းစာေတြကို ေၾကညက္ရင္ အဆင္ေျပမွာပါေနာ္။

အားလံုး အဆင္ေျပၾကပါေစ။
controlling boot process/changing target
ဒီတစ္ခါ linux မွာ boot process နဲ႔ ဆိုင္တာေတြကို ေလ့လာၾကတာေပါ့။

linux မွာ power off ဖို႔ အတြက္ systemctl poweroff ဆိုတဲ့ command ကို သံုးပါတယ္။

စက္ကို restart ခ်ဖိ႔ု အတြက္ systemctl reboot ဆိုတဲ့ command ကို သံုးပါတယ္။

system တစ္ခုလံုးကို ရပ္တန္႔လိုက္ဖို႔ အတြက္ systemctl halt ဆိုတဲ့ command ကို သံုးပါတယ္။

ၿပီးေတာ့ linux system ကို target ၄ မ်ိဳးနဲ႔ ဝင္ေရာက္ႏိုင္ပါတယ္။ target ဆိုတာ boot တက္ၿပီးတာနဲ႔ graphical နဲ႔
ဝင္သံုးတာ command line နဲ႔ ဝင္သံုးတာ၊ စသျဖင့္ ဆိုလိုတာပါ။ target ၄ မ်ိဳးကေတာ့ …

၁။ grapgical.target (GUI : Graphical User Interface နဲ႔ ဝင္သံုးတာပါ)

၂။ multi-user.target (CLI : Command Line Interface နဲ႔ ဝင္သံုးတာပါ)

၃။ rescue.target (basic system initialization နဲ႔ ဝင္သံုးတာပါ)

၄။ emergency.target (trouble shoot လုပ္ဖို႔ အတြက္ အေရးေပၚ mode နဲ႔ ဝင္သံုးတာပါ)

စသျဖင့္ ရွိပါတယ္။

target ေတြရဲ့ list ကို ေအာက္ပါ command နဲ႔ ဝင္ၾကည့္ႏိုင္ပါတယ္။

systemctl list-units --type=target --all

မိမိဟာ လက္ရွိ ဘယ္ target မွာ သံုးေနသလဲ သိခ်င္ရင္ ေအာက္ပါ command နဲ႔ ဝင္ၾကည့္ႏိုင္ပါတယ္။

systemctl get-default

မိမိ ရဲ့ အသံုးျပဳေနတဲ့ target ကို reboot လုပ္ပီးတာနဲ႔ permanent ေျပာင္းခ်င္ရင္ ေအာက္ပါအတိုင္း ေျပာင္းႏိုင္ပါတယ္။
ဥပမာ၊ CLI ကို ေျပာင္းမယ္ ဆိုပါစို႔။

systemctl set-default multi-user.target

မိမိ ရဲ့ အသံုးျပဳေနတဲ့ target ကို reboot မလုပ္ပဲ ခ်က္ခ်င္း ယာယီ ကူးေျပာင္းခ်င္တယ္ ဆိုပါစို႔။ isolate ဆိုတဲ့ option နဲ႔
တြဲၿပီး ေအာက္ပါအတိုင္း ကူးေျပာင္းႏိုင္ပါတယ္။

systemctl isolate multi-user.target

ကဲ ! ေနာက္တစ္မ်ိဳးကေတာ့။

system boot လုပ္ေနစဥ္ အခ်ိန္မွာ target ကို ေျပာင္းခ်င္ရင္ေတာ့ ေအာက္ပါအဆင့္ေတြအတိုင္း ေျပာင္းလဲရပါမယ္။


၁။ စက္ကို reboot လုပ္ပါ။

၂။ boot loader menu ေပၚလာခ်ိန္မွာ ႏွစ္သက္ရာ key တစ္ခုကို အျမန္ႏွိပ္လိုက္ပါ။

၃။ cursor ကို entry ဆီ ေရႊ႔ပါ

၄။ keyboard ေပၚက e ကို ႏွိပ္ပါ။

၅။ cursor ကို linux16 နဲ႔ စတဲ့ စာေၾကာင္းရဲ့ အဆံုးကို ပို႔ပါ။

၆။ စာေၾကာင္း အဆံုးမွာ ေအာက္ပါအတိုင္း ေရးသြင္းပါ။ rescue mode နဲ႔ ဝင္မယ္ဆိုပါစို႔။

systemd.unit=rescue.target

၇။ ctrl+x ကို ႏွိပ္ၿပီး ဆက္လက္ ဝင္ေရာက္ပါ။

ဒါဆို system boot လုပ္ေနစဥ္မွာ ႏွစ္သက္ရာ target ကို ေရြးၿပီး ဝင္ေရာက္ႏိုင္ၿပီေပါ့။

ကဲ ! linux မွာ boot process ကို control လုပ္တဲ့ အေၾကာင္းကေတာ့ ဒီမွ်ပါပဲ။

အားလံုး အဆင္ေျပၾကပါေစ။
root password recovery
linux မွာ root account ရဲ့ password ဟာ အေရးႀကီးပါတယ္။ အဲဒီ root password ကို ေမ့သြားၿပီ ဆိုပါေတာ့။

ဘယ္လို လုပ္ၾကမလဲ?

ဒီေနရာမွာ root password recovery ဟာ အေရးပါလာပါတယ္။

ကဲ ! စလိုက္ၾကရေအာင္။

root account ရဲ့ password ကို ေမ့သြားၿပီပဲ ထားပါ။

လုပ္ရမယ့္ အဆင့္ေတြက …

၁။ system ကို reboot ခ်ပါ။

၂။ ျပန္တက္လာလိ႔ု boot menu ေပၚလာရင္ ႀကိဳက္တဲ့ key တစ္ခုကို ႏွိပ္ၿပီး brake ဖမ္းလိုက္ပါ။

၃။ keyboard ေပၚက e ကို ႏွိပ္ပါ။

၄။ up down arrow key ေတြ သံုးၿပီး linux16 ဆိုတဲ့ စာေၾကာင္းကို ရွာပါ။ ေတြ႔ရင္ linux16 စာပိုဒ္ရဲ့ အဆံုးကို သြားပါ။

၅။ console=tty1 rd.break လိ႔ု ရိုက္ပါ။

၆။ ctrl+x ကို ႏွိပ္ၿပီး ေရွ႔ဆက္ပါ။

၇။ root အေနနဲ႔ login ဝင္သြားပါလိမ့္မယ္။

၈။ mount -oremount,rw /sysroot/ လို႔ ရိုက္ enter ေခါက္ပါ။

၉။ chroot /sysroot/ လိ႔ု ရိုက္ enter ေခါက္ပါ။

၁၀။ sh shell ထဲကို ဝင္သြားပါလိမ့္မယ္။

၁၁။ passwd root လို႔ ရိုက္ enter ေခါက္ပါ။

၁၂။ password အသစ္ ထည့္ေပးလိုက္ပါ။

၁၃။ / (root directory) ေအာက္မွာ ေအာက္ပါအတိုင္း file ၁ ခု ေဆာက္ေပးလိုက္ပါ။ touch /.autorelabel

၁၄။ ၿပီးရင္ exit လိ႔ု ရိုက္ enter ေခါက္ၿပီး ထြက္ပါ။

၅။ systemctl reboot လိ႔ု ရိုက္ enter ေခါက္ပါ။


password အသစ္န႔ဲ boot ျပန္တက္လာပါလိမ့္မယ္။

ဒါပါပဲ။

root account ရဲ့ password ေမ့သြားရင္ ဒီနည္းေလးကို သတိရၾကပါ လို႔။

အားလံုး အဆင္ေျပၾကပါေစ။

linux firewall
linux system administration နဲ႔ ပတ္သက္လ႔ို ဒါက ေနာက္ဆံုး post ပါ။ ဒီ post ေလးနဲ႔ နိဂံုးခ်ဳပ္ပါရေစ။

centos နဲ႔ redhat linux ရဲ့ firewall အေၾကာင္း concept ပါ။

firewall ၁ ခု အေနနဲ႔ အၾကမ္းအားျဖင့္ service ေတြကို ဖြင့္/ပိတ္ port ေတြကို ဖြင့္/ပိတ္၊ စတာေတြကို
ေဆာင္ရြက္ေပးပါတယ္။

firewall ကို graphical နဲ႔ လြယ္ကူစြာ အသံုးျပဳႏိုင္သလို၊ command line ကေနလည္း အသံုးျပဳႏိုင္ပါတယ္။

ကဲ ! စလိုက္ရေအာင္။

#graphical_user_interface

terminal ထဲမွာ firewall-config လို႔ရိုက္ enter ေခါက္လိုက္ပါ။ ဒါဆိုရင္၊ main firewall confifuration screen
ပြင့္လာပါလိမ့္မယ္။

default အေနနဲ႔ zone မွာ public zone ကို သတ္မွတ္ထားေပးပါတယ္။ လက္ရွိ မိမိ active ျဖစ္ေနတဲ့ zone ေပါ့။

services ထဲမွာ မိမိ ဖြင့္ခ်င္တဲ့ service ေတြကို အမွန္ျခစ္ေပးရံုပါပဲ။ ပိတ္ထားခ်င္ရင္ အမွန္ျခစ္ ျဖဳတ္ေပးရံုေပါ့။

port ေတြကို ဖြင့္ပိတ္လုပ္ခ်င္ရင္ port ဆိုတဲ့ tab ကိုသြားၿပီး အမွန္ျခစ္တာ ျဖဳတ္တာေတြ ျပဳလုပ္ေပးရံုပါပဲ။

ၿပီးရင္ မိမိ ေျပာင္းလဲလိုက္တာကို permanent သတ္မွတ္ဖို႔ အတြက္ အေပၚ menu မွာ ရွိတဲ့ Options > Reload
Firewalld ကို ႏွိပ္ေပးလိုက္ပါ။

လြယ္ကူပါတယ္ေနာ္။

#command_line_interface

ကဲ command line ကေန အသံုးျပဳပံုေလး ေလ့လာၾကည့္ရေအာင္။


၁။ မိမိ system မွာ ဘယ္ zone ေတြဟာ active ျဖစ္ေနလဲ ေအာက္ပါ command နဲ႔ ၾကည့္ရွဳႏိုင္ပါတယ္။

firewall-cmd --get-active-zones

၂။ မိမိ ဖြင့္ေစခ်င္တဲ့ service ေတြကို ေအာက္ပါအတိုင္း သတ္မွတ္ႏိုင္ပါတယ္။ ဥပမာ၊ public zone မွာ http, https, ftp
စတာေတြကို permanent ဖြင့္ေပးမယ္ ဆိုပါစို႔။

firewall-cmd --add-service={http,https,ftp} --permanent --zone=public

၃။ မိမိ ဖြင့္ေစခ်င္တဲ့ port ေတြကို add ေပးမယ္ဆိုပါစို႔။

firewall-cmd --add-port=port/protocol --zone=public

protocol ေနရာမွာ မိမိ အသံုးျပဳမယ့္ protocol ကို ထည့္ေပးရပါမယ္။

၄။ မိမိ ဖြင့္ထားတဲ့ service ေတြကိုလျပန္ျဖဳတ္ခ်င္ရင္ ေအာက္ပါ command ကို အသံုးျပဳရပါမယ္၊

firewall-cmd --remove-service=ftp --zone=public

၅။ မိမိ ဖြင့္ထားတဲ့ port ေတြကို ျပန္ျဖဳတ္ခ်င္ရင္ ေအာက္ပါ command ကို အသံုးျပဳရပါမယ္။

firewall-cmd --remove-port=161/protocol --zone=public

161 ဆိုတာ ဥပမာေပးထားတဲ့ port number ပါ။ protocol ေနရာမွာ port နဲ႔ သက္ဆိုင္တဲ့ protocol ကို
ထည့္ေပးရပါမယ္။

၆။ firewall ကို reload လုပ္ေစခ်င္ရင္ ေအာက္ပါ command ကို အသံုးျပဳရပါမယ္။

firewall-cmd --reload

၇။ firewall ကို restart လုပ္ခ်င္ရင္ေတာ့ systemctl restart firewalld လို႔ ရိုက္ enter ေခါက္ေပါ့။

၈။ firewall ကို မသံုးခ်င္ရင္ေတာ့ ေအာက္ပါအတိုင္းေပါ့။

systemctl disable firewalld

systemctl stop firewalld

ကဲ ! firewall အေၾကာင္း concept ေလးကေတာ့ ဒီေလာက္ပါပဲေနာ္။

ခုကစလို႔ linux system administration နဲ႔ သက္ဆိုင္တဲ့ post ေတြ ၿပီးဆံုးပါၿပီ။


အားလံုး အဆင္ေျပၾကပါေစ။

linux မွတ္စု
linux မွာ တခ်ိဳ႔ကိစၥေတြကို configure ခ်ရာမွာ သူ႔ရဲ့ config file ထဲ ဝင္ျပင္ေပးရတဲ့ အခါမ်ိဳးေတြ ရွိပါတယ္။

ဒါ့ေၾကာင့္ တခ်ိဳ႔ုကိစၥေလးေတြန႔ဲ သူတို႔ရဲ့ config file ရွိရာလလမ္းေၾကာင္းေလးေတြကို အတိုေကာက္


ေဖၚျပေပးလိုက္ပါတယ္။

၁။ linux machine ရဲ့ hostname ကို ျပင္ခ်င္တဲ့အခါ /etc/hostname မွာ ဝင္ေရာက္ ျပင္ဆင္ပါ။

၂။ ip အစား hostname နဲ႔ ping ခ်င္တဲ့အခါ /etc/hosts မွာ ဝင္ေရာက္ ျပင္ဆင္ပါ။

၃။ မိမိထည့္သြင္းထားတဲ့ DNS server address ကို စစ္ခ်င္တဲ့အခါ /etc/resolv.conf ကို ဝင္ၾကည့္ပါ။

၄။ ထည့္သြင္းလိုက္တဲ့ application package ေတြန႔ဲ သက္ဆိုင္တာေတြကို ဖတ္ခ်င္တဲ့အခါ /usr/share/doc မွာ


ဝင္ဖတ္ပါ။

၅။ user ေတြရဲ့ information ေတြကို သိခ်င္ရင္ /etc/passwd မွာ ဝင္ၾကည့္ပါ။

၆။ group နဲ႔ ဆိုင္တဲ့ info ေတြကို သိခ်င္ရင္ /etc/group မွာ ဝင္ၾကည့္ပါ။

၇။ ဘယ္ user သည္ ဘယ္ group မွာ ပါသလဲ သိခ်င္ရင္ /etc/gshadow မွာ ဝင္ၾကည့္ပါ။

၈။ normal user ကို wheel group ထဲ သြင္းတာေတာင္ sudo သံုးလို႔ မရေသးရင္ /etc/sudoers မွာ ဝင္ျပင္ပါ။

၉။ maximum user id maximux group id ေတြ၊ PASS_MAX_DAYS PASS_MIN_DAYS ေတြကို ျပင္ခ်င္ရင္


/etc/login.defs မွာ ဝင္ျပင္ပါ။

၁၀။ default permission ျဖစ္တဲ့ umask value ေတြကို ျပင္ဆင္လိုရင္ /etc/profile နဲ႔ /etc/bashrc မွာ ဝင္ျပင္ပါ။

၁၁။ ssh နဲ႔ သက္ဆိုင္တာေတြ အတြက္ /etc/ssh/sshd_config မွာ ဝင္ျပင္ပါ။

၁၂။ ssh connection ကို အသစ္ create ျပန္လုပ္ခ်င္တဲ့အခါ ~/.ssh/known_hosts ကို ဖ်က္ေပးပါ။

၁၃။ ssh id ကို ဝင္မယ့္ဘက္ျခမ္းဆီ copy လုပ္ဖို႔ ~/.ssh/id_rsa.pub ကို ကူးပါ။

၁၄။ rsyslog ေတြကို သီးျခား file တစ္ခုဆီ ညႊန္းခ်င္ရင္ /etc/rsyslog.d ေအာက္မွာ .conf file ေဆာက္ေပးပါ။

၁၅။ systemd-journal log ေတြကို မွတ္သားထားခ်င္ရင္ /var/log ေအာက္မွာ journal ဆိုၿပီး directory တစ္ခု
ေဆာက္ပါ။ ၄င္း directory ကို systemd-journal ဆိုတဲ့ group က ပိုင္ဆိုင္ေၾကာင္း chown root:systemd-journal
journal ; chmod g+s journal ဆိုတဲ့ command ၂ ခု နဲ႔ သတ္မွတ္ေပးပါ။

၁၆။ network ေတြကို ၾကည့္လိုရင္ /etc/sysconfig/network-scripts/ ေအာက္မွာ ဝင္ၾကည့္ပါ။


၁၇။ repository ရဲ့ repo file ေတြကို ျပင္ဆင္လိုရင္ /etc/yum.repos.d ေအာက္မွာ .repo နဲ႔ ဆံုးတဲ့ file ေတြ အျဖစ္
ဝင္ေဆာက္ပါ။

၁၈။ storage device ေတြကို ၾကည့္လိုရင္ /dev/ ေအာက္မွာ ဝင္ၾကည့္ပါ။

၁၉။ network time server နဲ႔ ခ်ိတ္ဖို႔ ip ထည့္ဖို႔ /etc/chrony.conf မွာ ဝင္ျပင္ပါ။

၂၀။ time နဲ႔ဆိုင္တာကို restart လုပ္ခ်င္ရင္ systemctl restart chronyd.service ကို သံုးပါ။

၂၁။ SELinux ကို disabled ေပးခ်င္ရင္ /etc/selinux/config မွာ ၀င္ျပင္ပါ။

၂၂။ storage တစ္ခုကို permanent mount ခ်င္ရင္ /etc/fstab မွာ ၀င္ေရးပါ။

၂၃။ direct map file နဲ႔ indirect map file ကို /etc/auto.master.d ေအာက္မွာ ၀င္ေဆာက္ပါ။

၂၄။ firewall ကို ပိတ္ထားခ်င္ရင္ systemctl disable firewalld systemctl stop firewalld။

အထက္မွာ ေဖၚျပထားတာေတြသည္ ဘယ္ကိစၥဆိုရင္ ဘယ္ေနရာ ဝင္ၾကည့္ရမယ္ ဆိုတာ အတိုေကာက္ မွတ္စုသေဘာ


ထုတ္ထားတာေလးေတြပါ။

အရွည္ကိုေတာ့ ယခင္တင္ေပးခဲ့တဲ့ chapter ေတြမွာ ေဖၚျပခဲ့ၿပီးပါၿပီ။

အားလံုးပဲ အဆင္ေျပပါေစ။
conclusion
ဘယ္အရာမွ ၿပီးျပည့္စံုတယ္လို႔ေတာ့ မရွိပါဘူး။

linux နဲ႔ ပတ္သက္တာေတြကို ပိုမို သိရွိေစဖို႔ internet, google search ကေန ရွာေဖြေလ့လာၾကပါလိ႔ု တိုက္တြန္းပါရေစ
ခင္ဗ်ာ။

အားလံုးပဲ ႏွဳတ္ဆက္ပါတယ္။ အဆင္ေျပၾကပါေစလို႔။ i am not perfect, but i am limited edition.

Xero Cool (Yin Thu) DSA (45th Intake), Mobile: 09778206233


Linux System Administration [Complete Edition] by Xero Cool (Yin Thu)
(DSA 45th Intake)
10th July, 2017

https://www.facebook.com/xerocool.99

Mobile : 09778206233

Mobile : 09778206233

https://www.facebook.com/xerocool.99

Linux System Administration [Complete Edition] by Xero Cool (Yin Thu)


(DSA 45th Intake)
10th July, 2017

You might also like