关于LINUX中的权限位S(设置用户ID)(有效用户ID)(实际用户ID)

简介: getuid() 实际用户ID为 执行程序的实际用户ID geteuid() 有效用户ID与设置用户ID有关,及权限中的S位 如果权限为rws 那么s位代表其他用户执行程序时改变为主用户权限。


getuid() 实际用户ID为 执行程序的实际用户ID
geteuid()
  有效用户ID与设置用户ID有关,及权限中的S位

如果权限为rws 那么s位代表其他用户执行程序时改变为主用户权限。不安全
如:
  8 #include<stdio.h>
  9 #include<stdlib.h>
 10 #include <unistd.h>
 11 #include <sys/types.h>
 12 #include <sys/stat.h>
 13 #include <fcntl.h>
 14 
 15 int main(void)
 16 {
 17 
 18     int fd;
 19 
 20     fd = open("abc", O_CREAT | O_RDWR | O_EXCL, 0777);
 21     if(fd==-1)
 22     {
 23         perror("error:");
 24     }
 25     printf("uid %ld,euid %ld\n",getuid(),geteuid());
 26 
 27 
 28 }


程序放到root用户下,
-rwxr-xr-x   1 root root  8762 Feb 16 05:16 a.out
当前gaopeng用户
如果在gaopeng用户下执行这个程序正常情况下报错
gaopeng@bogon:/$ ./a.out 
error:: Permission denied
uid 1000,euid 1000


如果设置了 设置用户ID 如下:
chmod 4755 a.out 
-rwsr-xr-x   1 root root     8762 Feb 16 05:16 a.out
再次执行
gaopeng@bogon:/$ ./a.out 
uid 1000,euid 0


可以看到设置用户ID为0即位超级用户,并且没有任何报错文件建立完成


设置这个位过后不需要SUDO就可以或者切换到root用户下就能执行程序。不安全


如果是sudo
gaopeng@bogon:/$ sudo ./a.out 
uid 0,euid 0
可以看到
实际用户ID和有效用户ID都是 0


那么总结一下:
实际用户ID实际上是发起执行这个程序的用户ID
有效用户ID实际上是执行程序过程中,程序自身的用户ID,
如果没有设置S位实际上他是和实际用户ID一样的。
当然还有效用户组ID 组权限位也可以设置为S,和用户一样,执行时可以切换到其他组(如root组)用户权限下。


设置4***这里的4是设置用户s
设置2***这里的2设置组s
当然还有1为黏住位已经淘汰无用。
chmod 2755 a.out
-rwxr-sr-x   1 root root  8762 Feb 16 05:16 a.out
chmod 4755 a.out
-rwsr-xr-x   1 root root  8762 Feb 16 05:16 a.out
chmod 6755 a.out
-rwsr-sr-x 1 root root 8762 Feb 16 05:16 a.out
相关文章
|
16天前
|
安全 Linux 数据安全/隐私保护
Linux权限详解
Linux权限详解
|
26天前
|
Linux 数据安全/隐私保护 Windows
Linux入门指南:linux权限究竟是什么?和文件有什么关系?
Linux入门指南:linux权限究竟是什么?和文件有什么关系?
30 0
|
28天前
|
算法 Linux C++
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
【Linux系统编程】解析获取和设置文件信息与权限的Linux系统调用
29 0
|
28天前
|
Linux API C语言
【Linux系统编程】深入理解Linux 组ID和附属组ID的查询与设置
【Linux系统编程】深入理解Linux 组ID和附属组ID的查询与设置
33 0
【Linux系统编程】深入理解Linux 组ID和附属组ID的查询与设置
|
1月前
|
存储 Shell Linux
【Shell 命令集合 系统设置 】⭐ Linux 取消或删除已设置的环境变量 unset命令 使用指南
【Shell 命令集合 系统设置 】⭐ Linux 取消或删除已设置的环境变量 unset命令 使用指南
40 0
|
11天前
|
Linux 数据安全/隐私保护
Linux设置PPPOE
请注意,以上步骤是基本的设置流程。具体步骤可能会因Linux发行版和版本的不同而有所差异,确保按照你所使用的系统来进行设置。如果使用图形界面,也可以在网络设置中配置PPPoE连接。 买CN2云服务器,免备案服务器,高防服务器,就选蓝易云。百度搜索:蓝易云
20 0
|
14天前
|
安全 Unix Linux
一、linux 常用命令之 linux版本信息 系统管理与设置 持续更新******
一、linux 常用命令之 linux版本信息 系统管理与设置 持续更新******
15 0
|
26天前
|
Ubuntu 关系型数据库 MySQL
linux创建用户创建组删除用户以及组分配权限
linux创建用户创建组删除用户以及组分配权限
10 0
|
29天前
|
Linux
Linux系统之id命令的基本使用
Linux系统之id命令的基本使用
31 5
Linux系统之id命令的基本使用
|
29天前
|
Shell Linux 开发工具
shell的介绍以及Linux权限的讲解
shell的介绍以及Linux权限的讲解
31 2