find命令中參數perm的用法


 

按照文件權限模式用-perm選項,按文件權限模式來查找文件的話。最好使用八進制的權限表示法。

如在當前目錄下查找文件權限位為755的文件,即文件屬主可以讀、寫、執行,其他用戶可以讀、執行的文件,可以用:

de>$ find . -perm 755 -printde>
還有一種表達方法:在八進制數字前面要加一個橫杠-,表示都匹配,如-007就相當於777,-006相當於666

de># ls -l
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 http3.conf
-rw-rw-rw-    1 sam      adm         34890 10月 31 00:57 httpd1.conf
-rwxrwxr-x    2 sam      adm             0 10月 31 01:01 httpd.conf
drw-rw-rw-    2 gem      group        4096 10月 26 19:48 sam
-rw-rw-rw-    1 root     root         2792 10月 31 20:19 temp

# find . -perm 006
# find . -perm -006
./sam
./httpd1.conf
./tempde>
-perm mode:文件許可正好符合mode

-perm +mode:文件許可部分符合mode

-perm -mode: 文件許可完全符合mode

我們首先創建下面的一個例子

#ls -l ./testdir
——S— 1 root root 0 2008-05-06 10:39 2000
—S—— 1 root root 0 2008-05-06 10:39 4000
—S–S— 1 root root 0 2008-05-06 10:39 6000
-rwS–S— 1 root root 0 2008-05-06 10:39 6600


我創建了4個文件,都具有suid/sgid位。
假定我執行
find . -type f -perm 6000
那么我們顯然可以得到下面的結果
./60000
這屬於完全匹配。

如果執行find . -type f -perm -6000呢,其結果是:

./6000
./6600

這里的-號表示有1的位置一定要正確匹配,其他無所謂。這里要轉成二進制來說,首先6000轉成三位的二進制是下面這個樣子
110 000 000 000 
這表示前面兩個1一定要匹配,其他無所謂。那能匹配的就是6000,6600兩個文件,其權限二進制轉換過來分別是

110 000 000 000
110 110 000 000


而如果是執行find . -type f -perm +6000呢,結果會怎樣?

我們看看結果

./6000
./2000
./4000
./6600

+號的意思是,只要有一個1匹配就行了,也就是說前2位中,只要有一個1就行,所以上面的都符合要求,因為翻譯成二進制變成

110 000 000 000
010 000 000 000
100 000 000 000
110 110 000 000


所以,從上面的結果可以看出,命令find . -type f -perm +6000就是指定目錄下所有具有suid/sgid的程序。

這是在做安全維護的時候,應該常使用的一個指令。我們首先創建下面的一個例子

#ls -l ./testdir
——S— 1 root root 0 2008-05-06 10:39 2000
—S—— 1 root root 0 2008-05-06 10:39 4000
—S–S— 1 root root 0 2008-05-06 10:39 6000
-rwS–S— 1 root root 0 2008-05-06 10:39 6600

我創建了4個文件,都具有suid/sgid位。
假定我執行
find . -type f -perm 6000
那么我們顯然可以得到下面的結果
./60000
這屬於完全匹配。

如果執行find . -type f -perm -6000呢,其結果是:

./6000
./6600

這里的-號表示有1的位置一定要正確匹配,其他無所謂。這里要轉成二進制來說,首先6000轉成三位的二進制是下面這個樣子
110 000 000 000 
這表示前面兩個1一定要匹配,其他無所謂。那能匹配的就是6000,6600兩個文件,其權限二進制轉換過來分別是

110 000 000 000
110 110 000 000
而如果是執行find . -type f -perm +6000呢,結果會怎樣?
我們看看結果

./6000
./2000
./4000
./6600

+號的意思是,只要有一個1匹配就行了,也就是說前2位中,只要有一個1就行,所以上面的都符合要求,因為翻譯成二進制變成

110 000 000 000
010 000 000 000
100 000 000 000
110 110 000 000


所以,從上面的結果可以看出,命令find . -type f -perm +6000就是指定目錄下所有具有suid/sgid的程序。

這是在做安全維護的時候,應該常使用的一個指令


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM