鸟哥linux笔记-目录与权限

chgrp [-R] dirname/filename


chown [-R] 帳號名稱 檔案或目錄
chown [-R] 帳號名稱:群組名稱 檔案或目錄


chmod [-R] 777 檔案或目錄


chmod  u=rwx,go=rx  .bashrc
chmod  a+w  .bashrc
chmod  a-x  .bashrc


权限:file和directory上的不同
file
r:读取file的内容
w:编辑,增加,修改file的内容
x:file可以被系统执行
directory:
r:read contents in directory
可以读取目录内的结构清单
w:modify contents of directory
具有移动目录结构清单的权限
a.新建file和directory
b.删除file和directory
c.改名
d.移动file和directory的位置
x:access directory
进入该目录的权限


我們的Linux在使用者登入時,都會將登錄的資料記錄在/var/log/wtmp那個檔案內,該檔案是一個data file,他能夠透過last這個指令讀出來! 但是使用cat時,會讀出亂碼~因為他是屬於一種特殊格式的檔案。

文件类型:
資料接口檔(sockets):
既然被稱為資料接口檔, 想當然爾,這種類型的檔案通常被用在網路上的資料承接了。我們可以啟動一個程式來監聽用戶端的要求, 而用戶端就可以透過這個socket來進行資料的溝通了。第一個屬性為 [ s ], 最常在/run或/tmp這些個目錄中看到這種檔案類型了。

Filesystem Hierarchy Standard (FHS)標準:


usr是Unix Software Resource的縮寫, 也就是『Unix作業系統軟體資源』所放置的目錄,而不是使用者的資料啦!

具体的标准可以参阅:http://linux.vbird.org/linux_basic/0210filepermission.php

FHS下的基本目录结构:


lsblk命令:


cp命令:

[root@study ~]# cp [options] source1 source2 source3 .... directory

選項與參數:
-a  :相當於 -dr --preserve=all 的意思,至於 dr 請參考下列說明;(常用)
-d  :若來源檔為連結檔的屬性(link file),則複製連結檔屬性而非檔案本身;
-f  :為強制(force)的意思,若目標檔案已經存在且無法開啟,則移除後再嘗試一次;
-i  :若目標檔(destination)已經存在時,在覆蓋時會先詢問動作的進行(常用)
-l  :進行硬式連結(hard link)的連結檔建立,而非複製檔案本身;
-p  :連同檔案的屬性(權限、用戶、時間)一起複製過去,而非使用預設屬性(備份常用);
-r  :遞迴持續複製,用於目錄的複製行為;(常用)

-s  :複製成為符號連結檔 (symbolic link),亦即『捷徑』檔案;
-u  :destination 比 source 舊才更新 destination,或 destination 不存在的情況下才複製。
--preserve=all :除了 -p 的權限相關參數外,還加入 SELinux 的屬性, links, xattr 等也複製了。

最後需要注意的,如果來源檔有兩個以上,則最後一個目的檔一定要是『目錄』才行!


mv命令:

[root@study ~]# mv [options] source1 source2 source3 .... directory
選項與參數:
-f  :force 強制的意思,如果目標檔案已經存在,不會詢問而直接覆蓋;
-i  :若目標檔案 (destination) 已經存在時,就會詢問是否覆蓋!

-u  :若目標檔案已經存在,且 source 比較新,才會更新 (update)


获取文件名或者目录名:

[root@study ~]# basename /etc/sysconfig/network
network         <== 很簡單!就取得最後的檔名~
[root@study ~]# dirname /etc/sysconfig/network
/etc/sysconfig  <== 取得的變成目錄名了!


读取file内容命令:

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

touch命令:修改檔案時間或建置新檔
modification time (mtime):
當該檔案的『內容資料』變更時,就會更新這個時間!內容資料指的是檔案的內容,而不是檔案的屬性或權限喔!

status time (ctime):
當該檔案的『狀態 (status)』改變時,就會更新這個時間,舉例來說,像是權限與屬性被更改了,都會更新這個時間啊。 

access time (atime):

當『該檔案的內容被取用』時,就會更新這個讀取時間 (access)。舉例來說,我們使用 cat 去讀取 /etc/man_db.conf , 就會更新該檔案的 atime 了

