关于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
相关文章
|
11月前
|
Ubuntu Linux 网络安全
在Linux云服务器上限制特定IP进行SSH远程连接的设置
温馨提示,修改iptables规则时要格外小心,否则可能导致无法远程访问你的服务器。最好在掌握足够技术知识和理解清楚操作含义之后再进行。另外,在已经配置了防火墙的情况下,例如ufw(Ubuntu Firewall)或firewalld,需要按照相应的防火墙的规则来设置。
558 24
|
11月前
|
Java 关系型数据库 MySQL
在Linux操作系统上设置JDK、Tomcat、MySQL以及J2EE后端接口的部署步骤
让我们总结一下,给你的Linux操作系统装备上最强的军队,需要先后装备好JDK的弓箭,布置好Tomcat的阵地,再把MySQL的物资原料准备好,最后部署好J2EE攻城车,那就准备好进军吧,你的Linux军团,无人可挡!
325 18
|
12月前
|
Linux Shell
在Linux、CentOS7中设置shell脚本开机自启动服务
以上就是在CentOS 7中设置shell脚本开机自启动服务的全部步骤。希望这个指南能帮助你更好地管理你的Linux系统。
1490 25
|
11月前
|
Linux Shell 数据安全/隐私保护
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
Centos或Linux编写一键式Shell脚本创建用户、组、目录分配权限指导手册
567 3
|
安全 Unix Linux
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
25000多字详细讲解,深度剖析权限管理核心。从基础权限到复杂的特殊权限,逐一拆解,无论你是零基础小白还是经验丰富的运维人员,都能在这里找到提升技能的关键知识,全面掌握 Linux 权限管理。还不快来看看?
【Linux权限】—— 于虚拟殿堂,轻拨密钥启华章
|
安全 Linux 数据安全/隐私保护
【Linux】深入理解linux权限
本文深入解析Linux权限管理机制,涵盖权限概念、用户角色、文件属性及操作方法。文章分为前言、权限介绍、用户与角色、文件属性、权限修改及常见问题六大板块。详细说明了权限类型(r/w/x)、角色优先级、chmod/chown指令用法,以及目录权限、umask掩码、粘滞位等重点内容。掌握这些知识,可有效提升Linux系统安全性和灵活性,是管理员必备技能。喜欢的话别忘了点赞支持哦! ❤❤❤
755 6
|
安全 Linux 数据安全/隐私保护
Linux权限揭秘“Root与Sudo”
Root用户是Linux系统中的超级用户,拥有对系统的完全控制权。Root用户几乎可以执行任何命令,修改任何文件,甚至删除系统上的所有内容。因此,Root用户的使用需要非常谨慎,以避免潜在的安全风险。
693 6
|
Linux 数据安全/隐私保护
linux特殊权限!!
本文介绍了Linux系统中的特殊权限,包括suid、sgid和sbit。suid使普通用户在执行特定命令时获得root权限;sgid使用户在创建文件时继承目录的用户组权限;sbit确保用户只能删除自己在共享目录中创建的文件。此外,文章还讲解了chattr和lsattr命令,用于更改和查看文件的扩展属性,以及umask的概念和计算方法,帮助理解文件和目录的默认权限。
414 1
linux特殊权限!!
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
1128 2
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
542 1