linux guid linux最好用的系统
求一个Linux下的GUID的产生方法~~
设置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,下载
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];
linux 中文件有uuid吗
linux中有UUID,保存在文件/sys/class/dmi/id/product_uuid中,可以使用cat等命令查看,如:
sudocat/sys/class/dmi/id/product_uuid
UUID说明:
UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。通常平台会提供生成的API。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。
UUID由以下几部分的组合:
(1)当前日期和时间,UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同。
(2)时钟序列。
(3)全局唯一的IEEE机器识别号,如果有网卡,从网卡MAC地址获得,没有网卡以其他方式获得。
UUID的唯一缺陷在于生成的结果串会比较长。关于UUID这个标准使用最普遍的是微软的GUID(Globals Unique Identifiers)。在ColdFusion中可以用CreateUUID()函数很简单地生成UUID,其格式为:xxxxxxxx-xxxx- xxxx-xxxxxxxxxxxxxxxx(8-4-4-16),其中每个 x是 0-9或 a-f范围内的一个十六进制的数字。而标准的UUID格式为:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx(8-4-4-4-12),可以从cflib下载CreateGUID() UDF进行转换。
Linux中的uid和gid是什么呢
Linux系统中,每个用户的ID都有两种,即用户ID(User ID,简称UID)和组ID(Group
ID,简称GID),这与文件拥有者和拥有群组两种属性所对应。
文章开头也提到了,Linux系统并不认识我们的用户名和密码,那问题来了,文件是如何判别它的拥有者名称及群组名称的呢?
每个文件都有自己的拥有者ID和群组ID,在显示文件属性时,系统会根据/etc/passwd和/etc/group文件中的内容,分别找到UID和GID所对应的用户名和群组名,最终显示出来。
在/etc/passwd文件中,利用UID可以找到所对应的用户名,在/etc/group文件中,利用GID可以找到所对应的群组名。
可以做个小实验,在Linux操作系统中,常用的有两个账户,分别为root超级管理员账户和普通账户,我们可以先使用root账号登录并执行命令vim
/etc/passwd,在该文件中找到普通用户并将其UID随意改一个数字,这是你会发现,当你查看普通账户所拥有的文件时,你会发现所有文件的拥有者并不是普通用户,而是数字。
一般情况下,当登录Linux操作系统后,会先寻找/etc/passwd是否有输入账号,如果没有,则跳出,如果有,则读取对应的UID与GID,随后进入/etc/shadow核对密码,一切完成后,则进入shell管控。
由此可见,UID与GID在日常的账户管理中,发挥着非常重要的作用,因为一不小心就可能访问不了自己的文件,所以温馨提示大家,不要随便改动自己的/etc/passwd与/etc/group文件。