生活随笔
收集整理的這篇文章主要介紹了
find 及权限
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?
文件查找?locate;???????1、非實時,模糊匹配,查找是根據全系統文件數據庫進行的;???????2、#?updatedb,?手動生成文件數據庫???????3、優勢:速度快??????????find;??????1、實時查找??????2、精確??????3、支持眾多查找標準??????4、遍歷指定目錄中的所有文件完全查找,速度慢;???????find?查找路徑?、?查找標準?、查找以后的處理運作?????查找路徑:默認為當前目錄?????查找標準:默認為指定路徑下的所有文件?????處理運作:默認為顯示?匹配標準;??????-name?‘FILENAME’:對文件名做精確查找?????? 文件名通配;?????? ?×:任意長度的任意字符?! ???????????????????????? 例如;find?/etc?-name?passwd*???????????????????????????????????可以查找到/etc/passwd文件中的passwd開頭后面跟著任意字符串的文件。???????????????????????????????????結果出現的形式如:??/etc/passwd.OLD??????/etc/pam.d/passwd???????/etc/passwd-?????/etc/passwd?????????????????????????????????????????? ?:匹配任意單個字符???????????????????????????????例如:1、find?/etc?-name??passwd?????????????????????????????????????可以查找到/etc/passwd文件中的passwd開頭為任意一個字符的文件。????????????????????????????????????結果出現的形式如:/etc/security/opasswd??????????????????????????????????2、find?/etc?-name?passwd?????????????????????????????????????可以查找到/etc/passwd文件中的passwd結尾為任意一個字符的文件。????????????????????????????????????結果出現的形式如:/etc/passwd-?????? []:匹配指定范圍內的任意單個字符。????????????????????????????例如:find?/etc?-name?[a-z]passwd?????????????????????????????????????可以查找/etc/passwd文件中的passwd開頭為任意一個小寫字母的文件?????????????????????????????????????結果出現的形式如:/etc/security/opasswd?????-iname?'FILENAME':文件名匹配時不區分大小寫????????????例如:?查找目錄a下的文件是w?,W.(先在目錄a下面創建一個文件w,W)????????????????????find?/a?-iname?w?????????????????????查找結果如:/a/W /a/w???????????????????-user?USERNAME:根據屬主查找????????????例如:查找tmp下的屬主為student的文件????????????????????find?/tmp?-user?student?????????????????????查找結果如:/tmp/passwd???????/tmp/root.inittab.2?????????????????????????-group?GROUPNAME:根據屬組查找????????????例如:查找tmp下的屬組為student的文件?????????????????????find?/tmp?-group?student????????????????????查找結果如:/tmp/passwd??????/tmp/root.inittab.2?????????????????????????-uid?UID?:根據UID查找????????????例如:find?/tmp?-uid??n(是UID)?????????????????-gid?GID?:?根據GID查找????????????例如:find?/tmp?-gid??n(是GID)?????????????????-nouser:查找沒有屬主的文件????????????例如:find?/etc?-nouser?????????????????-nogroup:查找沒有屬組的文件????????????例如:find?/etc?-nogroup?????????????????-type?????????f:?普通文件?????????????例如:?find?/tmp/?-type?f?????????d:?目錄文件?????????????例如:find?/etc/?-type?d?????????c:字符設備文件?????????l:符號鏈接文件?????????p:命令管道文件?????????s:套接字文件??????????????-regex?PATTERN:基于正則表達式進行文件名匹配?????????????????-size?根據大小查找(默認單位為字節)??????????????[?+|-]?#k??例如?+10k就是大于10k?????????????????????????-10k就是小于10k??????????????????????????????????例如?:find?/etc??-size?10k??????????????????????????????查找10k的認為小于1k以內的都為1k(如:9.1K、9.8K都算)?????????????????#M(同#K)????????????????#G(同#G)_??組合條件:?????????-a:??與(其次)????????????例如:查找一個不是目錄文件但是是普通文件?????????????????find?/tmp?-not?-type?d?-a?-type?f?????????-o:??或??????????????????例如:查找目錄/tmp下目錄文件或是普通文件????????????????find?/tmp?-type?d?-o?-type?f????????-not:??非(優先級最高)??????????????例如:查找非目錄文件????????????????find?/tmp?-not?-type?d????????-mtime?:被修改的時間(單位:天)???????????例如:查找5天之內修改過的文件????????????????find?/tmp?-mtime?-5???????-ctime?:改變的時間???(單位:天)???????????例如:查找5天前給變過的文件????????????????find?/tmp?-ctime?+5???????-atime?:訪問的時間(單位:天)????????????例如:查找30天之內訪問過的文件????????????????find?/tmp?-atime?-30?????????????[+|-]#??:+?指至少5天沒訪問過????????????????????-?指5天之內曾經訪問過???????-mmin:被修改時間??(單位是分鐘)???????-cmin:改變時間???????-amin:訪問時間?????????????????例如:?查找5分鐘之內訪問過的文件????????????????find?./?-amin?-5???????-perm?MODE?:根據文件權限來查找?????????????????????????/MODE:?任意一位匹配既滿足條件???????????例如:查看當前目錄下只要有一位權限匹配的就行????????????????find?./?-perm?/644?????????????-MODE:?精確匹配?。文件權限能夠完全包含此MODE才符合條件。例如查找其他用戶有執行權限的?。???????????例如:查找當前目錄下權限為rw_r__r__(屬主為讀寫不執行、屬組為讀不寫不執行、其它為讀不寫不執行)的文件????????????????find?./?-perm??-644(644是指rw_r__r__?)????????????????【當你用此命令的時候發現有很多文件,但是當你用ls?查看時文件并不是你想想的那么多,這時候你就會懷疑此?????????????????命令是錯誤的,不要懷疑,因為有很多符合的隱藏文件也顯示了出來。你可以用ls?-l?-a的命令查看就知道了?!??????運動:????????????-print:顯示(默認)?????-ls;類似ls?-l的形式顯示每一個文件的詳細?????????-ok?COMMAND?{}(大括號文件名稱占位符)?\;(結尾必須是\;):每一次操作都需要確認??????????例如:找到類型是目錄的文件把它的屬主屬組都改為能執行的權限;???????????find?./?-type?d?-ok?chmod?+x?{}?\;??????????【每一個更改的權限的文件它都會提示一下是否要更改?;卮饄就會更改(如:<?chmod?...?./?>??)?!?????-exec?COMMAND?{}?\;不需要確認????????????????????????????????????????例如:找到當前目錄下只要其它用戶有讀寫權限,并且將其改為讀權限??????????find?./?-perm?-006?-exec?chmod?o-w?{}?\;???????????例如:把權限是020的文件名字改為原來名字.new?????????????????find?./?-perm?-020?-exec?mv?{}?{}.new?\;???????????????????????????????????????????-xargs:從標準輸入接受進來命令并執行????????????????????????????????????例如:在目錄etc下的大于1M的文件追加到/tmp/etc.largefiles中去???????????????????1.用—exec寫:find?/etc?-size?+1M?-exec?echo?{}?>>?/tmp/etc.largefiles?\;????????????????????2.用-xargs寫:find?/etc?-size?+1M?|?xargs?echo?{}?>>?/tmp/etc.largefiles???????????????【然后用cat?/tmp/etc.largefiles查看。記號:用-xargs顯示的結果可不像用-exec顯示的結果???????????????????????-xargs顯示的結果是不是一個一行,而是中間用空格隔開的一行文本?!?特殊權限??passwd?:?s【passwd有個特殊權限是s】??SUID:運行某程序時,相應進程的屬主程序文件自身的屬主,而不是啟動者???chmod?u+s?FILE???chmod?u-s?FILE????如果FILE本身原來就有執行權限,則SUID顯示為s,否則顯示S??????例如:我們開始時用#?ls?-l?/bin/cat時顯示????????????-rwxr-xr-x?1?root?root?23260?May?11??2011?/bin/cat?????????????我們再用#?ls?-l?/etc/shadow查看是顯示????????????-r--------?1?root?root?1154?Feb?27?17:48?/etc/shadow????????????我們再用其它用戶$?cat?/etc/shadow切進去看看,發現無法查看,顯示【沒有權限】????????????cat:?/etc/shadow:?Permission?denied?????解決方案:?如果我們用chmod?u+s?/bin/cat時,我們再用ls?-l?/bin/cat查看,??????????????-rwsr-xr-x?1?root?root?23260?May?11??2011?/bin/cat?????????????【我們發現第一次查看的跟這一次有不同地方,不同地方在屬主的執行權限上,原來的x變成了s,讓用戶有了管理員的權限。有什么改變繼續往下看】??????????????有很多人又用ls?-l?/etc/shadow查看顯示的和第一次查看的權限一樣,就認為失敗了。不是這樣的,我們可以在切換用戶??????????????去看看,$?cat?/etc/shadow?這時候,我們發現已經可以查看/etc/shadow文件了???????????????SGID:運行某程序時,相應進程的屬組程序文件自身的屬組,而不是啟動者所屬的基本組??????chmod?g+s?FILE??????chmod?g-s?FILE???????例如:?有一個開發小組?develop?team中有三個用戶分別是hadoop?,hbase,hive????????????????我們期望這三個用戶在/etc/project/目錄下都能創建文件創建,這三個用戶創建的是一個項目,所以其中一個人寫的文件其它兩個人也可以看到???????????????也可以編輯,怎么實現??????????思考:這里我們可以讓這三個用戶屬于同一個基本組,不能是附加組,為什么???????????????因為每個用戶創建的文件的屬主是自己,屬組就是基本組而不是附加組。所以我們讓組有寫權限,并不意味著別人都能寫。???????????????我們可以這樣說hadoop的基本組是hadoop,創建了一個附加組是develop,而hadoop用戶在這里創建的任何一個文件其屬主都是hadoop,屬組是hadoop,???????????????而不是develop組。(更何況用戶創建的文件屬組也未必有寫權限)???????解決方案:1、首先加一個組是developteam?,?groupadd?developteam?????????????????2、然后把目錄/etc/project的屬組改為developteam,??chown?-R?:developteam?/etc/project?????????????????3、讓后把三個用戶的附加組都改為developteam這個組??usermod?-a?-G?developteam?hadoop/hbase/hive??【不確定還可以驗證一下?id?hadoop/hbase/hive】?????????????????4、查看當前目錄?ls?-ld?顯示?:drwxr-xr-x?2?root?developteam?4096?Feb?27?21:03?.???【可以看出屬組沒有寫權限,屬主是root,hadoop是不能在這里創建文件】?????????????????5、讓屬組有寫權限?chmod?g+w?/etc/project???????????????????6、切換到project里面,然后創建(touch?a.A)一個文件a.A:?-rw-rw-r--?1?hadoop?hadoop?0?Feb?27?21:22?a.A?從這里可以看出已經有了寫權限?????????????????7、設置一個GID權限?chmod?g+s?/etc/project?然后在查看(ls?-ld?/etc/project)一下????????????????????drwxrwsr-x?2?root?developteam?4096?Feb?27?21:22?/etc/project【可以看到屬組上的執行權限已經變成s了】?????????????????8、然后用三個用戶分別創建,而最后的的屬組就是developteam??Sticky:在一個公共目錄,每個人都能創建文件,刪除自己的文件,但不能刪除別人的文件??????????????????????????????????????????chmod?o+t?DIR???????????chmod?o-t??DIR????????????????可以這樣設置chmod?o+t?/etc/project????????????????然后查看drwxrwsr-t?2?root?developteam?4096?Feb?27?21:22?/etc/project????????????????這樣每個人只能刪除自己的目錄,而不能刪除別人的目錄了。??find練習題:?????1、查找/var目錄下屬主為root并且屬組為mail的所有文件;?find?/var?-user?root?-group?mail??2、查找/usr目錄下不屬于root,bin,或student的文件;?find?/usr?-not?-user?root?-a?-not?-user?bin?-a?-not?-user?student?find?/usr?-not?\(?-user?root?-o?-user?bin?-o?-user?student?\)??3、查找/etc目錄下最近一周內內容修改過且不屬于root及student用戶的文件;?find?/etc?-mtime?-7?-not?\?(?-user?root?-o?-user?student?\)?find?/etc?-mtime?-7?-not?-user?root?-a?-not?-user?student??4、查找當前系統上沒有屬主或屬組且最近1天內曾被訪問過的文件,并將其屬主屬組均修改為root;?find?/?\(?-nouser?-o?-nogroup?\)?-a?-atime?-1?-exec?chown?root:root?{}?\;???5、查找/etc目錄下大于1M的文件,并將其文件名寫入/tmp/etc.largefiles文件中;?find?/etc?-size?+1M?>>?/tmp/etc.largefiles??6、查找/etc目錄下所有用戶都沒有寫權限的文件,顯示出其詳細信息;?find?/etc?-not?-perm?/222?-ls????
總結
以上是生活随笔為你收集整理的find 及权限的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。