本章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 取消粘滯位權限