Linux Public Basics公共基礎
備註:本文以倒敘方式編輯,各版塊內容從下至上。比如先編寫的“ Linux文件系統”,而後是“系統管理命令整理”,故在本文表現爲後者位於前者的上面,以此類推。是爲了不斷更新內容而考慮。
20161108
備註1:20161108 15:54,系統學習過之後上述列出的內容就不再顯得生疏。建議先了解目錄樹和 Linux文件系統層次化標準(Linux FileSystem Hierarchy Standard(FHS)),然後再系統學習相應系統操作命令(關於應用服務的搭建可以在學習基礎操作命令後就開始)。(個人是先學習少數常用系統基礎的操作命令,然後直接上手應用服務的搭建,在實踐中練習並精進命令的使用,同時瞭解FHS&目錄樹,然後再系統全面地學習操作系統管理與維護、審計的命令以及應用服務如數據庫的內部操作命令)
2.本文開篇部分不夠系統化,是初學之初零散的記錄。重點部分在於系統操作命令的梳理和FHS!!!!!!
---------零散記錄已刪除,會在公共基礎--中階 博文中整理出來-------------------
20161021 08:39——11:21
系統管理命令整理
一、Linux操作系統基礎知識(系統管理常用命令)統籌總結
---Shell基本命令---
------------1----------------------------------------
備註:1.登錄操作系統之後,終端界面命令行的第一字符#代表是root用戶登錄;$代表是普通用戶登錄2.linux系統中“目錄”就是windows中的文件夾
cd:change directory 改變目錄即是換個工作場所
cd - ------ 返回到上一目錄
cd ~ 或者 cd [直接回車] ------進入當前用戶的主目錄、家目錄
cd 指定目錄路徑 進入相應的目錄中
備註:cd 自動識別目錄,如“cd /etc/sysconfig”等效於“cd /etc/sysconfig/”(注意後者末尾添加了正斜槓,自動識別存在的目錄的功能的還有mv、cp等,比如cp,將文件複製到另一路徑下若目的路徑下有同名子目錄名則不能複製成功;比如mv用於移動並重命名時若目的路徑下有與重命名同名的子目錄則重命名失效而是將文件原樣移動到目的路徑的同名子目錄中去)
ls [-l\a\F\d\h] 列出目錄內容, 選項分別表示長信息顯示、顯示含隱藏文件的所有文件、以後綴形式顯示文件類別、d:directory查看目錄屬性、以M字節顯示文件大小
ls -l 簡寫是ll,同效命令是vdir
備註:ls不僅可以查看當前目錄下的內容(文件或子目錄),還可以指定路徑目錄下的內容,並且幾乎所有命令都有類似“隔山打牛”的功能,如vim、more、source
du -sh /home/shixiu #查看目錄全體文件所佔空間大小,-s, --summarize,h,human,不使用-s選項的話將會顯示一個目錄下的所有分支子目錄的信息。
pwd: print working directory 打印/查看當前所在路徑或說目錄
----------2-------------------------------------------
cp :copy ,複製文件或目錄 支持複製並重命名(常用選項-r|R 、-a)
cp /etc/sysconfig/iptables /tmp/network #將指定路徑下的文件複製到別處並重命名
cp -r /home/shixiu/ /tmp/sxiu #將指定路徑下的目錄複製並重命名到別處,需選項-r
選項-r或-R:recursive遞歸 copy directories recursively
選項 -a :能夠複製文件及其屬性(創建時建、屬主)
mv:move,移動文件或目錄支持移動並重命名
mv /home/shixiu/abc /tmp/cba #將指定路徑下的文件移動並重命名到指定的別處(若不需要重命名則不需要在路徑中後綴重命名名稱)
mv /home/test/ /tmp/testdir #將指定路徑下的目錄一定並重命名到指定的別處(若不需要重命名則不需要在路徑中後綴重命名名稱),mv移動目錄不需要額外選項
備註:cp,將文件複製並重命名到另一路徑下若目的路徑下有同名子目錄或文件則:同名子目錄則不能複製成功(可見似乎目錄的存在性強於文件),同名文件則可覆蓋目的路徑下原有文件而複製並重命名成功;將目錄複製(-r)並重命名到另一路徑下若目的路徑下有與重命名名稱同名的子目錄或文件則:同名子目錄則重命名失效而將被複制目錄原樣複製到目的路徑的子目錄中,同名文件則也是不能成功的,根據提示即是說文件和目錄不能相互覆蓋(進一步,其實在同一個目錄中不存在文件與目錄同名);比如mv用於移動文件並重命名時若目的路徑下有與重命名同名的子目錄或文件則:同名子目錄則將文件原樣移動到目的路徑的同名子目錄中去,同名文件則可將移動文件覆蓋目的路徑中原有文件移動成功;mv用於移動目錄並重命名若目的路徑下有與重命名同名的子目錄或是文件則重命名失敗:同名子目錄則會移動其中做子子目錄,同名文件則因不能覆蓋提示失敗。
--------------3----------------------------------------------------
cat 一望到底地查看N個文本文件,不支持逆序顯示
cat -n file 查看文本文件並顯示行號
-n number 該參數用於顯示行號的方式瀏覽文件,類似瀏覽方式的還有head和tail
tac 一望到底地逆序查看N個文本文件,不支持顯示行號和逆序瀏覽
head 用於顯示N個文件的開頭-n用於指定顯示文件開頭n行,默認則是10行
tail 用於顯示N個文件的結尾,-n用於指定顯示文件末尾n行,默認則是10行;同時另一種常見用法爲“tail -f catalina.out”實時監視文件的增長,# -f:follow該參數用於監視File文件增長。
more 分頁方式查看N個文本文件,不支持顯示行號和逆序顯示
瀏覽過程中,按下空格向下翻動一頁,按Enter鍵向下滾動一行,按Q退出
/keyword #瀏覽過程中正斜槓+關鍵字的方式可以全文向下檢索關鍵字,檢索過程中按“n”來持續檢索過程,但是more瀏覽的檢索過程不高亮顯示關鍵字;相反的向上檢索more不支持!需要注意的是在檢索之初輸入關鍵字有誤要刪除時需要按組合鍵Ctrl+Backspace
less 分頁方式查看文本文件,不支持顯示行號,似乎不支持N個文本同時查看,支持逆序顯示
瀏覽過程中,按下空格向下翻動一頁,按Enter鍵向下滾動一行,按Q退出,此外通俗評價是“less的特性看起來更像是一個文本編輯器------只是去掉了文本編輯的功能”,它額外的特性有:(1)可以倒回去向上回顧;(2)支持方向鍵上下左右瀏覽以及主鍵盤字母鍵J向下K向上來控制瀏覽;(3)支持文本編輯的光標移動功能,比如按G跳轉到文件末尾行,按gg跳轉到文件第一行;(4)支持按照行號方式瀏覽文件(5)/keyword #瀏覽過程中正斜槓+關鍵字的方式可以全文向下檢索關鍵字,與more瀏覽檢索相同,額外的less瀏覽檢索的關鍵字會被高亮顯示,且less支持向上檢索,通過“?keyword”。
grep 不打開瀏覽全部文件,只輸出文件中檢索部分的內容
grep keyword testfile #從testfile中查看keyword所在行的內容
grep通常的組合用法:ps -ef |grep mysql;netstat -anp|grep 8080,即是將前者查找的結果作爲輸入從中檢索並只顯示出要查找的內容
--------------4---------------------------------------------------------
find 文件查找,在文件系統中
find /etc/sysconfig -name iptables #在指定路徑目錄下查找名爲iptables的文件
常用選項 :
-i ignore 忽略被查找文件名稱大小寫,結合-name選項使用(-iname)
-name 按照文件名稱查找,常結合"-i ”選項,即-iname,表示匹配文件名查找,並忽略文件名的大小寫
-t type 按照文件類型查找(選項可用參數:f:file普通文件、d:directory目錄文件、c:charactor字符設備文件、b:block塊設備文件、p:pipe有名|命名管道、l:linnk符號鏈接)
-atime access time 按照被訪問時間查找 -ctime change time 按照屬性被修改時間查找
-mtime modified time 按照內容被修改時間查找(+n大於n天、-n小於n天)
-user 按照文件所有者來查找
-inode 按照文件i節點來查找
locate 查找文件,快速地,在自動建立的文件名數據庫中(最小化安裝的centos6.4中沒找到該命令,安裝mlocate軟件包即可)
備註:1. 該命令由軟件包mlocate提供,安裝mlocate(安裝方式:yum -y install mlocate)即可使用locate命令,
2.初裝後,使用前需要更新文件名數據庫,命令是updatedb。
3.locate查詢的是自身的文件名數據庫,要注意的是該庫中不包含/tmp和/proc目錄下的文件,即是說locate無法查詢到該目錄下的文件。
which 查找程序文件 提供該文件的二進制可執行文件所在位置 和 命令的別名
which excutive-file-name#查找excutive-file-name可執行文件所在路徑
備註:若在它所查找的所有路徑下沒有發現要找的可執行程序則返回如下:
/usr/bin/which: no locate in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.7.0_72/bin:/root/bin)
whereis 查找程序文件 並提供該文件的二進制可執行文件、源代碼文件和使用手冊存放位置
whereis excutive-file-name #查找excutive-file-name可執行文件所在路徑
備註:若在它所查找的所有路徑下沒有發現要找的可執行程序則返回“excufile:”
grep 查找文件內容 *******
grep multiuser /etc/inittab #顯示"multiuser"所在行的內容
grep -i multiuser /etc/inittab #顯示"multiuser"所在行的內容,不區分關鍵字的大小寫
grep -v ^# /etc/inittab #不顯示以“#”爲首的行的內容(顯示/etc/inittab文件中非註釋內容,即只顯示有效信息 )
grep -rn "8081" /home/gastest/ #查看/home/gastest/下包含字符串8081的所有文件
grep -rn "port" /home/gastest/ #查看/home/gastest/下包含字符串port的所有文件
grep在系統管理中常被結合使用的兩條命令是:
ps -ef |grep mysql #查看相應的進程信息 和 netstat -anlp |grep8080 查看相應的端口信息
man 獲取命令和配置文件幫助
備註:最小化安裝的操作系統中沒有該命令,需要自行安裝,可執行如下命令來安裝:yum -y install man
whatis 獲取命令幫助| 命令簡要說明
whatis uname #命令直接以想要查詢命令名稱爲參數
apropos 獲取配置文件幫助| 配置文件簡要說明
apropos services
command --help|-h 獲取命令的常用選項信息
”------4------"PART4 小結:
--------------------------
find\locate;找文件
which\whereis;找命令:可執行文件
grep;找文件內容
----------------------------
man;命令幫助&配置幫助
whatis\apropos;命令幫助\配置幫助
cmd --help;命令常用選項
----------------------------
---文件&目錄管理---
touch 新建空文件|刷新文件時間屬性
mkdir 新建目錄(常用選項-p, --parents)
mkdir -p /tmp/abcparent/abc #欲新建一條全新的路徑需要用到-p選項
rm remove刪除[指定路徑]文件或目錄(常用選項-r:recursive,-f:force)
rm -rf /tmp/testfile # -r recursive代表遞歸執行相應的命令、-f force代表強制該操作
tar 打包|解包目錄或文件(常用選項-czvf|-xzvf)
tar cvf documentname.tar /tmp #將tmp目錄打包成名爲documentname.tar的包文件
tar xvf documentname.tar #將包文件拆開解開,-c create、-x extract提取、-f file指定文件
tar czvf documentname.tar.gz /tmp #將tmp目錄打包成名爲documentname.tar的包文件,並調用gzip將包文件壓縮爲documentname.tar.gz
tar xzvf documentname..tar.gz #調用gzip將壓縮文件解開,再將包文件打開
tar cjvf documentname.tar.bz2 /tmp #將tmp目錄打包成名爲documentname.tar的包文件,並調用bzip2將包文件壓縮爲documentname.tar.bz2
tar xjvf documentname.tar.bz2 #調用bzip2將壓縮文件解開,再將包文件打開
備註1:從tar命令說明一下linux系統管理中路徑用法的特殊性和一般性。舉例如下:
在/tmp路徑下存在XYZ.tar.gz包文件,解壓縮的命令可寫作:tar xzvf XYZ.tar.gz 和 tar xzvf /tmp/XYZ.tar.gz 。其中前者就是特殊寫法,缺省了文件所在路徑(表明壓縮包文件在當前路徑下)的tar命令,後者是一般寫法,指明瞭壓縮包文件所在的絕對路徑。如果壓縮包文件就在要解壓到的當前路徑下,一般會缺省其路徑,命令和參數後直接跟壓縮包名稱即可,但是要明白這是一種缺省路徑的特殊寫法,要明白與之關聯的一般寫法,這樣就可以思考下一個問題:壓縮包文件位於/usr/local路徑下,要在/tmp路徑下執行解壓縮,將其解壓到/tmp路徑下,命令如何書寫?——首先進入到/tmp路徑下,而後執行 tar xzvf /usr/local/XYZ.tar.gz #指定壓縮包文件所在路徑即可,默認解壓到當前路徑下。
備註2:關於Linux中的壓縮文件常見格式有:gzip(後綴爲.gz)、bzip2(後綴爲.bz2)、xz(後綴爲.xz)、zip(後綴爲.zip)等
前兩者格式的文件通常通過tar命令即可以管理,見如上相應命令的使用。着重說明後兩者,分別是各自使用對應的工具進行管理,其中unzip無法通過tar命令調用對應工具來間接管理,如下:
參考資料: tar.xz文件如何解壓
http://blog.csdn.net/rheostat/article/details/7614451
Linux操作系統中,*.zip、*.tar、*.tar.gz、*.tar.bz2、*.tar.xz、*.jar、*.7z等格式的壓縮與解壓
http://www.cnblogs.com/yejianfei/p/3351626.html
xz格式
創建tar.xz文件:只要先 tar cvf xxx.tar xxx/ 這樣創建xxx.tar文件,然後使用 xz -z xxx.tar 來將 xxx.tar壓縮成爲 xxx.tar.xz
解壓tar.xz文件:先 xz -d xxx.tar.xz 將 xxx.tar.xz解壓成 xxx.tar 然後,再用 tar xvf xxx.tar來解包。
或者藉助tar工具來間接管理:
創建tar.xz壓縮文件:tar cvJf vlc-2.2.4.tar.xz
解壓縮tar.xz文件:tar xvJf vlc-2.2.4.tar.xz
zip格式
壓縮: zip -r [目標文件名].zip [原文件/目錄名]
解壓: unzip [原文件名].zip
chown、chgrp改變文件所有權
chown -R owner:[group] file #將指定路徑下的文件所有者、所屬組分別改爲owner和
Group(該命令等效於chown -R [owner].[group] file)其中owner和group都是可選項只有owner時不需要間隔號但只有group時前面間隔號不可省略
chgrp -R group file #等效於chown -R .group file ,其中"-R ”爲recursive,,表示遞歸,這裏是遞歸地改變屬性。
chmod 修改文件權限
常用命令格式爲:
chmod 755 file #將指定路徑下的file權限修改爲三位八進制數755(r-4,w-2,x-1)三位權限值依次屬於所有者、所屬組、其他人
chmod u+x file #將指定路徑下的file給其所有者附加可執行權限
chmod g-x file#將指定路徑下的file所屬組的可執行權限取消掉
chmod u+x,g-w file #將指定路徑下的file的執行權限賦予所有者並同時去掉所屬組對該文件的寫權限。同時授權操作命令中要使用逗號分隔授權對象。
chmod o=g file #將指定路徑下的file其他人的權限設置爲與所屬組相同
chmod a-x file #將指定路徑下的file所有人對其的可執行權限
ln 建立鏈接(-s選項表示建立軟連接 不加選項則表示建立硬鏈接)
ln -s /var/log/secure safe#未指定路徑下的文件建立名爲safe的符號軟鏈接
輸出重定向:>或>> 將程序的輸出轉移到另一個地方去
lastb > /home/shixiu/lastblog #將lastb的輸出重定向到指定路徑下的文件中,若指定路徑中有同名文件則“>”會刪除原文件內容用輸出內容替換之。
lastb >> /home/shixiu/lastblog #將lastb的輸出重定向到指定路徑下的文件中,若指定路徑中有同名文件則“>>”會將輸出內容追加到原有文件內容的後面。
管道:| 將一條命令的輸出連接到另一條命令輸入
常見用法
ps -ef | grep mysql
……
---磁盤管理---
mount /dev/sda3 /mnt/sdadir #將分區掛載到指定的目錄中
mount -r /dev/sda3 /mnt/sdadir #將分區以只讀方式掛載到指定的目錄中
df #查看磁盤使用情況(更善於查看磁盤剩餘空間真實大小)
常用選項 -h 以人類常用單位M、G標示、顯示文件大小
du #查看文件系統信息(更善於查看文件系統所佔空間真實大小)
常用選項 -h 以人類常用單位M、G標示、顯示文件大小
dd if=/dev/cdrom of=CD.iso #將一張CD完整的轉出未iso鏡像文件
if選項指定輸入端的文件系統 of選項用於指定其輸出端
---用戶管理---
useradd、passwd、usermod、id、
gpasswd -a shixiu sharinggrp #將用戶shixiu加入到用戶組sharinggrp,非修改默認組!
……
---權限管理---
20161101 14:13——
特殊權限(ACL、SetUID&SetGID&StickyBIT、chattr、sudo)
1.getfacl #後跟目錄名稱查看目錄的設定的acl權限
setfacl #用於設定目錄的acl權限,解決所有者|所屬組|其他人三項權限項不足的問題。注意-m後的“u”或“g”字符前沒有短劃線!!(不確定是否只針對目錄設定)
setfacl -m u:shixiu:rx /home/samba #賦予普通用戶shixiu對該目錄的瀏覽進入權限
setfacl -m g:shuihu:rwx /home/samba #賦予所有者所屬組之外的shuihu用戶組的非其他人權限,即使shuihu用戶組不是/home/samba目錄的所屬組,也能通過賦予的權限,正常使用該目錄
getfacl samba #查看指定目錄acl權限設定的詳情,直接寫目錄名,不加絕對路徑,但是加了絕對路徑也無妨。不同路徑下的同名目錄都設定各自的acl權限,查詢效果何如??待檢驗。
ACL最大權限:“getfacl directory”中mask是用來指定用戶的最大有效權限的
setfacl -m m:rx /home/samba #對指定目錄設定其mask參數值即最大有效權限,該權限不影響所有者權限只限制所屬組和acl權限用戶[組](需驗證是否是隻修改了該目錄的mask值(而不影響其他目錄的mask),並且該mask值的修改生效的時限)
setfacl -x u:shixiu /home/samba #刪除指定用戶的acl權限,注意相比添加acl權限,這裏刪除時不用註明權限項
setfacl -x g:shuihu /home/samba
setfacl -b /home/samba #刪除指定目錄所設定的所有acl權限
默認ACL權限和遞歸ACL權限(這兩項都只針對目錄)
setfacl -m u:shixiu:rx -R /home/samba #遞歸acl權限設定,針對當前的現有目錄以及子文件。要注意“-R”只能在當前位置。 #將指定目錄及其子文件的acl權限賦予用戶shixiu
setfacl -m d:u:shixiu:rx -R /home/samba #默認acl權限設定,針對未來的新建子目錄和子文件。如果給父目錄設定了acl權限那麼該目錄下新加的文件也將自動具有acl權限特徵。該命令中的“-R”作用是針對子目錄的遞歸。
2.SetUID&SetGID&StickyBIT
Setuid ,只針對可執行程序文件,並且執行|運行該可執行文件的用戶具備對該文件的執行權限。如此,當具備上述條件的普通用戶執行該文件時(過程中)將臨時以該文件的所有者的身份來執行該可執行文件|程序。(具有setuid屬性的可執行程序的特徵是所有者權限項中x被s(小寫)代替即“rwsr-xr--”,如熟悉的passwd命令,但是普通用戶執行該可執行程序|命令的時候(雖臨時升級爲了root)卻只能修改自己的密碼,值得研究)
SUID的設定——4代表SUID(認爲,因二進制100,即22=4)
chmod u+s 文件名 #添加文件的SUID權限
chmod 4755 文件名
chmod u-s 文件名 #去掉文件的SUID權限
chmod 755 文件名 #去掉SUID權限,直接指回來
Setgid,針對可執行程序文件以及目錄。(1)針對文件的時候相應要求和效果|作用同SetUID(熟悉的有SGID特徵的是locate程序);(2)針對目錄的時候,該作用生效的要求|前提是普通用戶對目錄至少具備“r-x”權限,當普通用戶在該目錄中的時候它的有效組則變成該目錄的所屬組,(若目錄所屬組具備w權限或該普通用戶對目錄有w權限)該用戶寫入|新建文件的時候,新建文件的屬性爲所有者爲該用戶,所屬組爲該目錄的所屬組。——這點,其實用於samba文件共享中會有一點用處,比如,不是sharingfiles目錄所屬組的用戶(通過acl)對目錄具備了“rwx”權限,那麼sharingfiles的所屬組sharinggrp中的成員也能對他新建的文件有一定的權限。
SGID的設定——2代表SGID(認爲,因二進制010,即21=2)
chmod g+s 文件名 #添加文件的SGID權限
chmod 2755 文件名
chmod g-s 文件名 #去掉文件的SGID權限
chmod 755 文件名 #去掉SGID權限,直接指回來
Sticky BIT,只針對目錄生效。
Sticky BIT的設定——1代表Sticky BIT(認爲,因二進制001,即20=1)
3.chattr與lsattr命令
參考資料:http://www.ha97.com/5172.html
有時候你發現用root權限都不能修改某個文件,大部分原因是曾經用chattr命令鎖定該文件了。chattr命令的作用很大,其中一些功能是由Linux內核版本來支持的,不過現在生產絕大部分跑的linux系統都是2.6以上內核了。通過chattr命令修改屬性能夠提高系統的安全性,但是它並不適合所有的目錄。chattr命令不能保護/、/dev、/tmp、/var目錄。lsattr命令是顯示chattr命令設置的文件屬性。
chattr +i /etc/resolv.conf #用chattr命令防止系統中某個關鍵文件被修改
chattr -i /etc/resolv.conf #要想修改此文件就要把i屬性去掉
chattr +a /var/log/messages # 讓某個文件只能往裏面追加數據,但不能刪除,適用於各種日誌文件
chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…
最關鍵的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]這些字符組合的,這部分是用來控制文件的
屬性。
+ :在原有參數設定基礎上,追加參數。
- :在原有參數設定基礎上,移除參數。
= :更新爲指定參數設定。
A:文件或目錄的 atime (access time)不可被修改(modified), 可以有效預防例如手提電腦磁盤I/O錯誤的發生。
S:硬盤I/O同步選項,功能類似sync。
a:即append,設定該參數後,只能向文件中添加數據,而不能刪除,多用於服務器日誌文件安全,只有root才能設定這個屬性。
c:即compresse,設定文件是否經壓縮後再存儲。讀取時需要經過自動解壓操作。
d:即no dump,設定文件不能成爲dump程序的備份目標。
i:設定文件不能被刪除、改名、設定鏈接關係,同時不能寫入或新增內容。i參數對於文件 系統的安全設置有很大幫助。
j:即journal,設定此參數使得當通過mount參數:data=ordered 或者 data=writeback 掛 載的文件系統,文件在寫入時會先被記錄(在journal中)。如果filesystem被設定參數爲 data=journal,則該參數自動失效。
s:保密性地刪除文件或目錄,即硬盤空間被全部收回。
u:與s相反,當設定爲u時,數據內容其實還存在磁盤中,可以用於undeletion。
各參數選項中常用到的是a和i。a選項強制只可添加不可刪除,多用於日誌系統的安全設定。而i是更爲嚴格的安全設定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE處理能力(標識)的進程能夠施加該選項。
……
---軟件包管理---
20161104 10:16——11:30;11:50——12:30;13:13——17:33
軟件包主要有rpm包和XYZ.tar.gz或XYZ.tar.bz2這樣的壓縮包(二進制包或者源碼包),其中RPM,即Redhat Package Manager。
1. RPM包文件的命名規則:
httpd-2.2.15-29.el6.centos.i686.rpm #包名、版本號、軟件發佈次數、適用平臺、硬件、包擴展名
hunspell-bn-0.04-2.el6.noarch.rpm #noarch表示對硬件平臺無要求
備註:對於未安裝的rpm包執行操作需要使用包全名,如安裝和升級。對於已安裝的rpm包執行操作使用包名即可,如查詢、卸載。
2. RPM包管理-- RPM命令管理(安裝、卸載、查詢、校驗和文件提取命令)
備註:安裝rpm包需要進入到Packages目錄中,一般是鏡像文件中的目錄。
rpm -ivh httpd-2.2.15-29.el6.centos.i686.rpm #安裝rpm包 需全名
rpm -Uvh httpd-2.2.15-29.el6.centos.i686.rpm #-Uvh安裝過程中更新包文件
備註:XYZ.so.number #庫依賴文件so,share object(1)可在www.rpmfind.net中查找該共享模塊所在的軟件包
(2)更推薦在系統中使用“yum whatprovides */XYZ.so”命令查找該共享模塊包含在哪個軟件包中(相比前者的優勢不言而喻:自動解除依賴,全自動安裝)
rpm -e 軟件文件包名 #卸載方式安裝的軟件,e,erase。
yum -y install 軟件包名 #yum自動給解決rpm包依賴並安裝
---------=-=====-------------===========-----------------------------------
-- 查詢命令(qa、qi[p]、ql[p]、qf、qRp)
rpm -q 包名 #查詢指定的軟件包是否安裝,q,query,查詢。
rpm -qa #不加參數,添加選項a,查詢全部已安裝的軟件包,a,all。
rpm -qa |grep httpd #查詢所有與httpd相關的包,通過管道符的作用。
rpm -qi 包名 #查詢已安裝軟件包的信息,i,information。
rpm -qip 包全名 #查詢未安裝軟件包的信息,補充加追選項p,package。
rpm -ql 包名 #查詢已安裝的包中文件的安裝位置,l,list。
rpm -qlp 包全名 #查詢未安裝的包中文件將會安裝的位置,p,package。
rpm -qf 系統文件名 #查詢系統文件所屬於的RPM包,由哪個RPM包產生的,f,file。
rpm -qR 包名 #查詢已安裝的軟件包的依賴性,R,reqiures。
rpm -qRp 包全名 #查詢未安裝的軟件包的依賴性,p,package。
rpm -q --whatrequires 包名 #查詢已安裝的軟件包的被哪些軟件所依賴
-- RPM包的校驗 和 RPM包中文件提取
rpm -V 已安裝的包名 #V,verify,比如可以通過輸出結果校驗包中文件內容是否有改動。
rpm2cpio [絕對路徑]包全名| cpio -idv . 文件所在絕對完整路徑
#其中一般需要從鏡像文件中指定包全名的絕對路徑;其中的-idv和“.”均可認爲是選項,“.”指定提取出的文件放置位置
#明白了管道符的功能這條命令就好理解了--從管道符將整條命令分割開分別理解。
#rpm2cpio,用於將rpm包轉換爲cpio格式。
#cpio是一個標準工具,用於創建軟件檔案文件(將文件寫入檔案包中)和從檔案中提取文件。常用選項:i,copy-in模式,還原;d,directory還原時自動創建目錄;v,verbose顯示還原過程
#解構之後再綜合理解:cpio將從rpm轉化過來的文檔包中讀取數據並從中提取出指定文件(指定的文件通過他所在的絕對路徑+文件名的完整路徑表示,被轉換爲cpio格式的rpm包也需要如此描述)放置到指定位置
小結:Rpm包的管理之rpm命令
1.Rpm查詢包的常用命令
rpm -q/a/i/p/l/f/R
分別是查詢/所有/information/未安裝包package/list包所含文件/file所屬包/查詢包依賴Reqiures
2.手動rpm包安裝過程中遇到模塊依賴即庫文件依賴時可以將該模塊名複製到www.rpmfind.com去search該文件所屬包文件或者使用命令yum provides */ABC.so直接查到包含指定模塊的安裝包文件,相比來說通過yum方式來處理依賴模塊更方便。
.rpm包文件的提取的命令
rpm2cpio 包所在絕對路徑及包全名 | cpio -idv . 文件絕對路徑
#將rpm包文件轉換爲cpio文件 提取該包中的某絕對路徑下的文件 到 當前目錄中(.)
3. RPM包管理 -- Yum命令管理
.repo,repository資源儲藏室。Yum源配置文件在/etc/yum.repos.d目錄下,默認使用在線yum源容器 |配置文件*base*。
常用yum命令(yum中沒有包全名的事兒 使用包名即可查詢、安裝、卸載、升級)
yum list #查詢所有可用軟件包列表,因爲使用的是在線yum源,所以在任何地方執行該命令都可以
yum search 包名 #查詢與軟件包相關的文件——查詢與關鍵字香關的軟件包及軟件包簡要功能說明
yum -y install 包名 #安裝rpm軟件包,自行解決依賴問題,y,yes,自動確認。
yum -y update 包名 #更新指定的軟件;不指定軟件包名稱時會將系統包含內核在內所有軟件徹底更新一遍。內核更新後需要作一定的配置,系統才能正常使用。
yum -y update #升級所有包,改變軟件設置和系統設置,系統版本內核都升級
yum -y upgrade #升級所有包,不改變軟件設置和系統設置,系統版本升級,內核不改變
yum -y remove 包名 #卸載指定的軟件,一般不採用,會連帶卸載。
yum grouplist #查看所有可用軟件組
yum groupinstall 軟件包[英文]組名 #軟件包組安裝,可以配合-y選項自動確認安裝;需要注意的是,若軟件包組名中間有空格 則需要使用雙引號將其標記起來!!
yum groupremove 軟件包組名 #組件形式卸載
yum whatprovides來反查指定工具名在哪個安裝包裏 或者是 反向查詢指定的共享模塊“.so”文件包含在那個軟件包裏。
yum whatprovides */nslookup #反查nslookup在哪個安裝包裏。該命令現在簡化爲 yumprovides */nslookup ,二者等效,均可用。
yum deplist 包名 # List a package's dependencies
-- 光盤yum源搭建
(1)掛載光盤
mount /dev/sr0|iso9660 /mnt/cdrom
(2)讓網絡yum源失效
將原所有base等容器|網絡yum源配置文件(CentOSCentOS-Base.repo CentOS-Debuginfo.repo CentOS-Vault.repo)重命名備份起來,除了CentOS-Media.repo配置文件。
(3)修改光盤yum源配置文件(*Media*)使其生效
添加或修改效果爲“enable=1”#生效開關開啓
baseurl=file:///mnt/cdrom #地址爲光盤的掛載地址|自己的光盤所掛載到的絕對路徑
備註: 配置文件中其他地方儘量不要改動!或嚴格遵守配置文件的註釋等規則。
4. 源碼包與RPM包的區別
(1)包文件本質的區別
前者可查看源代碼數據需編譯安裝耗時;後者不能查看但安裝快捷
(2)包文件安裝位置的區別(前者可以自定義;後者包中各文件遵守默認安裝位置)
源碼包安裝位置一般是在/usr/local目錄下(包含配置文件等全部位於該目錄下)。
源碼方式安裝中源碼目錄中的INSTALL爲安裝說明,README爲使用說明。
5. 軟件包的腳本安裝方式
一般爲特殊軟件廠商爲推廣產品而編輯的建議安裝腳本,後綴名爲“.sh”,如webmin工具的安裝軟件包。
備註:基於如上關於軟件包的描述,現在簡要總結(1)RHEL/CentOS/Fedora系統中軟件包的格式最爲常見的主要有:.rpm格式、.tar.gz|.tar.bz2兩種 (2)RHEL/CentOS/Fedora系統中軟件的安裝方式主要有:<1>rpm格式軟件包的安裝、<2>.tar.gz|.tar.bz2格式軟件包的安裝,其中前者進一步細分爲
<1.1>rpm方式安裝rpm格式的軟件包及手動安裝其依賴、<1.2>yum方式方式安裝rpm軟件包並全自動分析安裝及其依賴;後者進一步細分爲<2.1>[二進制壓縮包]解壓即安裝、<2.2[源代碼包]編譯安裝。 需要注意的是,如上的軟件包格式的描述與軟件包的安裝是混雜了的,先前一直在介紹軟件包格式,而後在“5”中出現“軟件包的腳本安裝方式”,所以纔在這裏作簡要總結,作爲前面只講格式而未講其安裝方式的補充,而具體格式軟件包的安裝則參考如上各個格式軟件包介紹中關於軟件包安裝的命令。
6.epel,yum的EPEL軟件源
EPEL (Extra Packages for Enterprise Linux,企業版Linux的額外軟件包),是Fedora小組維護的一個軟件倉庫項目,爲RHEL/CentOS提供他們默認不提供的軟件包。這個源兼容RHEL及像CentOS和Scientific Linux這樣的衍生版本。RHEL/CentOS系統有許多第三方源,比較流行的比如RpmForge,RpmFusion,EPEL,Remi等等。如果系統添加了多個第三方源,可能會因此產生衝突.已知的就有Rpmforge與EPEL會產生衝突。
備註:可以很容易地通過yum命令從EPEL源上獲取上萬個在CentOS自帶源上沒有的軟件。EPEL提供的軟件包大多基於其對應的Fedora軟件包,不會與企業版Linux發行版本的軟件發生衝突或替換其文件。比如要在CentOS上安裝pptpd服務,但是默認的是不能通過yum方式直接安裝的,除非,安裝配置了epel軟件源。epel軟件源是對yum軟件包資源的一個擴展或補充。使用EPEL軟件源需要先安裝,安裝完畢後該資源的使用同樣通過yum實現,和其他rpm軟件包的yum管理方式一致。
EPEL軟件源的安裝和使用
首先要下載EPEL的rpm安裝包。
wget http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm #下載CentOS 版本所對應的EPEL 的版本,這裏是CentOS6對應的epel的rpm包
而後安裝該rpm軟件包 ,先安裝其他rpm包一樣
rpm -ivh epel-release-6-8.noarch.rpm
最後,檢查repolist,查看安裝效果
安裝好EPEL 源後,用yum 命令來檢查是否添加到源列表:yum repolist,EPEL已經在repo 列出,並且顯示提供的軟件包數量,證明EPEL已經安裝到CentOS了。 EPEL源的配置安裝到了 /etc/yum.repos.d/下,即文件名爲epel.repo 的文件。
EPEL軟件源的使用同CentOS-Base.repo源的使用是一致的,只是提供了一般yum源中沒有的軟件資源而已,如epel安裝成功後,可以直接使用yum方式安裝pptpd軟件包了: yum -y install pptpd
參考資料:
如何在CentOS 5/6上安裝EPEL源
http://os.51cto.com/art/201312/420725.htm
http://www.binarytides.com/setup-epel-repository-centos/
SwitchingToUbuntu/FromLinux/RedHatEnterpriseLinuxAndFedora
http://blog.sina.com.cn/s/blog_49b1f7210102vepr.html
https://help.ubuntu.com/community/SwitchingToUbuntu/FromLinux/%20RedHatEnterpriseLinuxAndFedora
---進程管理---
pkill
……
---系統功能管理---
參考:Linux常用命令大全http://www.php100.com/html/webkaifa/Linux/2009/1106/3485.html
date 顯示系統日期
cal 2007 顯示2007年的日曆表
date 041217002007.00 設置日期和時間 -月日時分年.秒
date -s 17:45 設置系統時間
clock -w 將時間修改保存到 BIOS
shutdown -h hours:minutes & 按預定時間關閉系統
---應用服務管理---
源碼方式安裝應用服務基本操作:
./configure #預編譯,詳細選項使用“./configure --help”查詢
make #編譯 ;make install #安裝 或合二爲一make && make install
make clean #清除make編譯產生的文件或影響
make mrproper #刪除所有的編譯生成文件,還有內核配置文件,再加上各種備份文件
make distclean #mrproper刪除的文件,加上編輯備份文件和一些補丁文件。
環境變量
……
---網絡管理---
20161107 p.m.
十進制、二進制轉換;IPv4(32位標誌);IP &子網掩碼;子網劃分、網絡地址、廣播地址(默認IP位段:網絡地址、網關、廣播地址、子網掩碼);ARP
20161108 09:18——11:30
0. 純粹網絡管理命令
http://blog.163.com/liangtianfeng@126/blog/static/21597421200832573836931/
arp -a #查看arp緩存表 #參考上鍊接所述 綁定mac&IP有效阻止ARP攻擊
arp -d #清除arp緩存
arp -s #用來手動綁定網絡地址(IP)對應的物理地址(MAC)
你可以用arp -s來手動綁定.舉例..你網關的IP是192.168.0.1,網關的MAC地址是00-11-22-aa-bb-cc那麼你可以使用"arp -s 192.168.0.1 00-11-22-aa-bb-cc"然後你用arp -a就可以看到
Internet Address Physical Address Type
192.168.0.1 00-11-22-aa-bb-cc static
注意,手動綁定的類型是static自動學習到的是dynamic
1.網卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth
ifconfig ethX up 或 ifup ethX #啓用指定網卡
ifconfig ethX down 或 ifdown ethX #禁用指定網卡
ifconfig eth0:0 192.168.17.17 #爲一塊網卡配置多個IP地址
主機名配置文件 /etc/sysconfig/network 主機&域名配置文件/etc/hosts
hostname Urhostname #命令行配置主機名,臨時生效
hostname #命令行查看主機名
備註:建議根據服務器主機的實際用途來命名主機名。如tomcat、dns、memcache、
mysqlbackup、iptables|firewall、vpn、fileshare等。
DNS配置文件 /etc/resolv.conf
防火牆配置文件 /etc/sysconfig/iptables
netstat -nlp #查看所有存在監聽進程的端口
netstat -rn #查看路由表,可以查看到網關,等同於route命令的“route -n”。
寵用選項(可研究其他可用選項以開發更多功能)
-t 列出 TCP協議的連接
-u 列出 UDP協議的連接
-n, --numeric don't resolve names
-l, --listening display listening server sockets
-a, --all, --listening display all sockets (default: connected)
-p, --programs display PID/Program name for sockets
Netstat連接數統計|壓力測試
netstat -an |grep ESTABLISHED |wc -l #將連接列出來並進一步統計出數字
nslookup www.baidu.com #可以逆向查到該域名對應的IP地址
nslookup #直接回車然後在“>”提示符後輸入“server”可以查看本機配置所配置的DNS
ping 域名或IP -c 4 #ping指定的域名或IP,選項設定ping次數
telnet 域名或IP 端口 #遠程管理與遠程主機端口探測命令
traceroute 選項 IP或域名#路由跟蹤命令;-n,使用IP,不使用域名 速度更快,在鏈路中的路由主機不禁ping的情況下很有用(對應在windows是tracert命令)
wget url/file #下載命令
tcpdump -i eth0 -nnX #linux系統中的抓包[工具]命令,選項nn,用IP地址方式監聽;X用於拆解數據包
2.虛擬機Vmware網絡配置
2.1.ONBOOT=yes
2.2. service network restart
2.3.vm主機網絡類型選取(保證vm主機的網卡設備狀態爲“已連接”)
2.3.1橋接:直接連接到物理網絡(B) ------對應宿主主機的實際有線|無線網卡
2.3.2.NAT:使用已共享的主機IP地址(N) ------對應宿主主機的Vmnet8
2.3.3.Host-only:與主機共享一個私有網絡(H) ------對應宿主主機的Vmnet1
備註:1.VMnetX是宿主主機的虛擬網卡,不是VMware主機的。
2.NAT方式下,依據VMnet8的網段設定Vm主機的IP同段即可實現互通。
2.4.如果選擇橋接方式聯網,需要根據宿主主機是有線|無線聯網相應調整要橋接到哪一個網卡,設定路徑如下:
編輯------虛擬網絡編輯器------VMnet信息------橋接(B)“已橋接到”------下拉項選定
備註:如果VMnet信息選項卡部分是灰色不可用,一般是虛擬機出錯,設“恢復默認”選項來修復。若修復失敗,需要將VMware徹底|完完整整卸載重裝,卸載不徹底重裝也會失敗,試百度vm卸載清理工具。
2.5.克隆主機聯網設定(鏈接克隆&完整克隆,前者節省空間)
克隆主機的聯網初始化
克隆機中刪除網卡配置文件中的mac地址行HWADDR;刪除對應的rules配置文件;重新啓動克隆機操作系統
2.5.1 vim /etc/sysconfig/network-scripts/ifcfg-ethX #編輯配置文件刪除MAC行
2.5.2 rm -rf /etc/udev/rules.d/70-persistent-net.rules #刪除網卡和MAC地址綁定文件
2.5.3 shutdown -r now #重啓系統,UUID會重新計算一個新的參數值
3.網絡應用(SSH、DHCP、VSFTP、SAMBA)
SSH相比telnet、ftp、http[相比安全協議是https]等是將數據進行加密傳輸。
SSH加密方式、配置文件[禁止root用戶登錄]……
SSH常用命令:
ssh 用戶名@主機名或IP
scp 用戶名@主機名或IP/指定文件位置+文件.#將遠程主機指定位置中的文件複製到本機當前位置
scp -r /root/123 用戶名@主機名或IP/指定文件位置
sftp 用戶名@主機名或IP
……
---安全管理---
防火牆iptables、selinux
……
20161021 16:40——17:49
二、Linux操作系統管理維護常用命令高階整合
------- Linux系統一般常用管理命令-------
yum list |grep redis #查看可用軟件包以及軟件包所屬軟件源
yum search redis #查看軟件包名稱及該軟件包的簡要功能說明
ps -ef |grep mysql #查看mysql進程信息(含PID),查看[檢索]進程
netstat -anp |grep 8080 #查看端口8080的值守監聽進程
ss -anp |grep 8080 #查看端口8080的值守監聽進程
netstat -nlp #查看所有存在監聽進程的端口
寵用選項(可研究其他可用選項以開發更多功能)
-a, --all, --listening display all sockets (default: connected)
-l, --listening display listening server sockets
-n, --numeric don't resolve names
-p, --programs display PID/Program name for sockets
-t 列出 TCP協議的連接
iptables -L -n #查看默認防火牆(filter)配置狀態信息
chkconfig --list #查看可用於開機啓動的服務項——chkconfig,類似Windowsservices.msc
chkconfig XYZ on #將XYZ服務進程設定爲開機啓動,反之爲off
source /etc/profile #使得剛修改的全局環境變量即可生效
tail -f /usr/java/apache_tomcat6/logs/catalina.out #實時監視文件的增長,-f:follow
sudo -u shixiu -H command line #root用戶執行該命令,但該命令行實際執行身份是普通用戶shixiu,比如執行cp,執行完畢後新拷貝文件的屬主爲shixiu。
df #查看磁盤使用情況(更善於查看磁盤剩餘空間真實大小)
常用選項 -h 以人類常用單位M、G標示、顯示文件大小
du #查看文件系統信息(更善於查看文件系統所佔空間真實大小,如目錄大小)
常用選項 -h 以人類常用單位M、G標示、顯示文件大小
du -h /path/to/directoryname #將目錄下的子目錄詳細列出分別統計各自大小,如在查看tomcat下垃圾日誌大文件所在的子目錄時很方便!
du -sh/path/to/directoryname #將目錄各子目錄|文件彙總統計得出該目錄所包含文件大小的總和
查看selinux機制的狀態: getenforce 或者 sestatus
臨時禁用selinux機制: setenforce 0
who #有哪些使用者登錄了﹐和他們從哪裡登錄進來的﹐還有登錄時間、IP等信息
w #相比who能看到更多的信息如所有登錄者正在執行什麼命令
top #看到系統的資源使用情況
lastb #查看非法遠程訪問記錄
last #查看登錄成功歷史記錄
cat /var/log/messages #查看系統日誌
less /var/log/secure #查看系統安全相關日誌
pkill -9 -t tty1 #將從本機終端tty1登錄的用戶從系統踢出(遠程終端爲pts/N)
pkill -9 nginx (pkill約等於killall命令)
備註:(1)一般的需要知道進程的PID才能使用kill將其終止,但是使用pkill的話只需要知道進程的名稱就可知將其終結。(2)pkill -9 -t tty1 可根據登錄終端將用戶踢出系統登錄狀態
jobs #查看到有哪些程式在非前景中執行﹑以及他們的狀態。
dmesg #將您目前所使用的硬體資料顯示出來
cat /proc/cpuinfo #查看CPU信息
cat /etc/issue #查看操作系統所屬版本
————系統級別常用配置文件——————
/etc/resolv.conf #Linux主機配置在線DNS,格式爲“nameserver 59.108.61.61”,區別下面的"本地",這裏稱之爲“在線DNS”配置文件(實踐中常用於設定DNS)
/etc/hosts #Linux主機配置本地DNS|本地內網主機解析服務的配置(這裏在自定義主機名之後最好配置迴環網卡IP與新主機名的對應關係,使主機能自我解析,很重要!)
/etc/sysconfig/network #RHEL操作系統主機名的配置,似乎在Debian系統中該配置文件爲“/etc/hostname”(實踐中常用於設定主機名,似乎也可以設定GATEWAY)
/etc/sysconfig/network-scripts/ifcfg-eth0 或者 /etc/network/interfaces #操作系統網卡信息配置(前者是RHEL系統後者是Debian系統)(實踐中常包含IP、GATEWAY的配置)
另,更多信息可參考:Linux常用配置文件保存位置大全
http://www.jb51.net/LINUXjishu/343120.html
shutdown -h now #標準的科學的關機命令
其他關機命令:init 0、poweroff
shutdown -r now #標準的科學的重啓命令
其他重啓命令:reboot
logout #退出系統登錄
usermod -d /home/sanlang -l xiuxiu -s /sbin/nologin shixiu
#修改用戶的家目錄、用戶名、所用shell
-c<備註> 修改用戶帳號的備註文字。
-d登入目錄> 修改用戶登入時的目錄。
-e<有效期限> 修改帳號的有效期限。
-f<緩衝天數> 修改在密碼過期後多少天即關閉該帳號。
-g<羣組> 修改用戶所屬的羣組。
-G<羣組> 修改用戶所屬的附加羣組。
-l<帳號名稱> 修改用戶帳號名稱。
-L 鎖定用戶密碼,使密碼無效。
-s<shell> 修改用戶登入後所使用的shell。
-u<uid> 修改用戶ID。
-U 解除密碼鎖定。
----------操作系統信息查看命令---------
yum repolist #查看當前yum工具可用的yum源信息列表
du -sh 目錄名稱 #用於查看該目錄的佔空間大小(善於查看文件系統真實大小)
du -h /path/to/directoryname #將目錄下的子目錄詳細列出分別統計各自大小,便於準確定位大文件所在路徑|子目錄
du -sh/path/to/directoryname #將目錄各子目錄|文件彙總統計得出該目錄所包含文件大小的總和
df -h #用於查看磁盤空間的使用情況(善於查看系統實時剩餘空間)
cat /etc/passwd #查看本機所註冊的所有用戶的方法
查看操作系統位數的命令:
getconf LONG_BIT
查看selinux當前狀態(啓用與否):
getenforce 或者 sestatus
查看操作系統發行版本信息:
cat /etc/issue
cat /etc/redhat-release或者system-release或者centos-release
lsb_release -a #查看系統發行版本(據說需要安裝lsb)
查看內核版本信息:
uname -r | -a
cat /proc/version
查看cpu信息:
cat /proc/cpuinfo (相比下者顯示cpu信息更詳細)
dmesg | grep CPU
查看處理器內核核數:
nproc 或者 cat /proc/ cpuinfo |grep "processor"|sort -u|wc -l
查看linux系統內存的命令:
cat /proc/meminfo
free -m
修飾操作系統登錄和登錄後的信息提示:
實現登錄消息的功能,可以修改3個文件。
1、/etc/issue本地登陸顯示的信息,本地登錄前
2、/etc/issue.net網絡登陸顯示的信息,登錄後顯示,需要由sshd配置
3、/etc/motd常用於通告信息,如計劃關機時間的警告等,登陸後的提示信息
motd是message of the day的縮寫,意思是“當天的提示信息”,通常在用戶成功登錄到Linux Shell(非交互登錄)時出現,該信息可以從/etc/motd文本文件中找到。UNIX/Linux系統管理員也通常會把一些重要的信息寫到這個文件裏面,以方便其他人或自己下次成功登錄時需要注意什麼和做什麼,非常方便。
LINUX文件系統
Linux文件系統層次化標準(Linux FileSystem Hierarchy Standard(FHS))|目錄詳解
心得:其實學習Linux系統之初就應該對文件系統有一個全體層次化結構的認識。不致於認爲Linux系統就是烏漆嘛黑一團抽象的迷霧。有了FHS的概念和感知,其他的理論就有了棲息的場所。個人當初後2015時光中只有局部目錄的認識,對linux的感覺抽象了好久。
20161103 15:36——
fdisk查看硬盤分區表
df:查看分區使用情況
du: 查看文件佔用空間情況
詳細資料參考:
Linux文件系統詳解
http://www.2cto.com/os/201109/104498.html
Linux目錄詳解
http://www.cnblogs.com/itcui/p/5632311.html(初級階段時的參考詳細)
http://www.360doc.com/content/14/0607/16/203871_384577619.shtml(reading)
linux FHS 與 目錄樹 (詳盡)
http://www.cnblogs.com/kzloser/articles/2673771.html(reading)
由於linux是開放源代碼,各大公司和團體根據linux的核心代碼做各自的操作,編程。這樣就造成在根下的目錄的不同。這樣就造成個人不能使用他人的linux系統的PC。因爲你根本不知道一些基本的配置,文件在哪裏……這就造成了混亂。這就是FHS(FilesystemHierarchyStandard)機構誕生的原因。
事實上,FHS針對目錄樹架構僅定義出三類目錄底下應該放置什麼數據而已,分別是底下這三個目錄的定義:
/ (root, 根目錄):與開機系統有關;
/usr (unix software resource):與軟件安裝/執行有關;
/var (variable):與系統運作過程有關。
FHS定義的目錄元素:
/bin /boot /dev /etc /home/lib /media /mnt /opt /root/sbin /srv /tmp
備註:標紅的目錄爲不可與根目錄分開的目錄(與開機過程有關)
除上 FHS 中定義的目錄說明外,底下是幾個在Linux當中非常重要的目錄:
/lost+found /proc /sys
目錄 功能|作用|用途 描述:
/ 根目錄
/bin 做爲基礎系統所需要的最基礎的命令就是放在這裏。比如 ls、cp、mkdir等命令;功能和/usr/bin類似,這個目錄中的文件都是可執行的,普通用戶都可以使用的命令。
/boot Linux的內核及引導系統程序所需要的文件,比如 vmlinuz initrd.img 文件都位於這個目錄中。在一般情況下,GRUB或LILO系統引導管理器也位於這個目錄;啓動裝載文件存放位置,如kernels,initrd,grub。一般是一個獨立的分區。
/dev 一些必要的設備,聲卡、磁盤等。還有如/dev/null. /dev/console /dev/zero /dev/full等。
/dev/tty: teletypewriters,虛擬控制檯設備文件;
/dev/pty:pseudo-tty,虛擬終端,提供遠程虛擬控制檯設備文件;(pts (pseudo-terminal
slave)是pty的實現方法,與ptmx(pseudo-terminal master)配合使用實現pty。)
/dev/null:所謂"黑洞",所有寫入該設備的信息都將消失,如當想要將屏幕上的輸出信息隱藏起來時,只要將輸出信息輸入到/dev/null中即可;
/etc 系統的配置文件存放地.一些服務器的配置文件也在這裏;比如用戶帳號及密碼配置文件;
/etc/rc.d 啓動的配置文件和腳本
/etc/opt:/opt對應的配置文件
/etc/selinux:selinux是一個很新的安全性方案,它是一種針對各種文件、目錄、設備或daemon等在linux所需使用到的安全性機制,而且其安全性的數據時直接記錄在文件系統中;
/etc/audit:這個目錄所代表的是一種和目錄名稱一致的audit安全機制,主要以服務的方式協助管理員持續監控各文件被存取的情況;目錄下的audit.rules文件主要是定義一些必要的監控規則;
/etc/snmp:簡單網絡管理軟件的配置文件目錄,存在snmpd.conf主配置文件;
/etc/setuptool.d:這個目錄是"setup"系統配置工具的主要配置目錄;
/etc/skel:用於初始化用戶宿主目錄的配置目錄,當建立一個用戶時,會把此目
錄下的所有文件複製一份到用戶的宿主目錄,作爲用戶的初始化配置;
/etc/sysconfig:非常重要的系統配置文件的存放目錄,裏面放置了大量系統啓動
及運行相關的配置文件;
/etc/services文件是記錄網絡服務名和它們對應使用的端口號及協議。
/etc/xinetd.d:xinetd是一個管理多個服務的daemon,這個目錄下列出的服務都是
由xinetd進程管理的,其主配置文件是/etc/xinetd.conf;
/etc/logrotate.d:此目錄對系統管理員來說,是十分重要的一個目錄,因爲目錄中的文件,記錄瞭如何定期備份系統所需要備份的系統或軟件日誌文件及備份方式,目錄是由logrotate組件所提供的,而裏面所有文件是由各軟件各自產生的;其主要配置文件是/etc/logrotate.conf;
/etc/logwatch:logrotate主要是實現如何備份日誌文件,這個目錄就是記載如何分析日誌文件並告訴用戶的軟件logwatch的配置目錄;
……
/home 用戶工作目錄,和個人配置文件,如個人環境變量等,所有的賬號分配一個工作目錄。一般是一個獨立的分區。
/home/~/.bashrc:提供bash環境中所需使用的別名;
/home/~/.bash_profile:提供bash環境所需的變量;一般先執行.bashrc後,纔會再
執行.bash_profile;
/home/~/.bash_history:用戶歷史命令文件,記錄用戶曾經輸入過的所有命令;(默認爲1000條,可以通過HISTSIZE變量更改)
/home/~/.bash_logout:當用戶註銷的同時,系統會自動執行.bash_logout文件,如果管理員需要記錄用戶註銷的一些額外記錄、動作或其他信息,就可以利用這個機制去完成;
/lib 庫文件存放地。bin和sbin需要的庫文件。類似windows的DLL。
/media 可拆卸的媒介掛載點,如CD-ROMs、移動硬盤、U盤,系統默認會掛載到這裏來。
/mnt 臨時掛載文件系統。這個目錄一般是用於存放掛載儲存設備的掛載目錄的,比如有cdrom等目錄。可以參看/etc/fstab的定義。
/opt 可選的應用程序包。
/root Root用戶的工作目錄
/sbin 和bin類似,是一些可執行文件,不過不是所有用戶都需要的,一般是系統管理所需要使用得到的。
/srv 該目錄存放一些服務啓動之後需要提取的數據
/tmp 系統的臨時文件,一般系統重啓不會被保存。
/usr 包含了系統用戶工具和程序。
/usr/bin: 非必須的普通用戶可執行命令
/usr/include:linux下開發和編譯應用程序所需要的標準頭文件
/usr/lib:/usr/bin/ 和 /usr/sbin/的動態鏈接庫文件和軟件包的配置文件
/usr/sbin:非必須的可執行文件
/usr/etc:自行安裝或非系統主要的配置文件目錄;
/usr/src:內核源碼,linux內核的源代碼就放在/usr/src/linux裏
/usr/X11R6:X Window System, Version 11, Release 6.
/usr/doc linux文檔
/usr/man 幫助文檔
/usr/local:linux系統中安裝的共享軟件程序最好的方式是安裝在/usr/local下,按照linux標準目錄結構,新建立的軟件都應該放在/usr/local下;
/usr/local/bin:存放軟件執行文件的目錄|本地增加的命令;
/usr/local/sbin:同樣存放軟件執行文件的目錄,但此目錄專門針對系統所使用的文件;
/usr/local/lib:軟件相關的函數庫|本地增加的庫根文件系統;
/usr/local/share:當文件性質不好歸屬時就會放在此,man手冊就放在這個目錄下;
/usr/local/src:所安裝軟件的源代碼放置在此;
/usr/share:此目錄都是一些共享信息,最常被用到的就是/usr/share/man這個目錄,
/usr/share裏的信息是跨平臺的;
/usr/share/doc:放置一些系統幫助文件的地方;
/var 各式各樣的(Variable)文件,一些隨着系統常規操作而持續改變的文件就放在這裏,比如日誌文件,脫機文件,還有臨時的電子郵件文件
/var/cache 應用程序緩存數據. 這些數據是由耗時的I/O(輸入/輸出)的或者是運算本地生成的結果。這些應用程序是可以重新生成或者恢復數據的。當沒有數據丟失的時候,可以刪除緩存文件
/var/lib 狀態信息。這些信息隨着程序的運行而不停地改變,比如,數據庫,軟件包系統的元數據等等
/var/lock 鎖文件。這些文件用於跟蹤正在使用的資源
/var/log 日誌文件。包含各種日誌,如/var/log/messages。
/var/mail 內含用戶郵箱的相關文件
/var/opt 來自附加包的各種數據都會存儲在 /var/opt/.
/var/run 存放當前系統上次啓動以來的相關信息,例如當前登入的用戶以及當前運行的daemons(守護進程).
/var/spool 該spool主要用於存放將要被處理的任務,比如打印隊列以及郵件外發隊列
/var/mail 過時的位置,用於放置用戶郵箱文件
/var/tmp 存放重啓後保留的臨時文件
/proc 操作系統運行時,進程(正在運行中的程序)信息及內核信息(比如cpu、硬盤分區、內存信息等)存放在這裏。/proc目錄僞裝的文件系統proc的掛載目錄,proc並不是真正的文件系統,它的定義可以參見/etc/fstab。
/lost+found 一般存在於獨立的分區中,如home目錄下就有。
/sys 這個目錄其實跟/proc非常類似,也是一個虛擬的文件系統,主要也是記錄與核心相關的信息.包括目前已加載的核心模塊與核心偵測到的硬件裝置信息等等.這個目錄同樣不佔硬盤容量喔!
備註: /home /var /usr/local經常是單獨分區,因爲經常會操作,容易產生碎片.
=========防火牆---------=================
認爲 iptables 默認策略是ACCEPT,不給INPUT添加精準細緻的端口匹配策略也是可以的,如80端口 在默認策略是ACCEPT 不添加端口匹配策略也應該能訪問服務。
所以既然要在INPUT鏈中匹配端口策略就應該讓該鏈的默認策略設置爲DROP!
http://www.jb51.net/os/RedHat/161919.html
iptables -A INPUT -m state --state ESTABLISHED, RELATED -j ACCEPT
#blockmostcommonnetworkattacks(reconpacketsandsyn-floodattack)
iptables -A INPUT -p icmp--icmp-type8-mlimit--limit1/second -j ACCEPT #defaultpolicies
iptables -A INPUT -p tcp --tcp-flags ALLNONE -j DROP#NONE包(所有標識bit都沒有設置)主要是掃描類的數據包
iptables -A INPUT -p tcp !--syn -m state --state NEW -j DROP#防止sync-flood攻擊
iptables -A INPUT -p tcp --tcp-flags ALLALL -j DROP #open ports for different services
iptables -A INPUT -p tcp --tcp-flags ALLALL -j DROP #ALL包(所有的標註bit都被設置了)也是網絡掃描的數據包