Linux檔案與目彔的基本操作(查看與許可權)

来源:http://www.cnblogs.com/guojintao/archive/2016/07/28/5715257.html
-Advertisement-
Play Games

此文包含的命令: cd、pwd、mkdir、rmdir、rm、ls、cp、mv、cat、tac、more、less、head、tail、od、touch、umask、chattr、lsattr、file、chgrp、chown。 理論: 一、檔案的種類 正規檔案:[-] 目錄(directory): ...


此文包含的命令:

cd、pwd、mkdir、rmdir、rm、ls、cp、mv、cat、tac、more、less、head、tail、od、touch、umask、chattr、lsattr、file、chgrp、chown。

 

理論:

一、檔案的種類

  正規檔案:[-]

  1. 純文本檔案(ASCII):用戶看得懂的數字或字母等組成的。
  2. 二進位文件(binary): 操作系統認識的文件。即可執行的0101代碼文件。
  3. 數據格式文件(data): 應用程式認識的文件格式。例如last命令才能查看的/var/log/wtmp登入數據記錄文件。

  目錄(directory):[d]

  連結檔(link):[l]

    類似與windows的快捷方式。

  設備與裝置文件(device):[b]、[c]     通常在/dev目錄下

  1. 區塊(block)設備檔 :[b] 例如硬碟,可以隨機在硬碟的不同區塊讀寫。
  2. 字元(character)設備文件:[c] 例如鍵盤滑鼠,一次性順序讀取。

  資料介面文件(sockets):[s]       通常在/var/run目錄下

    這種類型的檔案通常被用在網路上的數據承接,我們可以啟動一個程式來監聽客戶端的要求, 而客戶端就可以透過這個socket來進行                             數據的溝通

  數據輸送文件(FIFO, pipe):[p]

    FIFO也是一種特殊的文件類型,他主要的目的在解決多個程式同時存取一個檔案所造成的錯誤問題。

二、檔案的擴展名

  1. *.sh : 腳本戒批處理文件 (scripts),因為批處理文件為使用shell寫成的
  2. *Z, *.tar, *.tar.gz, *.zip, *.tgz: 經過打包的壓縮文件。這是因為壓縮軟體分別為 gunzip, tar 等。
  3. *.html, *.php:網頁相關檔案,分別代表 HTML 語法不 PHP 語法的網頁檔案啰!.html 的檔案可使用網頁瀏覽器直接打開,.php的檔案透過client端的瀏覽器瀏覽server端,以得到運算後的網頁。

三、許可權與指令的關係

  1. 讓用戶能進入某目錄成為『可工作目錄』的基本許可權為何:
    1. )可使用的指令:例如 cd 等變換工作目錄的指令
    2. )目錄所需許可權:用戶對這個目錄至少需要具有 x 的許可權
  2. 用戶在某個目錄內讀取一個檔案的基本許可權為何?
    1. )可使用的指令:例如本章談到的 cat, more, less等等
    2. )目錄所需許可權:用戶對這個目錄至少需要具有 x 許可權;
    3. )檔案所需許可權:使用者對檔案至少需要具有 r 的許可權才行!
  3. 讓使用者可以修改一個檔案的基本許可權為何?
    1. )可使用的指令:例如 nano 或 vi 編輯器等;
    2. )目錄所需許可權:用戶在該檔案所在的目錄至少要有 x 許可權;
    3. )檔案所需許可權:使用者對該檔案至少要有 r, w 許可權
  4. 讓一個使用者可以建立一個檔案的基本許可權為何?
    1. )目錄所需許可權:用戶在該目錄要具有 w,x 的許可權
  5. 讓用戶進入某目錄並執行該目錄下的某個指令的基本許可權為何?
    1. )目錄所需許可權:用戶在該目錄至少要有 x 的許可權;
    2. )檔案所需許可權:使用者在該檔案至少需要有 x 的許可權

