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

本章Blog相關Linux知識點


find與grep的不同點:

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

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

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

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

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

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

    option:查找條件,默認爲當前目錄中的所有文件

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

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)


練習2、新建/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  取消粘滯位權限


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章