Linux

Linux(Ubuntu)練習 – 鳥哥基礎篇6.4-6.8檔案特殊權限與檔案搜尋

檔案特殊權限

檔案預設權限: umask

umask 的分數指的是『該預設值需要減掉的權限!』

#預設其他人不可寫入(022)
$ umask 022

設定檔案隱藏屬性: chattr

$ chattr [+-=][ASacdistu] 檔名

顯示檔案隱藏屬性: lsattr

$ chattr [-adR] 檔名

檔案特殊權限: SUID、SGID、SBIT

SUID(set UID,執行者可暫時或得擁有者的權限),例如: /usr/bin/passwd 這個檔案的權限狀態:『-rwsr-xr-x』,s出現在擁有者的x項目

  • SUID 權限僅對二進位程式(binary program)有效;
  • 執行者對於該程式需要具有 x 的可執行權限;
  • 本權限僅在執行該程式的過程中有效 (run-time);
  • 執行者將具有該程式擁有者 (owner) 的權限。

SGID,例如: -rwx–s–x.

  • 對檔案來說
    • SGID 對二進位程式有用;
    • 程式執行者對於該程式來說,需具備 x 的權限;
    • 執行者在執行的過程中將會獲得該程式群組的支援!
  • 對目錄來說
    • 使用者若對於此目錄具有 r 與 x 的權限時,該使用者能夠進入此目錄;
    • 使用者在此目錄下的有效群組(effective group)將會變成該目錄的群組;
    • 用途:若使用者在此目錄下具有 w 的權限(可以新建檔案),則使用者所建立的新檔案,該新檔案的群組與此目錄的群組相同。

SBIT(Sticky Bit),例如:如果將 A 目錄加上了 SBIT 的權限項目時, 則甲只能夠針對自己建立的檔案或目錄進行刪除/更名/移動等動作,而無法刪除他人的檔案。

  • 當使用者對於此目錄具有 w, x 權限,亦即具有寫入的權限時;
  • 當使用者在該目錄下建立檔案或目錄時,僅有自己與 root 才有權力刪除該檔案
#使用chmod指令時,若用四個數字代表權限,第一個數字則為特殊權限。4 為 SUID、2 為 SGID、1 為 SBIT。
$ chmod 4755 test

觀察檔案類型:file

$ file 檔名

檔案搜尋

尋找指令(執行檔)檔案: which

$ which [-a] command
$ which ifconfig

搜尋檔案檔名: whereis(只搜尋特定目錄)、locate(從資料庫找,較快)、find(從硬碟搜尋,較慢)

$ whereis [-bmsu] 檔名
$ whereis ifconfig
#列出5個包含關鍵字的檔案位置
$ loacte -l 5 passwd
#設定特定條件從硬碟搜尋
$ find [PATH] [option] [action]

文章參考資料

  1. 鳥哥的linux私房菜 – Linux檔案與目錄管理6.4-6.8
Linux

Linux(Ubuntu)練習 – 鳥哥基礎篇6.1-6.3檔案與目錄配管理

檔案及目錄

變換目錄(change directory): cd

變換目錄
$ cd [絕對/相對路徑]
變換到某個使用者的家目錄
$ cd 波浪符[使用者名]

顯示所在目錄(print working directory): pwd

顯示確實路徑,而非連結路徑
$ pwd -P

建立目錄(make directory): mkdir

遞回建立多層目錄,即使原本都不存在
$ mkdir -p layer1/layer2/layer3
建立目錄,且同時設定權限(不使用預設權限)
$ mkdir -m 777 [目錄名稱]

刪除目錄(remove directory): rmdir

遞回刪除多層"空"目錄
$ rmdir -p layer1/layer2/layer3

執行檔路徑: $PATH

加入新的路徑(例如:/root)到執行檔路徑中
$ PATH="${PATH}:/root"

檢視檔案及目錄(list): ls

常用[-a]:列出所有檔案包含隱藏檔
常用[-d]:僅列出目錄本身,不列出目錄內檔案
常用[-l]:列出長串的完整屬性,包含權限等
$ ls [-aAdfFhilnrRSt] 檔名或目錄名稱..
$ ls [--color={never,auto,always}] 檔名或目錄名稱..
$ ls [--full-time] 檔名或目錄名稱..
$ ls -l 等同於 $ ll

複製檔案及目錄(copy): cp

常用[-a]:完整複製
常用[-i]:目標已存在時,會詢問是否覆蓋
常用[-p]:連同檔案的屬性(權限、用戶、時間)一起複製過去,而非使用預設屬性(備份常用)
常用[-r]:遞迴持續複製整個目錄
$ cp [-adfilprsu] 來源檔 目標檔

刪除檔案及目錄(remove): rm

常用[-f]:指的是force,不存在的檔案就忽略,不會詢問
常用[-i]:刪除前會詢問
常用[-r]:遞回刪除整個目錄(危險!)
$ rm [-fir] 目標檔

移動檔案及目錄(move): mv

常用[-f]:指的是force,存在同樣的檔案就覆蓋,不會詢問
常用[-i]:目標存在時,會詢問
常用[-u]:來源較新時就覆蓋
(利用mv指令也可以做到更名的動作)
$ mv [-fiu] 來源檔 目標檔

取得路徑的檔名、目錄名: basename、dirname

取得路徑的檔名 testfile
$ basename /etc/testdir/testfile
取得路徑的目錄名 /etc/testdir
$ dirname /etc/testdir/testfile

檔案內容查閱

 直接檢視檔案內容(Concatenate): cat

常用[-b]:列印行號(不包含空白行)
常用[-n]:列印行號(包含空白行)
$ cat [-AbEnTv] 檔案名

反向檢視檔案內容: tac

