日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

find 及权限

發布時間:2025/3/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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 及权限的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。