四、特殊的許可權--suid、sgid、sbid

  1. SUID (set UID)

    當 s 這個標誌出現在檔案擁有者的 x 許可權上時(『-rwsr-xr-x』),則此檔案有SUID屬性,如/usr/bin/passwd。

    1. SUID的限制和功能:
      1. SUID 許可權僅對二迚製程序(binary program)有效;(對shell script和目錄都無效)
      2. 執行者對於該程式需要具有 x 的可執行許可權;
      3. 本許可權僅在執行該程式的過程中有效 (run-time);
      4. 執行者將具有該程式擁有者 (owner) 的許可權。
  2. SGID (set GID)

    s 在群組的 x 時則稱為 Set GID, 即SGID。 例如 /usr/bin/locate

    1. 如果是對檔案來說, SGID 有如下的功能:
      1. SGID 對二迚製程序有用;
      2. 程式執行者對於該程式來說,需具備 x 的許可權;
      3. 執行者在執行的過程中將會獲得該程式群組的支持!
    2. 如果是對目錄來說, SGID 有如下的功能:
      1. 用戶若對於此目錄具有 r 與 x 的許可權時,該用戶能夠進入此目錄;
      2. 用戶在此目錄下的有效群組(effective group)將會變成該目錄的群組;即進入該目錄的用戶創建的檔案或目錄屬組都是此目錄的屬組。
      3. 用途:若用戶在此目錄下具有 w 的許可權(可以新建檔案),則使用者所建立的新檔案,該新檔案的群組與此目錄的群組相同。
  3. SBIT (Sticky Bit)

   Sticky Bit, SBIT 目前只針對目錄有效,對於檔案已經沒有效果了。

     SBIT 對於目錄的作用是:

    1. 當用戶對於此目錄具有 w, x 許可權,亦即具有寫入的許可權時;
    2. 當用戶在該目錄下建立檔案或目錄時,僅有自己與 root 才有權力刪除該檔案

五、檔案的時間屬性。

  1.   modification time (mtime): 當該檔案的『內容數據』變更時,就會更新這個時間!內容數據指的是檔案的內容,而不是檔案的屬性或許可權喔!
  2.   status time (ctime): 當該檔案的『狀忞 (status)』改變時,就會更新這個時間,舉例來說,像是許可權與屬性被更改了,都會更新這個時間啊。
  3.   access time (atime): 當『該檔案的內容被取用』時,就會更新這個讀取時間 (access)。舉例來說,我們使用 cat 去讀取 /etc/man.config , 就會更新該檔案的 atime 了。
  • 總結:
  1. 對目錄沒有x執行許可權就無法訪問目錄。
  2. w許可權對於檔案不包含刪除許可權;對於目錄則可以刪除目錄或檔案。
  3. 複製行為(cp)會複製執行者的屬悵不許可權.

命令:

一、常用命令

  1. cd  變換目錄
  2. pwd 顯示當前工作目錄
  3. ls [-aAdfFhilnrRSt] 目錄名稱  顯示目錄或檔案屬性
    •   ls [--color={never,auto,always}] 目錄名稱
    •   -a  全部的檔案,連同隱藏檔( 開頭為 . 的檔案) 一起列出來(常用)
    •   -d  僅列出目錄本身,而不是列出目錄內的檔案數據(常用)
    •   -l  長數據串列出,包含檔案的屬性與許可權等等數據;(常用)
    •   -S  以檔案容量大小排序,而不是用檔名排序
    •   -t  依時間排序,而不是用檔名。
    •   --full-time  以完整時間模式 (包含年、月、日、時、分) 輸出
    •   --time={atime,ctime} 輸出 access 時間或改變許可權屬性時間 (ctime) 而非內容變更時間 (modification time)

  4. cp [-adfilprsu] 來源文件(source) 目標文件(destination)

    •   cp [options] source1 source2 source3 .... directory
    •   -a  相當亍 -pdr 的意思,至亍 pdr 請參考下列說明;(常用)
    •   -i  若目標文件(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)
    •   -p  連同檔案的屬性一起複制過去,而非使用預設屬性(備份常用);
    •   -r  遞歸持續複製,用於目錄的複製行為;(常用)
    •   -d  若來源文件為鏈接文件的屬性(link file),則複製鏈接文件屬性而非檔案本身。
    •   -s  複製成為符號鏈接文件 (symbolic link),亦即『快捷方式』檔案;
    •   -u  若 destination 比 source 舊才更新 destination !比對的時間為創建時間(mtime)。

  5. mv [-fiu] source destination

    •   mv [options] source1 source2 source3 .... directory
    •   -f  force 強制的意思,如果目標檔案已經存在,不會詢問而直接覆蓋;
    •   -i  若目標檔案 (destination) 已經存在時,就會詢問是否覆蓋!
    •   -u  若目標檔案已經存在,且 source 比較新,才會更新 (update) 比對的時間為創建時間。

  6. rm [-fir] 檔案或目錄

    •    -f  就是 force 的意思,忽略不存在的檔案,不會出現警告訊息;
    •   -i  互動模式,在刪除前會詢問使用者是否動作
    •   -r  遞歸刪除,最常用在目錄的刪除

  7. umask [-S] 查看檔案設定分數

    •   新建目錄或檔案的許可權等於預設許可權減去umask許可權,目錄預設許可權預設為777,檔案預設許可權預設為666
    •   umask xxxx  為設置umask值

  8. file 文件路徑  查看文件類型

二、目錄相關命令

  1. mkdir [-mp] 目錄名稱 創建一個新目錄
    • -m  直接設置目錄的許可權。
    • -p  幫助你直接將所需要的目錄(包含上層目錄)遞歸建立起來!  
  2. rmdir [-p] 目錄名稱 刪除一個空目錄
    • -p  連同上層『空的』目錄也一起刪除

三、檔案相關命令

  1. cat [-AbEnTv] 檔案名
    • -n  列印出行號,連同空白行也會有行號,與 -b 的選項不同;
    • -b  列出行號,僅針對非空白行做行號顯示,空白行不標行號!
    • -A  相當於 -vET 的整合選項,可列出一些特殊字元而不是空白而已;
  2. tac 檔案名 反向列示
  3. more 檔案名
    • 空格鍵 (space):代表向下翻一頁;
    • Enter :代表向下翻『一行』;
    • /字元串 :代表在這個顯示的內容當中,向下搜尋『字元串』這個關鍵詞;
    • :f :立刻顯示出文件名以及目前顯示的行數;
    • q :代表立刻離開 more ,不再顯示該檔案內容。
    • b 或 [ctrl]-b :代表往回翻頁,不過這動作只對檔案有用,對管線無用。
  4. less 檔案名
    • 空格鍵 :向下翻動一頁;
    • [pagedown]:向下翻動一頁;
    • [pageup] :向上翻動一頁;
    • /字元串 :向下搜尋『字元串』的功能;
    • ?字元串 :向上搜尋『字元串』的功能;
    • n :重覆前一個搜尋 (與 / 或 ? 有關!)
    • N :反向的重覆前一個搜尋 (與 / 或 ? 有關!)
    • q :離開 less 這個程式;
  5. head [-n number] 檔案
    • -n 後面接數字,代表顯示幾行的意思(接負數則表示除了後面n行)
  6. tail [-nf number] 檔案
    • -n  後面接數字,代表顯示幾行的意思
    •  -f  表示持續偵測後面所接的檔名,要等到按下[ctrl]-c才會結束tail的偵測
  7. od [-t TYPE] 檔案
    •  -t :後面可以接各種『類型 (TYPE)』的輸出,例如:
      • a :利用預設的字元來輸出;
      • c :使用 ASCII 字元來輸出
      • d[size] :利用十進位(decimal)來輸出數據,每個整數占用 size bytes ;
      • f[size] :利用浮點數(floating)來輸出數據,每個數占用 size bytes ;
      • o[size] :利用八進位(octal)來輸出數據,每個整數占用 size bytes;
      • x[size] :利用十六進位(hexadecimal)來輸出數據,每個整數占用 size bytes ;
  8. touch [-acdmt] 檔案
    • -a :僅修訂 access time;
    • -c :僅修改檔案的時間,若該檔案不存在則不建立新檔案;
    • -d :後面可以接欲修訂的日期而不用目前的日期,也可以使用 --date="日期或時間"
    • -m :僅修改 mtime ;
    • -t :後面可以接欲修訂的時間而不用目前的時間,格式為[YYMMDDhhmm]