$ tac 檔案名

添加行號列印: nl

效果類似$ cat -b
$ nl 檔案名

可翻頁檢視: more、less

只能往後翻頁
$ more 檔案名
能夠前後翻頁,更加彈性
$ less 檔案名

擷取資料前幾行: head

$ head [-n number] 檔案名
擷取前n行
$ head -n 10 first10.txt
擷取不包含後面n行
$ head -n -10 exceptLast10.txt

擷取後面幾行: tail

$ tail [-n number] 檔案名
擷取後n行
$ tail -n 10 last10.txt
擷取第n行之後的所有
$ tail -n +10 exceptFirst10.txt
擷取第11行到第20行(利用管線|)
$ head -n 20 file.txt | tail -n 10

檢視非文字檔: od

$ od [-t TYPE] 檔案名
按照ASCII輸出
$ od -t oCc 檔案名
直接查詢文字的ASCII編碼
$ echo word | od -t oCc

修改檔案時間、開新檔案: touch

修改檔案時間
$ touch [-acdmt] 檔案名
開新(空白)檔案
$ touch 檔案名

文章參考資料

  1. 鳥哥的linux私房菜 – Linux檔案與目錄管理6.1-6.3
Linux

Linux(Ubuntu)練習 – 鳥哥基礎篇5.檔案權限、目錄配置

列出所有檔案的檔名其他詳細屬性(包含隱藏檔): ls -la

$ ls -la
-rw-r--r--. 1 root root 1993 May 10 18:01 install.cfg
運行結果依序為: [1.權限][2.連結][擁有者][群組][檔案容量(Bytes)][修改日期] [檔名]
  1. 權限(permission)
    • 第一位: 檔案類型
      • [ d ]是目錄(directory)
      • [ ]是檔案(file)
      • [ l ]是連結檔(link file);
      • [ b ]是裝置檔裡面的可供儲存的周邊設備(可隨機存取裝置)
      • [ c ]是裝置檔裡面的序列埠設備,例如鍵盤、滑鼠(一次性讀取裝置)
    • [第一組]第二位~第四位: 檔案擁有者的權限
    • [第二組]第五位~第七位: 檔案所屬群組的權限
    • [第三組]第八位~第十位: 其他人的權限
      檔案的權限預設用rwx分別表示讀、寫、執行,目錄的權限預設用rwx分別表示可查詢(ls)、可修改刪除檔名、可進入該目錄,沒有權限則用-表示。
  2. 有多少檔名連結到此節點(i-node)

改變檔案的權限: chmod

關於權限的9個字母,是每3個一組的,一共三組,每一組都是由r、w、x所組成。
每個權限的分數分別為r:4、w:2、x:1,總和為7。
例如: -rwxrwxrwx 表示的方式為777、-rwxr–r–表示的方式為744

基本設定方式
$ chmod [-R] xyz 檔案或目錄
$ chmod 777 init.conf
可用三個字母u(user)、g(group)、o(others)表示對象,用=做設定,rwx表示權限
$ chmod u=rwx,go=rx init.conf
可用字母a(all)做為對象,用+、-做加入或刪減,rwx表示權限
$ chmod a+w init.conf
$ chmod a-x init.conf

改變檔案擁有者: chown

基本設定方式
$ chown [-R] 帳號名稱 檔案或目錄
$ chown baddychiang init.conf
同時變更群組方式
$ chown [-R] 帳號名稱:群組名稱 檔案或目錄
$ chown root:root init.conf

改變檔案所屬群組: chgrp

基本設定方式
$ chgrp [-R] 群組名稱 檔案或目錄
$ chgrp testgroup init.conf

目錄樹結構圖

目錄樹架構示意圖


文章參考資料

  1. 鳥哥的Linux私房菜 – Linux檔案權限與 目錄配置
Linux

Linux(Ubuntu)練習 – 鳥哥基礎篇4.基本指令及熱鍵

指令

日期時間: date

完整日期時間
$ date
年/月/日
$ date +%Y/%m/%d
時間
$ date +%H:%M

月曆: cal

當月份月曆
$ cal
特定年月月曆
$ cal [month][year]
$ cal 10 2016

計算機: bc

啟動計算機
$ bc
設定小數點位數
$ scale=3

求助說明

$ [指令] --help

manual(man page)、info操作說明

尋找第一筆符合的說明
$ man [指令]
尋找所有符合的說明
$ man -f [指令]
尋找所有包含此指令(關鍵字)的說明
$ man -k [指令]
另一個尋找說明的方式(會分層分頁)
$ info [指令]

簡易文書編輯器: nano

$ nano [檔名]

資料同步寫入硬碟: sync

$ sync

關機指令: shutdown

關機
$ shutdown
多久後關機
$ shutdown -h [時間]
關機後多久再重開機
$ shutdown -r [時間]
某個時間發出關機警訊,但不會真的關機
$ shutdown -k [時間] [警告訊息]
取消關機
$ shutdown -c

重新開機: reboot

$ reboot

熱鍵

捲動console畫面

[Shift]+[PgUp]/[PgDn] 


答錯題目詳解

  • 在 man 的時候, man page 顯示的內容中,指令(或檔案)後面會接一組數字,這個數字若為 1, 5, 8 ,表示該查詢的指令(或檔案)意義為何?
    1) 一般使用者可以使用的指令或可執行檔案
    5)一些設定檔的檔案內容格式
    8)系統管理員能夠使用的管理指令
  • man page 顯示的內容的檔案是放置在哪些目錄中?
    放置在 /usr/share/man/ 與 /usr/local/man 等預設目錄中。

文章參考資料

  1. 鳥哥的Linux私房菜 – 第四章、首次登入與線上求助