Linux學習命令彙總八——find命令選項及特殊文件權限suid,sgid,sticky

本章Blog相關Linux知識點正則表達式


find與grep的不一樣點:
docker

    find爲文件搜索命令——用來在指定目錄下查找文件,而grep 爲文本搜索命令——根據用戶指定的文本模式對目標文件進行逐步搜索,顯示可以被匹配的行 ;安全

    find選項支持文件通配符,而grep選線支持正則表達式  ;bash

    find查找爲精確查找,精確匹配但搜索速度稍慢。
ide

grep命令選項及正則表達式類型,詳細請參考前文「Linux學習命令彙總三——Linux用戶組管理,文件權限管理,文本搜索命令grep及正則表達式」  
bash特性之文件通配符,詳細請參考前文「Linux學習命令彙總四——Bash中變量.文件通配符.管道與重定向.算術運算及循環或判斷語句oop

# find path -option [ -print ] [ -exec -ok command ] {} \;學習

    path:查找路徑,默認爲當前目錄ui

    option:查找條件,默認爲當前目錄中的全部文件spa

    [print] 或 [exec] :查找動做,默認爲顯示

blog

find命令相關選項


find 命令格式及選項:

# find path -option [ -print ] [ -exec -ok command ] {} \;

[option]:

    -name 「文件名稱」:支持文件通配符 例: # find  / -name httpd.conf  查找/ 目錄中名稱爲httpd.conf 的文件

    -iname 「文件名稱」:查找時不區分文件名稱大小寫

    -user UserName :根據屬主查找     # find /ftp -user hadoop 查找/ftp目錄中用戶爲hadoop的文件

    -group GroupName :根據屬組查找

    -uid UID :根據屬主id號查找

    -gid GID :根據屬組gid號查找

    -nouser :查找無屬主的文件  # find /ftp -nouser

    -nogroup :查找無屬組的文件

    -type { f | d | l | p | s | b | c  } :根據類型查找  例: # find /etc -type d  查找/etc/目錄下類型爲目錄的文件並顯示

    -size [+|-] n[K|M|G] :根據文件大小查找  例:# find /var -size +2M

    -atime [+|-] n:根據時間查找 [超過|少於] n天的被訪問(access)的文件

    -mtime [+|-] n:根據時間查找 [超過|少於] n天的被修改(modify)的文件

    -ctime  [+|-] n:根據時間查找 [超過|少於] n天的被改變(change)的文件

    -amin  -mmin  -cmin : 使用方式與 -atime -mtime -ctime 類似

    -perm [+|-]  mode :

    -perm 755  :表示嚴格匹配,也就是你的文件權限位轉換成對應的十進制數字與mode如出一轍,那麼匹配成功 。

    -perm - [mode] :表示mode中轉換成二進制是1的二級制位在文件權限位裏面必須匹配 。例: #find /var -perm  -355 , 查找的權限355 轉換成二進制位011 101 101 ,判斷文件權限轉換成二級製爲1的二進制位是否與權限中爲1的二進制位相同 ,是0的位無論,知足則匹配,不知足則不匹配;如文件權限爲111 101 111 ,011 111 101 等文件都可被匹配 ,而001 101 101 則不會被匹配 ,由於文件權限中第二個二進制位與查找的mode 第二位二進制爲1的位不一樣。

    find -perm +mode : 與 -mode的區別是+mode只需其中的任意一個1的二進制位部分被匹配,+mode也無論0位。例: #find /var -perm  +355 , 查找的權限355 轉換成二進制位011 101 101 ,如文件權限001 001 001 的文件可被匹配 ,而100 010 010 不會被匹配 ,由於無任何一個二進制位被匹配

處理動做:

  -print :打印在標準輸出上

  -exec COMMAND {} \;   對查找到的文件執行指定的命令

  -ok COMMAND {} \;    交互式的-exec

例: #find /tmp -perm -003 -exec ls -ld {} \;  

組合條件:

  -a :與,表明條件需同時知足,可省略

  -o :或,表明條件知足一個便可

  -not  或 ! : 非,取反

例:# find /usr/ -not -user root -a -not -user bin  -a -not -user hadoop   查找目錄/usr/ 中屬主不是root或bin或hadoop的文件

