求一个Linux下的GUID的产生方法~~

不是win下的~~~谢谢啊
ABC22048你好,我想了解的是代码~~不是如何操作,谢谢~~

设置suid/guid的例子
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];
温馨提示:答案为网友推荐,仅供参考
相似回答