CODE:
[Copy to clipboard]
命令 結果 含義
chmod 4755 rws r-x r- x 文件被設置了s u i d,文件屬主具有讀、寫和執行的權限,其他用戶具有讀和執行的權限
chmod 6711 rws --s --x 文件被設置了s u i d和g u i d,文件屬主具有讀、寫和執行的權限,其他用戶具有執行的權限
chmod 4764 rws rw- r- - 文件被設置了s u i d,文件屬主具有讀、寫和執行的權限,屬組用戶具有讀和執行的權限,用戶具有讀權限
SUID 是 Set User ID, SGID 是 Set Group ID的意思。
UNIX下可以用ls -l 命令來看到文件的權限。用ls命令所得到的表示法的格式是類似這樣的:-rwxr-xr-x 。下面解析壹下格式所表示的意思。這種表示方法壹***有十位:
9 8 7 6 5 4 3 2 1 0
- r w x r - x r - x
第9位表示文件類型,可以為p、d、l、s、c、b和-:
p表示命名管道文件
d表示目錄文件
l表示符號連接文件
-表示普通文件
s表示socket文件
c表示字符設備文件
b表示塊設備文件
第8-6位、5-3位、2-0位分別表示文件所有者的權限,同組用戶的權限,其他用戶的權限,其形式為rwx:
r表示可讀,可以讀出文件的內容
w表示可寫,可以修改文件的內容
x表示可執行,可運行這個程序
沒有權限的位置用-表示
setuid/setgid/Sticky,對應的權限數值依次為4000/2000/1000。
setuid標誌出現在文件權限的u段,setgid標誌出現在文件權限的g段,Sticky標誌出現在文件權限的o段。這些標誌都出現在各段的“執行”位上,其中setuid/setgid的標誌為“s”,Sticky標誌為“t”。
由於實際文件、目錄的屬主、權限各不相同,這些標誌設置後,權限的實際綜合效果可能會使這些設置無效,這時,setuid的標誌由“s”變為“S”,setgid的標誌由“s”變為“l”(小寫“L”),Sticky的標誌由“t”變為“T”。
setuid和setgid用於對位於公用目錄中的可執行文件賦予使用者以等同於屬主/屬組的權限。
setgid還用來設置公用目錄,以使在此目錄中新創建的文件都具有同此目錄的組別。
Sticky用於對位於公用目錄中的文件進行保護。
3者綜合使用,就可以有效地建立起壹套***享機制,使符合條件的他人可以方便地使用別人放在公用目錄中的可執行文件,而又確保不會因目錄公用而造成他人隨意地亂刪。
GUID (global unique identifier) 是微軟對UUID的叫法.
UUID( Universal Unique Identifier)
HP和RedHat上可以使用uuidgen來生成,solaris上命令:makeuuid
如何通過C++編程取得UUID?
1.安裝libuuid庫, libuuid.so.1包涵在e2fsprogs裏,本人的系統為RedHat7.3,下載ftp://194.199.20.114/linux/redhat/7.3/en/os/i386/RedHat/RPMS/e2fsprogs-1.27-3.i386.rpm
2. 編輯文件uuid.cpp
#include <iostream>;
#include <stdio.h>;
#include <uuid/uuid.h>;
int main()
{
uuid_t uu;
uuid_generate( uu );
std::cout << uu << std::endl;
int i;
for(i=0;i<16;i++)
{
printf("%x ",uu);
}
printf("\n";
return 0;
}
#g++ -c –g uuid.o uuid.cpp
#g++ -o –luuid uuid uuid.o
其中/usr/include/uuid/uuid.h中有uuid_t的定義:
typedef unsigned char uuid_t[16];