例:# find /var/ -user root -group mail   查找/var目錄中屬主不是root且屬組不是mail的文件


安全上下文


     進程訪問文件時的權限匹配機制:進程的屬主,是否與文件的屬主相同:若是相同,進程則以文件的屬主屬性運行;不然,進程的屬主所屬的組,是否其中之一與文件的屬組相同;若是相同,進程則以文件的屬組的權限運行;不然,進程則以文件的其餘用戶的權限來訪問文件。

    進程屬主——進程的發起者

    進程的屬組——一般爲進程的屬主的基本組

文件權限:-rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd

  suid——可執行文件,任何用戶執行此可執行程序時,不在以用戶本身的身份看成進程的屬主,而是以文件的屬主看成進程的屬主

  sgid——具備sgid的目錄,用戶在此目錄下建立文件時,新建文件的屬組不在是用戶的所屬的基本組,而是目錄的屬組

  sticky——粘滯位,對於公共可寫的目錄,用戶可建立文件,能夠刪除本身的文件,但沒法刪除其餘用戶的文件

修改權限:

# chmod u+s file   設置文件suid權限

# chmod u-s file 取消文件suid權限

# chmod g+s directory 設置目錄sgid權限

# chmod g-s directory  取消目錄sgid權限

# chmod o+t directory  設置粘滯位權限

# chmod o-t  directory  取消粘滯位權限


練習1:複製cat 命令至/tmp 目錄,普通用戶使用/tmp/cat命令能查看root用戶有權限查看的全部文件

[root@study ~]# cp /bin/cat /tmp/
[root@study ~]# chmod u+s /tmp/cat 
[root@study ~]# /tmp/cat /etc/issue
CentOS release 6.6 (Final)
Kernel \r on an \m
[root@study ~]# /tmp/cat /etc/redhat-release 
CentOS release 6.6 (Final)


練習二、新建/tmp/test目錄,要求 openstack 和docker 用戶對其有寫權限,且在目錄建立的文件的屬組都爲cloud組;要求每個用戶不能刪除別人的文件,但能夠編輯

[root@study ~]# mkdir /tmp/test
[root@study ~]# groupadd cloud
[root@study ~]# useradd openstack -g cloud
[root@study ~]# useradd docker -g cloud
[root@study ~]# chown :cloud /tmp/test
[root@study ~]# chmod o+t /tmp/test
[root@study ~]# chmod g+s /tmp/test/
[root@study ~]# ls -ld /tmp/test
drwxr-sr-t. 2 root cloud 4096 Mar 14 10:22 /tmp/test


本章知識點彙總


#find path -option [ -print ] [ -exec -ok command ] {} \;

[option]:

  -name 「文件名稱」:支持文件通配符,查找匹配文件名的文件 

  -iname 「文件名稱」:查找時不區分文件名稱大小寫

  -user UserName :根據屬主查找    

  -group GroupName :根據屬組查找

  -uid UID :根據屬主id號查找

  -gid GID :根據屬組gid號查找

  -nouser :查找無屬主的文件  # find /ftp -nouser

  -nogroup :查找無屬組的文件

  -type { f | d | l | p | s | b | c  } :根據類型查找  例: # find /etc -type d  查找/etc/目錄下類型爲目錄的文件並顯示

  -size [+|-] n[K|M|G] :根據文件大小查找  例:# find /var -size +2M

  -atime [+|-] n:根據時間查找 [超過|少於] n天的被訪問(access)的文件

  -mtime [+|-] n:根據時間查找 [超過|少於] n天的被修改(modify)的文件

  -ctime  [+|-] n:根據時間查找 [超過|少於] n天的被改變(change)的文件

  -amin  -mmin  -cmin : 使用方式與 -atime -mtime -ctime 類似

  -perm [+|-]  mode :

# chmod u+s file   設置文件suid權限

# chmod u-s file 取消文件suid權限

# chmod g+s directory 設置目錄sgid權限

# chmod g-s directory  取消目錄sgid權限

# chmod o+t directory  設置粘滯位權限

# chmod o-t  directory  取消粘滯位權限

相關文章
相關標籤/搜索