四、目錄或檔案許可權相關命令

  1. chgrp 改變所屬群組
    • # chgrp -R user test   修改test目錄及其子目錄或檔案的屬組為user
  2. chown  改變檔案擁有者
    • chown [-R] 賬號名稱 檔案戒目彔
    • hown [-R] 賬號名稱:組名 檔案戒目彔
  3. chmod  改變許可權
    1. 數字類型改變檔案許可權 
      •  命令: # chmod [-R] xyz 目錄或檔案
      • owner = rwx = 4+2+1 = 7----------X
      • group = rwx = 4+2+1 = 7----------y
      • others= --- = 0+0+0 = 0----------z
    2. 符號類型改變檔案許可權
      1. 命令: # chmod [-R] ABC,ABC,ABC 目錄或檔案-----------ABC之間用逗號分開
      2. A={u 屬主 g 屬組 o 其他人 a 所有}--------一次可多選
      3. B={ + 加入 - 除去 = 設定 }
      4. C={r 讀   w 寫   x 執行 } --------一次可多選
  4. SUID、SGID、SBIT  特殊許可權設置
    • 基本屬性的基礎上,前面再加上一個1、2、3、4、5、6、7之中的一個!
    • u+s 或g+s 或o+t
  5. chattr [+-=][ASacdistu] 檔案或目錄名  配置文件夾或檔案的隱藏屬性
    1. a :當設定 a 之後,這個檔案將只能增加數據,而不能刪除也不能修改數據,只有root 才能設定這個屬性。使用>>添加內容
    2. i :讓一個檔案『不能被刪除、改名、設定連結也無法 寫入或新增資料!』對亍系統安全性有相當大的幫助!只有 root 能設定此屬性
  6. lsattr [-adR] 檔案或目錄   顯示檔案或目錄的隱藏屬性
    1. -a :將隱藏文件的屬性也秀出來;
    2. -d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的文件名;
    3. -R :連同子目錄的數據也一併列出來!  

