1. 程式人生 > >Linux基礎及常用命令(筆試面試必備)

Linux基礎及常用命令(筆試面試必備)

  1. 目錄的相關操作:

    • cd (變換目錄)

    • pwd (顯示目前所在的目錄)

      [root@www ~]# pwd [-P]
      選項與引數:
      -P  :顯示出確實的路徑,而非使用連結 (link) 路徑。
      範例:單純顯示出目前的工作目錄:
      [root@www ~]# pwd
      /root   <== 顯示出目錄啦~
      範例:顯示出實際的工作目錄,而非連結檔本身的目錄名而已
      [root@www ~]# cd /var/mail   <==注意,/var/mail是一個連結檔
      [root@www mail]# pwd
      /var/mail         <==列出目前的工作目錄
      [root@www
      mail]# pwd -P /var/spool/mail <==怎麼回事?有沒有加 -P 差很多~ [root@www mail]# ls -ld /var/mail lrwxrwxrwx 1 root root 10 Sep 4 17:54 /var/mail -> spool/mail # 看到這裡應該知道為啥了吧?因為 /var/mail 是連結檔,連結到 /var/spool/mail # 所以,加上 pwd -P 的選項後,會不以連結檔的資料顯示,而是顯示正確的完整路徑啊!
    • mkdir (建立新目錄)
      [[email protected] ~]# mkdir [-mp] 目錄名稱
      選項與引數: -m :配置檔案的許可權喔!直接配置,不需要看預設許可權 (umask) 的臉色~ -p :幫助你直接將所需要的目錄(包含上一級目錄)遞迴建立起來! 範例:請到/tmp底下嘗試建立數個新目錄看看: [[email protected] ~]# cd /tmp [[email protected] tmp]# mkdir test <==建立一名為 test 的新目錄 [[email protected] tmp]# mkdir test1/test2/test3/test4 mkdir: cannot create directory `test1/test2/test3/test4': No such file or directory <== 沒辦法直接建立此目錄啊! [
      [email protected]
      tmp]# mkdir -p test1/test2/test3/test4 # 加了這個 -p 的選項,可以自行幫你建立多層目錄! 範例:建立許可權為rwx--x--x的目錄 [[email protected] tmp]# mkdir -m 711 test2 [[email protected] tmp]# ls -l drwxr-xr-x 3 root root 4096 Jul 18 12:50 test drwxr-xr-x 3 root root 4096 Jul 18 12:53 test1 drwx--x--x 2 root root 4096 Jul 18 12:54 test2 # 仔細看上面的許可權部分,如果沒有加上 -m 來強制配置屬性,系統會使用預設屬性。 # 那麼你的預設屬性為何?這要透過底下介紹的 umask 才能瞭解喔! ^_^
    • rmdir (刪除『空』的目錄)
      [root@www ~]# rmdir [-p] 目錄名稱
      選項與引數:
      -p :連同上一級『空的』目錄也一起刪除
      範例:將於mkdir範例中建立的目錄(/tmp底下)刪除掉!
      [root@www tmp]# ls -l   <==看看有多少目錄存在?
      drwxr-xr-x  3 root  root 4096 Jul 18 12:50 test
      drwxr-xr-x  3 root  root 4096 Jul 18 12:53 test1
      drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
      [root@www tmp]# rmdir test   <==可直接刪除掉,沒問題
      [root@www tmp]# rmdir test1  <==因為尚有內容,所以無法刪除!
      rmdir: `test1': Directory not empty
      [[email protected] tmp]# rmdir -p test1/test2/test3/test4
      [[email protected] tmp]# ls -l        <==您看看,底下的輸出中test與test1不見了!
      drwx--x--x  2 root  root 4096 Jul 18 12:54 test2
      # 瞧!利用 -p 這個選項,立刻就可以將 test1/test2/test3/test4 一次刪除~
      # 不過要注意的是,這個 rmdir 僅能『刪除空的目錄』喔!
      
  2. 檔案與目錄管理
    • 檔案與目錄的檢視: ls
      [[email protected] ~]# ls [-aAdfFhilnrRSt] 目錄名稱
      [[email protected] ~]# ls [--color={never,auto,always}] 目錄名稱
      [[email protected] ~]# ls [--full-time] 目錄名稱
      選項與引數:
      -a  :全部的檔案,連同隱藏檔( 開頭為 . 的檔案) 一起列出來(常用)
      -A  :全部的檔案,連同隱藏檔,但不包括 . 與 .. 這兩個目錄
      -d  :僅列出目錄本身,而不是列出目錄內的檔案資料(常用)
      -f  :直接列出結果,而不進行排序 (ls 預設會以檔名排序!)
      -F  :根據檔案、目錄等資訊,給予附加資料結構,例如:
      *:代表可執行檔; /:代表目錄; =:代表 socket 檔案; |:代表 FIFO 檔案;
      -h  :將檔案容量以人類較易讀的方式(例如 GB, KB 等等)列出來;
      -i  :列出 inode 號碼,inode 的意義下一章將會介紹;
      -l  :長資料串列出,包含檔案的屬性與許可權等等資料;(常用)
      -n  :列出 UID 與 GID 而非使用者與群組的名稱 (UID與GID會在帳號管理提到!)
      -r  :將排序結果反向輸出,例如:原本檔名由小到大,反向則為由大到小;
      -R  :連同子目錄內容一起列出來,等於該目錄下的所有檔案都會顯示出來;
      -S  :以檔案容量大小排序,而不是用檔名排序;
      -t  :依時間排序,而不是用檔名。
      --color=never  :不要依據檔案特性給予顏色顯示;
      --color=always :顯示顏色
      --color=auto   :讓系統自行依據配置來判斷是否給予顏色
      --full-time    :以完整時間模式 (包含年、月、日、時、分) 輸出
      --time={atime,ctime} :輸出 access 時間或改變許可權屬性時間 (ctime) 
                       而非內容變更時間 (modification time)
      
    • cp (複製檔案或目錄)
      [email protected] ~]# cp [-adfilprsu] 來源檔(source) 目標檔(destination)
      [[email protected] ~]# cp [options] source1 source2 source3 .... directory
      選項與引數:
      -a  :相當於 -pdr 的意思,至於 pdr 請參考下列說明;(常用)
      -d  :若來源檔為連結檔的屬性(link file),則複製連結檔屬性而非檔案本身;
      -f  :為強制(force)的意思,若目標檔案已經存在且無法開啟,則移除後再嘗試一次;
      -i  :若目標檔(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)
      -l  :進行硬式連結(hard link)的連結檔建立,而非複製檔案本身;
      -p  :連同檔案的屬性一起復制過去,而非使用預設屬性(備份常用);
      -r  :遞迴持續複製,用於目錄的複製行為;(常用)
      -s  :複製成為符號連結檔 (symbolic link),亦即『捷徑』檔案;
      -u  :若 destination 比 source 舊才升級 destination !
      最後需要注意的,如果來源檔有兩個以上,則最後一個目的檔一定要是『目錄』才行!
      
    • rm (移除檔案或目錄)
      [root@www ~]# rm [-fir] 檔案或目錄
      選項與引數:
      -f  :就是 force 的意思,忽略不存在的檔案,不會出現警告資訊;
      -i  :互動模式,在刪除前會詢問使用者是否動作
      -r  :遞迴刪除啊!最常用在目錄的刪除了!這是非常危險的選項!!!
      範例一:將剛剛在 cp 的範例中建立的 bashrc 刪除掉!
      [root@www ~]# cd /tmp
      [root@www tmp]# rm -i bashrc
      rm: remove regular file `bashrc'? y
      # 如果加上 -i 的選項就會主動詢問喔,避免你刪除到錯誤的檔名!
      範例二:透過萬用位元組*的幫忙,將/tmp底下開頭為bashrc的檔名通通刪除:
      [[email protected] tmp]# rm -i bashrc*
      # 注意那個星號,代表的是 0 到無窮多個任意位元組喔!很好用的東西!
      範例三:將 cp 範例中所建立的 /tmp/etc/ 這個目錄刪除掉!
      [[email protected] tmp]# rmdir /tmp/etc
      rmdir: etc: Directory not empty  <== 刪不掉啊!因為這不是空的目錄!
      [[email protected] tmp]# rm -r /tmp/etc
      rm: descend into directory `/tmp/etc'? y
      ....(中間省略)....
      # 因為身份是 root ,預設已經加入了 -i 的選項,所以你要一直按 y 才會刪除!
      # 如果不想要繼續按 y ,可以按下『 [ctrl]-c 』來結束 rm 的工作。
      # 這是一種保護的動作,如果確定要刪除掉此目錄而不要詢問,可以這樣做:
      [root@www tmp]# \rm -r /tmp/etc
      # 在命令前加上反斜線,可以忽略掉 alias 的指定選項喔!至於 alias 我們在bash再談!
      範例四:刪除一個帶有 - 開頭的檔案
      [root@www tmp]# touch ./-aaa-  <==touch這個命令可以建立空檔案!
      [root@www tmp]# ls -l 
      -rw-r--r-- 1 root  root      0 Sep 24 15:03 -aaa-  <==檔案大小為0,所以是空檔案
      [root@www tmp]# rm -aaa-
      Try `rm --help' for more information.  <== 因為 "-" 是選項嘛!所以系統誤判了!
      [[email protected] tmp]# rm ./-aaa-
      
    • mv (移動檔案與目錄,或更名)
      [root@www ~]# mv [-fiu] source destination
      [root@www ~]# mv [options] source1 source2 source3 .... directory
      選項與引數:
      -f  :force 強制的意思,如果目標檔案已經存在,不會詢問而直接覆蓋;
      -i  :若目標檔案 (destination) 已經存在時,就會詢問是否覆蓋!
      -u  :若目標檔案已經存在,且 source 比較新,才會升級 (update)
      範例一:複製一檔案,建立一目錄,將檔案移動到目錄中
      [root@www ~]# cd /tmp
      [root@www tmp]# cp ~/.bashrc bashrc
      [root@www tmp]# mkdir mvtest
      [root@www tmp]# mv bashrc mvtest
      # 將某個檔案移動到某個目錄去,就是這樣做!
      範例二:將剛剛的目錄名稱更名為 mvtest2
      [root@www tmp]# mv mvtest mvtest2 <== 這樣就更名了!簡單~
      # 其實在 Linux 底下還有個有趣的命令,名稱為 rename ,
      # 該命令專職進行多個檔名的同時更名,並非針對單一檔名變更,與mv不同。請man rename
      範例三:再建立兩個檔案,再全部移動到 /tmp/mvtest2 當中
      [root@www tmp]# cp ~/.bashrc bashrc1
      [root@www tmp]# cp ~/.bashrc bashrc2
      [root@www tmp]# mv bashrc1 bashrc2 mvtest2
      # 注意到這邊,如果有多個來原始檔或目錄,則最後一個目標檔一定是『目錄!』
      # 意思是說,將所有的資料移動到該目錄的意思!
      
  3. 檔案內容查閱

    直接檢視檔案內容:
    cat 由第一行開始顯示檔案內容
    tac 從最後一行開始顯示,可以看出 tac 是 cat 的倒著寫!
    nl 顯示的時候,順道輸出行號!
    可翻頁檢視:
    more 一頁一頁的顯示檔案內容
    less 與 more 類似,但是比 more 更好的是,他可以往前翻頁!
    資料擷取:
    head 只看頭幾行
    tail 只看尾巴幾行
    非純文字檔:
    od 以二進位的方式讀取檔案內容!

    • cat (concatenate)
      [root@www ~]# cat [-AbEnTv]
      選項與引數:
      -A  :相當於 -vET 的整合選項,可列出一些特殊字元而不是空白而已;
      -b  :列出行號,僅針對非空白行做行號顯示,空白行不標行號!
      -E  :將結尾的斷行位元組 $ 顯示出來;
      -n  :列印出行號,連同空白行也會有行號,與 -b 的選項不同;
      -T  :將 [tab] 按鍵以 ^I 顯示出來;
      -v  :列出一些看不出來的特殊字元
      範例一:檢閱 /etc/issue 這個檔案的內容
      [root@www ~]# cat /etc/issue
      CentOS release 5.3 (Final)
      Kernel \r on an \m
      範例二:承上題,如果還要加印行號呢?
      [root@www ~]# cat -n /etc/issue
      1  CentOS release 5.3 (Final)
      2  Kernel \r on an \m
      3
      # 看到了吧!可以印出行號呢!這對於大檔案要找某個特定的行時,有點用處!
      # 如果不想要編排空白行的行號,可以使用『cat -b /etc/issue』,自己測試看看:
      範例三:將 /etc/xinetd.conf 的內容完整的顯示出來(包含特殊位元組)
      [root@www ~]# cat -A /etc/xinetd.conf
      #$
      ....(中間省略)....
      $
      defaults$
      {$
      # The next two items are intended to be a quick access place to$
      ....(中間省略)....
      ^Ilog_type^I= SYSLOG daemon info $
      ^Ilog_on_failure^I= HOST$
      ^Ilog_on_success^I= PID HOST DURATION EXIT$
      ....(中間省略)....
      
    • tac (反向列示)
      [root@www ~]# tac /etc/issue
      Kernel \r on an \m
      CentOS release 5.3 (Final)
      # 嘿嘿!與剛剛上面的範例一比較,是由最後一行先顯示喔!
      
    • nl (新增行號列印)
      [root@www ~]# nl [-bnw] 檔案
      選項與引數:
      -b  :指定行號指定的方式,主要有兩種:
       -b a :表示不論是否為空行,也同樣列出行號(類似 cat -n);
       -b t :如果有空行,空的那一行不要列出行號(預設值);
      -n  :列出行號表示的方法,主要有三種:
       -n ln :行號在螢幕的最左方顯示;
       -n rn :行號在自己欄位的最右方顯示,且不加 0 ;
       -n rz :行號在自己欄位的最右方顯示,且加 0 ;
      -w  :行號欄位的佔用的位數。
      範例一:用 nl 列出 /etc/issue 的內容
      [root@www ~]# nl /etc/issue
      1  CentOS release 5.3 (Final)
      2  Kernel \r on an \m
      # 注意看,這個檔案其實有三行,第三行為空白(沒有任何位元組),
      # 因為他是空白行,所以 nl 不會加上行號喔!如果確定要加上行號,可以這樣做:
      [root@www ~]# nl -b a /etc/issue
      1  CentOS release 5.3 (Final)
      2  Kernel \r on an \m
      3
      # 呵呵!行號加上來羅~那麼如果要讓行號前面自動補上 0 呢?可這樣
      [root@www ~]# nl -b a -n rz /etc/issue
      000001  CentOS release 5.3 (Final)
      000002  Kernel \r on an \m
      000003
      # 嘿嘿!自動在自己欄位的地方補上 0 了~預設欄位是六位數,如果想要改成 3 位數?
      [root@www ~]# nl -b a -n rz -w 3 /etc/issue
      001     CentOS release 5.3 (Final)
      002     Kernel \r on an \m
      003
      
    • more (一頁一頁翻動)
      [root@www ~]# more /etc/man.config
      #
      # Generated automatically from man.conf.in by the
      # configure script.
      #
      # man.conf from man-1.6d
      ....(中間省略)....
      --More--(28%)  <== 重點在這一行喔!你的游標也會在這裡等待你的命令
      
      1) 空白鍵 (space):代表向下翻一頁;
      2) Enter :代表向下翻『一行』;
      3) /字串 :代表在這個顯示的內容當中,向下搜尋『字串』這個關鍵字;
      4) :f :立刻顯示出檔名以及目前顯示的行數;
      5) q :代表立刻離開 more ,不再顯示該檔案內容。
      6) b 或 [ctrl]-b :代表往回翻頁,不過這動作只對檔案有用,對管線無用。
    • less (一頁一頁翻動)
      [root@www ~]# less /etc/man.config
      #
      # Generated automatically from man.conf.in by the
      # configure script.
      #
      # man.conf from man-1.6d
      ....(中間省略)....
      :   <== 這裡可以等待你輸入命令!
      
      1) 空白鍵 :向下翻動一頁;
      2) [pagedown]:向下翻動一頁;
      3) [pageup] :向上翻動一頁;
      4) /字串 :向下搜尋『字串』的功能;
      5) ?字串 :向上搜尋『字串』的功能;
      6) n :重複前一個搜尋 (與 / 或 ? 有關!)
      7) N :反向的重複前一個搜尋 (與 / 或 ? 有關!)
      8) q :離開 less 這個程式;
    • head (取出前面幾行)
      [root@www ~]# head [-n number] 檔案 
      選項與引數:
      -n  :後面接數字,代表顯示幾行的意思
      [root@www ~]# head /etc/man.config
      # 預設的情況中,顯示前面十行!若要顯示前 20 行,就得要這樣:
      [root@www ~]# head -n 20 /etc/man.config
      範例:如果後面100行的資料都不列印,只列印/etc/man.config的前面幾行,該如何是好?
      [root@www ~]# head -n -100 /etc/man.config
      
    • tail (取出後面幾行)
      [root@www ~]# tail [-n number] 檔案 
      選項與引數:
      -n  :後面接數字,代表顯示幾行的意思
      -f  :表示持續偵測後面所接的檔名,要等到按下[ctrl]-c才會結束tail的偵測
      [root@www ~]# tail /etc/man.config
      # 預設的情況中,顯示最後的十行!若要顯示最後的 20 行,就得要這樣:
      [root@www ~]# tail -n 20 /etc/man.config
      範例一:如果不知道/etc/man.config有幾行,卻只想列出100行以後的資料時?
      [root@www ~]# tail -n +100 /etc/man.config
      範例二:持續偵測/var/log/messages的內容
      [root@www ~]# tail -f /var/log/messages
      <==要等到輸入[crtl]-c之後才會離開tail這個命令的偵測!
      
    • 非純文字檔: od
      [root@www ~]# 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 ;
      範例一:請將/usr/bin/passwd的內容使用ASCII方式來展現!
      [root@www ~]# od -t c /usr/bin/passwd
      0000000 177   E   L   F 001 001 001  \0  \0  \0  \0  \0  \0  \0  \0  \0
      0000020 002  \0 003  \0 001  \0  \0  \0 260 225 004  \b   4  \0  \0  \0
      0000040 020   E  \0  \0  \0  \0  \0  \0   4  \0      \0  \a  \0   (  \0
      0000060 035  \0 034  \0 006  \0  \0  \0   4  \0  \0  \0   4 200 004  \b
      0000100   4 200 004  \b 340  \0  \0  \0 340  \0  \0  \0 005  \0  \0  \0
      .....(後面省略)....
      # 最左邊第一欄是以 8 進位來表示bytes數。以上面範例來說,第二欄0000020代表開頭是
      # 第 16 個 byes (2x8) 的內容之意。
      範例二:請將/etc/issue這個檔案的內容以8進位列出儲存值與ASCII的對照表
      [root@www ~]# od -t oCc /etc/issue
      0000000 103 145 156 164 117 123 040 162 145 154 145 141 163 145 040 065
           C   e   n   t   O   S       r   e   l   e   a   s   e       5
      0000020 056 062 040 050 106 151 156 141 154 051 012 113 145 162 156 145
           .   2       (   F   i   n   a   l   )  \n   K   e   r   n   e
      0000040 154 040 134 162 040 157 156 040 141 156 040 134 155 012 012
           l       \   r       o   n       a   n       \   m  \n  \n
      0000057
      # 如上所示,可以發現每個位元組可以對應到的數值為何!
      # 例如e對應的記錄數值為145,轉成十進位:1x8^2+4x8+5=101。
      
    • 修改檔案時間或建置新檔: touch
      1) modification time (mtime):
      當該檔案的『內容資料』變更時,就會升級這個時間!內容資料指的是檔案的內容,而不是檔案的屬性或許可權喔!
      2) status time (ctime):
      當該檔案的『狀態 (status)』改變時,就會升級這個時間,舉例來說,像是許可權與屬性被更改了,都會升級這個時間啊。
      3) access time (atime):
      當『該檔案的內容被取用』時,就會升級這個讀取時間 (access)。舉例來說,我們使用 cat 去讀取 /etc/man.config , 就會升級該檔案的 atime 了。
      [root@www ~]# touch [-acdmt] 檔案
      選項與引數:
      -a  :僅修訂 access time;
      -c  :僅修改檔案的時間,若該檔案不存在則不建立新檔案;
      -d  :後面可以接欲修訂的日期而不用目前的日期,也可以使用 --date="日期或時間"
      -m  :僅修改 mtime ;
      -t  :後面可以接欲修訂的時間而不用目前的時間,格式為[YYMMDDhhmm]
      範例一:新建一個空的檔案並觀察時間
      [root@www ~]# cd /tmp
      [root@www tmp]# touch testtouch
      [root@www tmp]# ls -l testtouch
      -rw-r--r-- 1 root root 0 Sep 25 21:09 testtouch
      # 注意到,這個檔案的大小是 0 呢!在預設的狀態下,如果 touch 後面有接檔案,
      # 則該檔案的三個時間 (atime/ctime/mtime) 都會升級為目前的時間。若該檔案不存在,
      # 則會主動的建立一個新的空的檔案喔!例如上面這個例子!
      範例二:將 ~/.bashrc 複製成為 bashrc,假設複製完全的屬性,檢查其日期
      [root@www tmp]# cp -a ~/.bashrc bashrc
      [root@www tmp]# ll bashrc; ll --time=atime bashrc; ll --time=ctime bashrc
      -rw-r--r-- 1 root root 176 Jan  6  2007 bashrc  <==這是 mtime
      -rw-r--r-- 1 root root 176 Sep 25 21:11 bashrc  <==這是 atime
      -rw-r--r-- 1 root root 176 Sep 25 21:12 bashrc  <==這是 ctime
      
      論如何, touch 這個命令最常被使用的情況是:
      建立一個空的檔案;
      將某個檔案日期修訂為目前 (mtime 與 atime)
  4. 檔案與目錄的預設許可權與隱藏許可權

    • 檔案預設許可權:umask
      [root@www ~]# umask
      0022             <==與一般許可權有關的是後面三個數字!
      [root@www ~]# umask -S
      u=rwx,g=rx,o=rx
      
      若使用者建立為『檔案』則預設為:-rw-rw-rw-
      若使用者建立為『目錄』則預設為:drwxrwxrwx
    • chattr (配置檔案隱藏屬性)
      [[email protected] ~]# chattr [+-=][ASacdistu] 檔案或目錄名稱
      選項與引數:+  :新增某一個特殊引數,其他原本存在引數則不動。-  :移除某一個特殊引數,其他原本存在引數則不動。
      =   :配置一定,且僅有後面接的引數
      A  :當配置了 A 這個屬性時,若你有存取此檔案(或目錄)時,他的存取時間 atime
      將不會被修改,可避免I/O較慢的機器過度的存取磁碟。這對速度較慢的計算機有幫助
      S  :一般檔案是非同步寫入磁碟的(原理請參考第五章sync的說明),如果加上 S 這個
      屬性時,當你進行任何檔案的修改,該更動會『同步』寫入磁碟中。
      a  :當配置 a 之後,這個檔案將只能新增資料,而不能刪除也不能修改資料,只有root 
      才能配置這個屬性。 
      c  :這個屬性配置之後,將會自動的將此檔案『壓縮』,在讀取的時候將會自動解壓縮,
      但是在儲存的時候,將會先進行壓縮後再儲存(看來對於大檔案似乎蠻有用的!)
      d  :當 dump 程式被執行的時候,配置 d 屬性將可使該檔案(或目錄)不會被 dump 備份
      i  :這個 i 可就很厲害了!他可以讓一個檔案『不能被刪除、改名、配置連結也無法
      寫入或新增資料!』對於系統安全性有相當大的助益!只有 root 能配置此屬性
      s  :當檔案配置了 s 屬性時,如果這個檔案被刪除,他將會被完全的移除出這個硬碟
      空間,所以如果誤刪了,完全無法救回來了喔!
      u  :與 s 相反的,當使用 u 來配置檔案時,如果該檔案被刪除了,則資料內容其實還
      存在磁碟中,可以使用來救援該檔案喔!
      注意:屬性配置常見的是 a 與 i 的配置值,而且很多配置值必須要身為 root 才能配置
      範例:請嘗試到/tmp底下建立檔案,並加入 i 的引數,嘗試刪除看看。
      [[email protected] ~]# cd /tmp
      [[email protected] tmp]# touch attrtest     <==建立一個空檔案
      [[email protected] tmp]# chattr +i attrtest <==給予 i 的屬性
      [root@www tmp]# rm attrtest        <==嘗試刪除看看
      rm: remove write-protected regular empty file `attrtest'? y
      rm: cannot remove `attrtest': Operation not permitted  <==操作不許可
      # 看到了嗎?呼呼!連 root 也沒有辦法將這個檔案刪除呢!趕緊解除配置!
      範例:請將該檔案的 i 屬性取消!
      [root@www tmp]# chattr -i attrtest
      
    • lsattr (顯示檔案隱藏屬性)
      [root@www ~]# lsattr [-adR] 檔案或目錄
      選項與引數:
      -a :將隱藏檔的屬性也秀出來;
      -d :如果接的是目錄,僅列出目錄本身的屬性而非目錄內的檔名;
      -R :連同子目錄的資料也一併列出來! 
      [root@www tmp]# chattr +aij attrtest
      [root@www tmp]# lsattr attrtest
      ----ia---j--- attrtest
      
  5. 檔案特殊許可權: SUID, SGID, SBIT
    • Set UID
      基本上SUID有這樣的限制與功能:

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

    • Set GID
      與 SUID 不同的是,SGID 可以針對檔案或目錄來配置!如果是對檔案來說, SGID 有如下的功能:

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

    • Sticky Bit
      SBIT 對於目錄的作用是:

      當使用者對於此目錄具有 w, x 許可權,亦即具有寫入的許可權時;
      當使用者在該目錄下建立檔案或目錄時,僅有自己與 root 才有權力刪除該檔案
      -
      換句話說:當甲這個使用者於 A 目錄是具有群組或其他人的身份,並且擁有該目錄 w 的許可權, 這表示『甲使用者對該目錄內任何人建立的目錄或檔案均可進行 "刪除/更名/搬移" 等動作。』 不過,如果將 A 目錄加上了 SBIT 的許可權專案時, 則甲只能夠針對自己建立的檔案或目錄進行刪除/更名/移動等動作,而無法刪除他人的檔案。

    • 相關推薦

      Linux基礎常用命令筆試面試必備

      目錄的相關操作: cd (變換目錄) pwd (顯示目前所在的目錄) [root@www ~]# pwd [-P] 選項與引數: -P :顯示出確實的路徑,而非使用連結 (link) 路徑。 範例:單純顯示出目前的工作目錄: [root@www ~]# pwd /root <== 顯示

      DAY-8 Linux基礎常用命令4

      打開 ip地址 grep 軟件包 linux基礎 tro mks 官網 vim 一、制作swap分區(命令) swapon –s 查看當前激活狀態的swap分區 free –m 以m為單位查看分區 swapoff關閉分區 swapon打開分區 添加swap分區——mks

      DAY-9 Linux基礎常用命令5

      mod conf 自己的路 linux操作 解包 二進制安裝 netstat iptables usr 一、Samba(類似共享網盤) 1、功能:Linux操作系統給win用戶共享文件用 2、如何部署 》》準備環境:iptables –F(清除防火墻)、systemctl

      Linux作業系統基礎常用命令

      Linux的基本原則:1、由目的單一的小程式組合,組合小程式完成複雜任務;2、一切皆檔案;3、儘量避免捕獲使用者介面;4、配置檔案儲存為純文字格式; GUI介面:Gnome:C語言;KDE:C++語言;XFace簡潔的,適合用在嵌入式平臺上的輕量級桌面系統;(圖形化介面)GLI介面:命令提示符(prompt

      Linux操作系統基礎常用命令

      隱藏 輸入 linux 目錄文件 層次 hle 鏈接文件 塊設備 ash Linux的基本原則:1、由目的單一的小程序組合,組合小程序完成復雜任務;2、一切皆文件;3、盡量避免捕獲用戶接口;4、配置文件保存為純文本格式; GUI接口:Gnome:C語言;KDE:C++語言;

      安裝JDK和Tomcat常用命令Linux

      檢視ip: -------------------------- ifconfig -a 配置網路選項 ------------------------ setup service network restart (配置完IP等必須重啟網路服務才生效) 檢視使用者登入資

      資料庫學習的一些基礎知識常用命令部分

      【資料庫基本概念】 一個表只能有一個主鍵(primary key),主鍵列不允許為空值(null) 一個表中可以有多個列作為主鍵列,但需要考慮最少性和穩定性 外來鍵(foreign key):確保“從表”中的某個資料項在“主表”中必須存在 【基本術語】 D

      Linux基礎常用命令整理

      Linux 作業系統的安裝   如今比較流線的linux作業系統 Centos Redhat  Fedora Ubuntu, 安裝作業系統的提前是要有作業系統的映象檔案(.iso檔案)並且必須為系統指定一個啟動盤;    Linux系統的安裝(公司只允許命令列模式)分為典型安裝和自定義安裝,一般

      Linux基礎常用命令整理

      Linux系統啟動流程   bios(找到啟動介質) --> mbr(找到boot loader  512B 446引導資訊 64分割槽資訊 2 標誌位 ) -->grub(選擇作業系統或者核心) -->kernel -->init   啟動BIOS程式 從儲存裝置中讀取

      linux[基礎]-07-常用命令[01]

      哪些 anaconda lsp cells user 信息 str add pan 顯示當且工作路徑和切換 1. Pwd :命令用於顯示當前工作路徑     Pwd 顯示當前工作路徑     Pwd – p 顯示真實路徑 2. cd: 切換

      第一周計算機Linux基礎簡單命令

      Linux基礎馮·諾伊曼計算架構:運算器,控制器,存儲器,輸入輸出設備。計算機最小單位是位bit8bits=1byte(字節)1024bytes=1KB1024KB=1MB1024MB=1GB1024GB=1TB 等等每1024個就上升1個計數單位。而硬盤廠商采用的是1000進制的,所以1T硬盤的實際大小

      Linux三劍客常用命令

      退出 強制 eof 喜歡 刪除文件 創建目錄 access 當前 cto 要記住的符號: >2>> 2>&1 6.1 把 /data 移動到 /root目錄下面#move mv [root@oldboyedu50 ~]# mv /

      Linux常用命令檔案與目錄

      1、pwd 檢視當前目錄(Print Working Directory) 2、cd 切換工作目錄(Change Directory) (1)格式:cd [目錄位置]   特殊目錄:   .當前目錄   ..上一級目錄   ~使用者主目錄   -上個

      mongodb基礎常用命令

      概念 文件 文件是mongodb中的最核心的概念,是其核心單元,我們可以將文件類比成關係型資料庫中的每一行資料。多個鍵及其關聯的值有序的放置在一起就是文件。 例: json {“name":"

      Linux常用命令不定期整理

      參考連線 系統性能 1、top : 動態實時顯示cpu、記憶體、程序等使用情況 2、df –h : 檢視系統記憶體及虛擬記憶體使用情況 (遇到磁碟已滿的情況) 3、du –sh * : 檢視目錄檔案大小 4、fdisk -l | grep Disk : 檢視

      Linux常用命令持續補充更新

      主機運維工程師對於Linux常用命名基本上都有自己的見解和工具集,對於我一個網路工程師出身來說,雖然現在管理著整個基礎設施運維團隊,Linux的很多常用命令自己曾經用過,感覺非常好用,但又容易忘記,所以通過此文進行記錄,希望對自己和對非專職主機運維的工程師能提供一些幫助! 一、過濾配置檔案中的註釋和空白

      linux系統常用命令超詳細講解

      目錄處理命令ls命令格式命令選項引數ls    -la    /etc對於命令的說明:1.存在簡化選項與完整選項 例如  -a等於 - -all  (一個用一個-呼叫 一個是用兩個-呼叫的)2.當有多個選項的時候是可以寫在一起的例如 -l 和–a可以寫成 -la 而且部分命令

      Linux常用命令附其他連結

      1、一些常用操作合集: Ubuntu使用wget命令列下載一張圖片 uabntu下壓縮/解壓檔案 Linux統計資料夾下的檔案數目 2、linux的主要發行版本: 1)RedHat Linux:紅帽企業級Linux,它有眾多的程式支援,同時也可以提供技術服務,由於他是商業化產品,所

      Linux-系統管理-常用命令

      以下介紹常用的幾個系統分析的命令以及常用方法: vmstat vmstat 是Virtual Meomory Statistics(虛擬記憶體統計)的縮寫,很多Linux發行版本都預設安裝了此命令工具。當然,不止對虛擬記憶體有統計,還可以利用vmst

      LinuxCentOS7常用命令持續更新中

      1)命令後帶-與--的引數區別: 引數用一橫的說明後面的引數是字元形式。引數用兩橫的說明後面的引數是單詞形式。 引數前有橫的是 System V風格。引數前沒有橫的是 BSD風格。 有關System V和BSD的其他區別: 系統啟動過程中 kernel 最後一步呼叫的