天天看點

Linux中更改檔案屬性1、chown2、chgrp3、chmod4、touch

時間:2017.11.28

作者:李強

參考:man,info,magedu講義

聲明:以下英文純屬個人翻譯,英文B級,歡迎糾正,以下内容純屬個人了解,并沒有對錯,隻是參考,盜版不糾,才能有限,希望不誤人子弟為好。

Changing file attributes

chown invocation:: Change file owner and group

chgrp invocation:: Change group ownership

chmod invocation:: Change access permissions

touch invocation:: Change file timestamps

具體的選項和作用說明:

--dereference (預設)影響的是符号連結連結的參考檔案而不是符号連結本身

-h --no-dereference,和--dereference相反,影響的是符号連結本身而不是引用的檔案。

-f --silent,--quiet,禁止大多數錯誤消息

--from=OLD-OWNER 更改檔案的所有者,僅僅這個檔案被目前的所有者修改時,才能修改其所屬為其他。比如這個檔案正在被使用,突然被root使用者給更換了使用者而導緻無法使用了的問題。降低下風險。

-c --changes,類似-v參數,但隻有改變的時候才會顯示

-v --verbose 顯示過程

--reference=RFILE 參考檔案的owner和group值而不是手動指定owner:group的值

--preserve-root (預設)不特殊對待根目錄,可以改變根目錄的所有者所屬組

--no-preserve-root 不能對根目錄做遞歸操作

-R --recursive,遞歸,危險的操作,會丢失原檔案的所有者所屬組資訊,

下面的選項指定在指定R選項時層次結構是如何周遊的。如果超過一個被指定,隻有最後一個生效。

-H 如果指令行參數是指向目錄的符号連結,周遊它。

-L 

-P (預設)不要周遊任何符号連結,如果沒有指定-H,-L或者-P

這裡有幾種格式帶表不同的含義:

OWNER 改變檔案的所有者

OWNER:GROUP 改變檔案的所有者和所屬組

OWNER: 改變檔案的所有者和所屬組為所有者的組

:GROUP 改變檔案的所屬組

: 什麼都不改變

在一些老的腳本還會使用“ . ”來代替 “ :” ,但是建議不要再使用,會出現一些不良後果,但是是相容的,新的腳本還是建議使用colon冒号,靠譜。

owner和group可以使用數字和單詞2種方式來表示。

chown -h -R --from=OLDUSER NEWUSER /

--reference=RFILE 參考檔案group值而不是手動指定group的值,就這裡和chown不一樣。chown是參考檔案的owner和group的值。

##還有沒有--from=OLDUSER 這個選項,其他和chown一個模子刻出來,寫程式的的人都是同樣的

--no-preserve-root 允許從根遞歸删除檔案,不用對根特别對待,

--preserve-root 未能在“/”上遞歸操作,可以用上面的指令取消,就可以删了

--reference=RFILE 想要繼承别的檔案權限的時候使用,省自己寫了

-R, --recursive 針對目錄下的檔案繼承目錄的權限使用,省事

-v, --verbose 顯示設定權限的操作過程

-f, --silent,--quite 禁止顯示大多數錯誤

此指令可以也可修改suid,sgid,sticky

符号模式。

字母模式

-a 修改access time

-m 修改motification time

-c --no-create 如果後面跟的檔案不存在不建立檔案

-h --no-dereference 影響每一個連結檔案而不是去影響間接引用的檔案

-d --date=STRING

-f 此參數将忽略不予處理,僅負責解決BSD版本touch指令的相容性問題

-t STAMP 用時間格式為 [[CC]YY]MMDDhhmm[.ss] 如果cc為20,那麼yy範圍是0-68,如果為19那麼範圍為69-99,如果沒指定就是目前年份

--time=WORD 單詞如果是access或者atime 等價于-a ,如果是modify或者是mtime等價于-m。更改的時間是atime和mtime

-r --reference=FILE 引用檔案的時間而不是目前時間,可以和-d配合使用,比如 touch -r foo -d "-5 minutes" file 意思就是建立file檔案然後修改其時間為foo檔案時間減去5分鐘的時間。如果-r 跟的是符号檔案使用符号檔案的引用檔案的時間戳,除非有-h選項。

預設不加選項就是更改檔案的所有時間戳值,atime,mtime,ctime。隻有目前時間和檔案的atime時間相比超過一天才會避免頻繁修改時間而帶來不必要的資源消耗,通過chattr +A 可以鎖定檔案的atime不許修改,使用者檔案經常被通路時候。

所有程式執行後的程序權限和使用使用者有關,和程式是否有suid和sgid有關。

注意事項:

1、chown user:group file/direc 如果在設定檔案的時候通過chown設定的時候要注意,當隻有user:的時候,檔案的所有者改為user,所有組就改為user的所有組了,user 或者group 或 :group 都沒有問題,

2、還有一個問題就是chown 加上-R 的時候要注意了,這個是遞歸recursive的動作,如果你不确定,回車,會導緻這個檔案夾下的所有檔案的所有者和所有組都會被修改,這是很危險的一個動作。

3、chmod -R  a=rwX  dir 遞歸修改權限的時候,如果目錄下有檔案有x權限才會給其他角色x權限,如果沒有,不會像chmod -R  a=rwx dir 給檔案加上x權限。

本文轉自 lajifeiwomoshu 51CTO部落格,原文連結:http://blog.51cto.com/lajifeiwomoshu/2045312

繼續閱讀