1 [wang@localhost etc]$
那個 ~ 符號代表的是『用戶的家目錄』的意思,他是個『變量!』 。舉例來說,root 的家目錄在/root, 所以 ~ 就代表
/root 的意思。而 wang 的家目錄在/home/wang, 所以如果你以 wang 登入時,
他看到的 ~ 就會等亍/home/wang 喔!
至于提示字符方面,在Linux當中,默認root的提示字符為#,而一般身份用戶的提示字符為$。
2 重要的幾個熱鍵[Tab], [ctrl]-c, [ctrl]-d
這個[Tab]熱鍵算是 Linux 的 Bash shell 最棒的功能之一了!他具有『命令補全』不『檔案補齊』
的功能。
- [Tab] 接在一串指令的第一個字的后面,則為命令補全;
- [Tab] 接在一串指令的第二個字以后時,則為『檔案補齊』!
[Ctrl]-c 按鍵 中斷目前程序
[Ctrl]-d 按鍵 鍵盤輸入結束
3 Linux 系統的在線求助 man page 與 info page
man page:man 是 manual(操作說明)的簡寫。
迚入 man 挃令的功能后,你可以挄下『空格鍵』往下翻頁,可以按下『q 』按鍵來離開 man 的環境。 如果你知道某些關鍵詞的話, 那你可以在任何時候輸入『/word』,來主動搜尋關鍵詞,?/word是向上搜尋
info page:info page 則是將文件數據拆成一個一個的段落,每個段落用自
己的頁面來撰寫, 幵且在各個頁面中還有類似網頁的『超鏈接』來跳到各個同的頁面中,每個獨立的
頁面也被稱為一個節點(node)。 所以,你可以將 info page 想成是文本模式的網頁顯示數據。
丌過你要查詢的目標數據的說明文件必須要以 info 的格式來寫成才能夠使用 info 的特殊功能(例如赸鏈
接)。
/usr/share/doc/:你只要到這個目錄底下,就會發現好多好多的說明文件檔。
4 超簡單文書編輯器: nano
- [ctrl]-G:取得聯機幫助(help),徑有用的!
- [ctrl]-X:離開 naon 軟件,若有修改過檔案會提示是否需要儲存喔!
- [ctrl]-O:儲存檔案,若你有權限的話就能夠儲存檔案了;
- [ctrl]-R:從其他檔案讀入資料,可以將某個檔案的內容貼在本檔案中;
- [ctrl]-W:搜尋字符串,這個也是徑有幫助的指令喔!
- [ctrl]-C:說明目前光標所在處的行數與列數等信息;
- [ctrl]-_:可以直接輸入行號,讓光標忚速移動到該行;
- [alt]-Y:校正語法功能開啟或關閉(單擊開、再單擊關)
- [alt]-M:可以支持鼠標來移動光標的功能
5 正確的關機方法
- 觀察系統的使用狀態:如果要看目前有誰在在線,可以下達『 who』這個指令,而如果要看網絡的聯機狀態,可以下達
『netstat -a 』這個指令,而要看背景執行的程序可以執行『ps -aux 』這個指令。 - 關機/重新啟動相關的指令:將內存中的數據同步寫入硬盤中的指令: sync;慣用的關機指令: shutdown;重新啟勱,關機: reboot, halt, poweroff;
6 (1)使用者及(2)群組不(3)非本群組外的其他人
在 Linux 里面,任何一個檔案都具有『 User, Group 及 Others』三
種身份的個別權限。
用戶記錄在/etc/passwd,個人的密碼則是記錄在/etc/shadow,Linux 所有的組名都紀錄在/etc/group 內。
7 Linux 檔案權限概念
使用ll查看文件屬性
[root@localhost kencery]# ll
total 8
drwxr-xr-x. 8 root root 4096 May 22 08:30 jdk1.8
drwxr-xr-x. 9 root root 4096 May 22 18:17 tomcat
r可讀,w可寫,x可執行,如果沒有x權限就不能cd到該目錄下,d表示文件屬性。可以看出來rwxr-xr-x有三組權限,第一種為用戶自己,第二組為同群組的,第三組為其他非本群組的權限。
刪除文件的權限需要上級文件夾的權限w,可以不需要對文件有任何權限就可刪除文件、
后面兩個root,一個代表文件的所屬用戶,一個代表文件的所屬群組。
1 如何改變文件屬性與權限
- chgrp :改變檔案所屬群組。chgrp wang test
- chown :改變檔案擁有者,也能改變群組。chown wang:root test;
- chmod :改變檔案的權限, SUID, SGID, SBIT 等等的特性。權限的設定方法有兩種, 分別可以使用數字或者是
符號來進行權限的變更,r:4,w:2,x:1。chmod 777 test;chmod u=rwx,g=rx,o=r test,chmod a-x test,chmod a+x test。
你想要教一個朋友如何讓一個程序可以擁有執行的權限, 但你又不知道該檔案原本的權限為何,此時,利用
『 chmod a+x filename』 ,就可以讓該程序擁有執行的權限了。是否很方便?
基本上,Linux 系統上的文件名真的只是讓你了解該檔案可能的用途而已, 真正的執行與否仍然需要權限的規范才行。
2 Linux 目錄配置
亊實上,FHS 針對目錄樹架構僅定義出三層目錄底下應該放置什么數據而已:
- / (root, 根目錄):與開機系統有關;
- /usr (unix software resource):與軟件安裝/執行有關;
FHS 建議所有軟件開發者,應該將他們的數據合理的分別放置到這個目錄下的次目錄,而不要自行建立該軟件自己獨立的目彔。
- /var (variable):與系統運作過程有關。
- /bin:在/bin 底下的指令可以被 root 與一般賬號所使用
/bin 主要放置在開機時,以及進入單人維護模式后還能夠被使用的指令,至于/usr/bin 則是大部分軟件提供的指令放置處。
- /home:這是系統默認的用戶家目錄(home directory)。
- /etc:系統主要的配置文件幾乎都放置在這個目錄內,例如人員的賬號密碼文件、 各種服務的啟始檔等等。
- /proc:他放置的數據都是在內存當中,例如系統核心、行程信息(process)、周邊裝置的狀態及網絡狀態等等。
另外要注意的是,因為根目錄與開機有關,開機過程中僅有根目錄會被掛載, 其他分割槽則是在開機完成之后才會持續的進行掛載的行為。/etc:配置文件,/bin:重要執行檔,/dev:所需要的裝置檔案,/lib:執行檔所需的函式庫不核心所需的模塊,/sbin:重要的系統執行文件;這五個目錄千萬不可與根目錄分開在不同的分割槽!
3 絕對路徑與相對路徑
絕對路徑:由根目錄(/)開始寫起的文件名或目錄名稱,例如/home/dmtsai/.bashrc;
相對路徑:相對于目前路徑的文件名寫法。 例如 ./home/dmtsai 或 ../../home/dmtsai/ 等等。反正開頭不是 / 就屬于相對路徑的寫法
. :代表當前的目錄,也可以使用 ./ 來表示;
若你的執行文件放置在本目錄,并且本目錄并非正規的執行文件目錄(/bin, /usr/bin等為正規),則需要如『./run.sh』指定執行檔,『./run.sh』代表『執行本目錄下, 名為 run.sh 的檔案』
- .. :代表上一層目錄,也可以 ../ 來代表。
- : 代表前一個工作目錄。
- ~ :代表『目前用戶身份』所在的家目錄。
- ~account 代表 account 這個用戶的家目錄(account 是個賬號名稱)
4 關于執行文件路徑的變量: $PATH
PATH(一定是大寫)這個變量的內容是由一堆目錄所組成的,每個目錄中間用冒號(:)分隔開, 每個目錄是有『順序』之分的。
- 不同身份使用者預設的 PATH 不同,默認能夠隨意執行的指令也不同
- PATH 是可以修改的,所以一般使用者還是可以透過修改 PATH 來執行某些位于/sbin 或/usr/sbin 下的指令來查詢;
- 使用絕對路徑或相對路徑直接指定某個指令的文件名來執行,會比搜尋 PATH 來的正確;
- 指令應該要放置到正確的目錄下,執行才會比較方便;
- 本目錄(.)最好不要放到 PATH 當中。
5 目錄的相關操作:
- cd:變換目錄
- pwd:顯示當前目錄
- mkdir:建立一個新的目錄
- rmdir:刪除一個空的目錄
- ls:檔案與目錄的查看。如ll
- cp: (復制檔案或目錄)。如cp -p(復制屬性);cp -s(符號鏈接)
- rm:移除檔案與目錄。如rm -i test;rm -r test;
- mv:移勱檔案與目錄,或更名。mv test cache;mv cache cache2;
- 文檔查閱:cat,由第一行開始顯示檔案內容;tac,從最后一行開始顯示,可以看出 tac 是 cat 是倒著寫!less 與 more 類似,一頁一頁的顯示檔案內容,空格翻頁,less可以往前翻頁。
- touch:修改檔案時間或新建。touch test,修改mtime與atime為當前時間,如果文件不存在則創建。
6 檔案與目錄的默認權限與隱藏權限
- 檔案預設權限:umask。下面代表其他人默認權限沒有w
[wang@localhost test]$ umask
0002
要注意的是,umask 的分數指的是『該默認值需要減掉的權限!』因為 r、 w、 x 分別是 4、 2、 1 分。這樣新建的目錄默認是drwxrwxr-x ,文檔是-rw-rw-r--。
- 檔案隱藏屬性:chattr 指令只能在 Ext2/Ext3 的
文件系統上面生效, 其他的文件系統可能就無法支持這個指令了。+i 可以讓一個檔案無能被刪除、改名、設定連結也無法,+a設定后,這個檔案將只能增加數據,而不能刪除也不能修改數據,叧有root才能設定這個屬性。 - Set UID:當 s 這個標志出現在檔案擁有者的 x 權限上時,例如剛剛提到的 /usr/bin/passwd 這個檔案的權限狀
忞:『-rwsr-xr-x』,此時就被稱為 Set UID,簡稱為 SUID 癿特殊權限。 passwd 的擁有者是 root 這個賬號,當普通用戶運行它時會暫時擁有root權限,從而可以修改/etc/shadow。
SUID 權限僅對二進制程序(binary program)有效;執行者對于該程序需要具有 x 的可執行權限;本權限僅在執行該程序的過程中有效 (run-time);執行者將具有該程序擁有者 (owner) 的權限。
- Set GID:當 s 標志在檔案擁有者的 x 項目為 SUID,那 s 在群組的 x 時則稱為 Set GID, SGID 。對于二進制檔案來說,用戶會獲得它群組的權限;對于目錄來說,若用戶在此目錄下具有w的權限(可以新建檔案),則使用者所建立的新檔案,該新檔案的群組與此目錄的群組相同。
用戶若對于此目錄具有 r 不 x 的權限時,該用戶能夠進入此目錄;
用戶在此目錄下的有效群組(effective group)將會變成該目錄的群組;
Sticky Bit:目前只針對目錄有效,對于檔案已經沒有效果了。當甲這個用戶于 A 目錄是具有群組或其他人的身份,并且擁有該目錄 w 的權限,甲只能夠針對自己建立的檔案或目錄進行刪除/更名/移動等動作,而無法刪除他人的檔案。
SUID/SGID/SBIT 權限設定:4 為 SUID,2 為 SGID,1 為 SBIT。
chmod 4664 test1
-rwSrw-r--. 1 wang wang 0 Jul 13 23:20 test1
大寫S表示用戶沒有x權限,無法執行也就無法給別人用了。
7 指令與檔案的搜尋
- 腳本文件名的搜尋:which。which 是根據用戶所規定的 PATH 變量內的目錄去搜尋可執行文件的。
[wang@localhost test]$ which ll
alias ll='ls -l --color=auto'
/bin/ls
- 檔案檔名的搜尋:通常我們都是先使用 whereis 或者是 locate 來檢查,如果真的找不到了,才以 find 來搜尋。因為 whereis 與 locate 是利用數據庫來搜尋數據,而且并沒有實際的搜尋硬盤。
[wang@localhost test]$ whereis test
test: /usr/bin/test /usr/share/man/man1/test.1.gz /usr/share/man/man1p/test.1p.gz
locate 的使用更簡單,直接在后面輸入部分文件名。但它是通過數據庫查詢,而數據庫的建立默認是在每天執行一次,如果查找的檔案新建在更新之后,則查找不到。這是需要執行
updatedb
updatedb 指令會去讀取 /etc/updatedb.conf 這個配置文件的設定,然
后再去硬盤里面進行搜尋文件名的動作,最后就更新整個數據庫檔案。
- find。
查找4天內,+4代表5天前的,4代表4天前那天的
[wang@localhost test]$ find ./ -mtime -4
./
./cache2
./test1
查找當前目錄下屬于wang的檔案
[wang@localhost test]$ find . -user wang
查找當前目錄下名為test1的文件
[wang@localhost test]$ find ./ -name test1
./test1
找出 /var 目錄下,文件類型為 Socket 的文件有哪些?
find /var -type s
找出 當前目錄下擁有SGID 或 SUID 或 SBIT 屬性的文件,并用ll指令列出來。find 額外動作的開始 (-exec) 到結束 (\;)
[wang@localhost test]$ find . perm +7000 -exec ls -l {} \;
8 權限與指令間的關系:
- 進入目錄的權限:使用cd進入目錄時,一定要有x權限才能進入目錄;ls查閱文件還需要目錄的r權限。
- 讀取目錄里的文件:使用cat等查看文件時,目錄至少要有x權限,檔案要有r權限。
- 對檔案進行修改:使用nano等進行修改時,所在目錄至少要x權限,檔案要r,w權限。