五、指令與檔案的查找

  1. which (尋找『執行檔』)
    1. which 是根據用戶所設定的 PATH 變數內的目錄去搜尋可執行文件的!
    2. which [-a] 執行檔名稱
      1. -a :將所有由 PATH 目錄中可以找到的指令均列出,而不止第一個被找到的指令名稱
  2. whereis (尋找特定的檔案)
    1. 搜尋資料庫檔案,速度較快。(因為 Linux 系統會將系統內的所有檔案都記錄在一個資料庫檔案裡面)
    2. whereis [-bmsu] 檔案或目錄名
      1. -b :只找 binary 格式的檔案
      2. -m :只找在說明文件 manual 路徑下的檔案
      3. -s :只找 source 杢源檔案
      4. -u :搜尋丌在上述三個項目弼中的其他特殊檔案
  3. locate (尋找特定的檔案)
    1. 『已建立的資料庫 /var/lib/mlocate/』
    2. 更新locate資料庫的命令:updatedb。updatedb 指令會去讀取 /etc/updatedb.conf 這個配置文件的設定,然後再去硬碟裡面進行搜尋文件名的動作
    3. locate [-ir] keyword
      1. -i :忽略大小寫的差異;
      2. -r :後面可接正則表示法的顯示方式
  4. find   (尋找特定的檔案)
    1. find可以根據【時間】、【使用者或組名】、【檔案許可權以及名稱、大小】、【-exec 接額外的動作 \;】----其中而外的動作中由【指令加{}組成】---{}為前面find匹配的內容
    2. find [PATH] [option] [action]
      • 例題:
        •  找出 /etc 底下,檔案大小介於 50K 到 60K 之間的檔案,並且將許可權完整的列出 (ls -l):
          •   find /etc -size +50k -a -size -60k -exec ls -l {} \;
        • 嘗試用 find 找出目前 linux 系統中,所有具有 SUID 的檔案有哪些?
          •   find / -perm +4000 -print
        • 找出 /etc 底下,容量大於 1500K 以及容量等於 0 的檔案:
          •   find /etc -size +1500k -o -size 0
        • 找出 /etc 底下,檔案容量大於 50K 丏檔案所屬人丌是 root 的檔名,且將許可權完整的列出 (ls -l);
          •   find /etc -size +50k -a ! -user root -exec ls -ld {} \;
          •      find /etc -size +50k -a ! -user root -type f -exec ls -l {} \; 均可
        • 找出 /etc 底下,3天前5天內更改過的檔案
          •   find /etc -mtime +3 -a -mtime -5 -exec ls -l {} \;

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 在一Linux伺服器上檢查是否安裝了一些包時,遇到老是提示"package compat-libstdc++ is not installed" [root@DB-Server ~]# rpm -q --qf '%{NAME}-%{VERSION}-%{RELEASE} (%{ARCH})\n' b... ...
  • Mac10安裝雙系統 為了有一個純凈的開發環境,就在mac電腦中安裝windows虛擬機。剛開始使用還很順利,兩個系統的交互很方便,mac用來下載、搜索和寫筆記;windows純開發。時間長了以後關機的時間越來越慢。特別是東西多了之後要五分多鐘才能關掉,整個人都不好了。於是,我決定試一試雙系統。雖然 ...
  • 序言: 前幾天跟朋友開玩笑說,要不我們一起來學習一下swift編程語言吧~我們就抱著玩玩的態度,沒有想過要做出什麼優秀的app或者產品出來,只是想去瞭解一下swift這門編程語言而已。基於這種情況,個人覺得因此而去買台mac,有點浪費,況且本人也是年初的時候剛剛升級了自己的電腦。 所以網上吧啦吧啦, ...
  • 1.文件介紹 /etc/pam.d/vsftpd中ftpuser、user_list文件說明;(在file=後添加改文件路徑)/etc/vsftpd.conf中userlist_enable、userlist_deny的解釋。 為了安全,管理員不希望一些擁有過大許可權的帳號(如root)或系統自帶不常 ...
  • You can get Oprofile RPM from "https://www.rpmfind.net/" How to use Oprofile tools: Get report Steps : 1. opcontrol init //載入模塊,mout /dev/oprofile 創建必 ...
  • 一、rsync 簡介 Rsync(remote synchronize)是一個遠程數據同步工具,可通過LAN/WAN快速同步多台主機間的文件,也可以使用 Rsync 同步本地硬碟中的不同目錄。 Rsync 是用於取代rcp的一個工具,Rsync使用所謂的 “Rsync 演算法” 來使本地和遠程兩個主機 ...
  • 在Linux下如何解壓iso類型的文件呢? 可以使用mount命令來處理 [root@DB-Server tmp]# ls /tmp/rhel-server-5.7-x86_64-dvd.iso/tmp/rhel-server-5.7-x86_64-dvd.iso[root@DB-Server tm... ...
  • 本篇大概介紹一下在Windows Server 2012 R2上安裝和部署SCVMM的過程及其註意事項。下圖是我們數據中心SCVMM的基本架構,其中 SCVMM Database 是用於存儲了所有配置信息和狀態信息的Sql Server資料庫,為實現高可用,該Sql Server也可以配置成Sql ... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...