root@study ~]# date; ls -l /etc/man_db.conf ; ls -l --time=atime /etc/man_db.conf ; \
> ls -l --time=ctime /etc/man_db.conf # 這兩行其實是同一行喔!用分號隔開

Tue Jun 16 00:43:17 CST 2015  # 目前的時間啊!
-rw-r--r--. 1 root root 5171 Jun 10  2014 /etc/man_db.conf  # 在 2014/06/10 建立的內容 (mtime)
-rw-r--r--. 1 root root 5171 Jun 15 23:46 /etc/man_db.conf  # 在 2015/06/15 讀取過內容 (atime)
-rw-r--r--. 1 root root 5171 May  4 17:54 /etc/man_db.conf  # 在 2015/05/04 更新過狀態 (ctime)
# 為了要讓資料輸出比較好看,所以鳥哥將三個指令同時依序執行,三個指令中間用分號 (;) 隔開即可。


umask:需要被拿掉的权限,如 022,真正的权限就是 755

因為 umask 為 022 ,所以 user 並沒有被拿掉任何權限,不過 group 與 others 的權限被拿掉了 2 (也就是 w 這個權限),那麼當使用者:

建立檔案時:(-rw-rw-rw-) - (-----w--w-) ==> -rw-r--r--    注意:原本file就已經去除 x 的預設屬性了

建立目錄時:(drwxrwxrwx) - (d----w--w-) ==> drwxr-xr-x

chattr (設定檔案隱藏屬性)
chattr指令只能在Ext2/Ext3/Ext4的 Linux 傳統檔案系統上面完整生效, 其他的檔案系統可能就無法完整的支援這個指令了,例如 xfs 僅支援部份參數而已
[root@study ~]# 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 來設定檔案時,如果該檔案被刪除了,則資料內容其實還存在磁碟中,
     可以使用來救援該檔案喔!
注意1:屬性設定常見的是 a 與 i 的設定值,而且很多設定值必須要身為 root 才能設定
注意2:xfs 檔案系統僅支援 AadiS 而已


lsattr:显示file的隐藏属性


文件查找:

which 預設是找 PATH 內所規範的目錄,寻找二进制指令

whereis 只找系統中某些特定目錄底下的檔案而已,locate 則是利用資料庫來搜尋檔名,當然兩者就相當的快速, 並且沒有實際的搜尋硬碟內的檔案系統狀態,比較省時間


whereis 主要是針對 /bin /sbin 底下的執行檔, 以及 /usr/share/man 底下的 man page 檔案,跟幾個比較特定的目錄來處理而已
可以使用 whereis -l 來確認一下搜寻了哪些目录


[root@study ~]# whereis [-bmsu] 檔案或目錄名
選項與參數:
-l    :可以列出 whereis 會去查詢的幾個主要目錄而已
-b    :只找 binary 格式的檔案
-m    :只找在說明檔 manual 路徑下的檔案
-s    :只找 source 來源檔案
-u    :搜尋不在上述三個項目當中的其他特殊檔案


locate / updatedb
updatedb 指令會去讀取 /etc/updatedb.conf 這個設定檔的設定,然後再去硬碟裡面進行搜尋檔名的動作, 最後就更新整個資料庫檔案囉!因為 updatedb 會去搜尋硬碟,所以當你執行 updatedb 時,可能會等待數分鐘的時間喔!
updatedb命令的安装:yum install -y mlocate
updatedb:根據 /etc/updatedb.conf 的設定去搜尋系統硬碟內的檔名,並更新 /var/lib/mlocate 內的資料庫檔案;
locate:依據 /var/lib/mlocate 內的資料庫記載,找出使用者輸入的關鍵字檔名。


[root@study ~]# locate [-ir] keyword
選項與參數:
-i  :忽略大小寫的差異;
-c  :不輸出檔名,僅計算找到的檔案數量
-l  :僅輸出幾行的意思,例如輸出五行則是 -l 5
-S  :輸出 locate 所使用的資料庫檔案的相關資訊,包括該資料庫紀錄的檔案/目錄數量等
-r  :後面可接正規表示法的顯示方式


find:根据修改时间,文件大小等条件进行查询和操作,具体查看http://linux.vbird.org/linux_basic/0220filemanager.php#dir





猜你喜欢

转载自blog.csdn.net/SolitudeSky/article/details/80032546
今日推荐