uid_t getuid(void);
uid_t geteuid(void); int setuid(uid_t uid);
int seteuid(uid_t euid);
int setegid(gid_t egid);

setuid函数设置实际用户ID和有效用户ID

非root用户是不可能通过setuid或者seteuid取得其他权限

setuid执行步骤:

如果由普通用户调用,将当前进程的有效ID设置为uid

如果由有效用户ID符为0的进程调用,则将真实,有效和已保存用户ID都设置为uid

uid_t uid = getuid();
printf("uid: %d\n", uid);
uid = geteuid();
printf("euid: %d\n", uid); # ./a.out
uid: 1004
euid: 1004

setuid和seteuid

当root 使用setuid()来变换成其他用户识别码时,root权限会被抛弃,完全转换成该用户身份,也就是说,该进程往后将不再具有可setuid()的权利,如果只是向暂时抛弃root 权限,稍后想重新取回权限,则必须使用seteuid()

设置setuid权限

# chmod 4xxx test.c     //设置setuid权限
# chmod 2xxx dir //设置setgid权限
# chmod 6xxx test.c //设置setuid和setgid权限
# chmod 0xxx test.c //取消setuid和setgid权限
# chmod u+s test.c      //设置setuid权限(setuid 只对文件有效)
# chmod g+s dir //(setgid 只对目录有效)
# chmod 1xxx test.c     //为test.c文件加上sticky标志
# chmod o+t test.c //(sticky只对文件有效)

setuid占用属主x(执行)位,setgid占用组x位,sticky-bit占用其他x位

如果该位有x权限,就用小写s,没有就用大写S

setuid:使文件在执行阶段具有文件所有者的权限。典型的文件是 /usr/bin/passwd。如果一般用户执行该文件,则在执行过程中,该文件可以获得root权限,从而可以更改用户的密码

setgid:目录被设置该位后,任何用户在此目录下创建的文件都具有和该目录所属的组相同的组

sticky bit:该位可以理解为防删除位。一个文件是否可以被某用户删除,主要取决于该文件所属的组是否对该用户具有写权限。如果没有写权限,则这个目录下的所有文件都不能被删除,同时也不能添加新的文件。如果希望用户能够添加文件但同时不能删除文件,则可以对文件使用sticky bit位。设置该位后,就算用户对目录具有写权限,也不能删除该文件

setuid的安全性

# chmod 4755 vim

将vi的所有者改为root

这样,在普通用户下,vi就可以编辑任何文件

禁用setuid权限

# vi /rtc/fstab

添加nosuid

LANBEL=/home /home ext3 default,nosuid 1 2

这样就在很大程度上保护了系统的安全

linux用户和权限 setuid的更多相关文章

  1. 《The Linux Command Line》 读书笔记04 Linux用户以及权限相关命令

    Linux用户以及权限相关命令 查看身份 id:Display user identity. 这个命令的输出会显示uid,gid和用户所属的组. uid即user ID,这是账户创建时被赋予的. gi ...

  2. Linux 用户及权限详解

    Linux 用户及权限详解 用户 , 组 ,权限 安全上下文(secure context): 权限: r,w,x 文件: r : 可读,可以使用类似cat 等命令查看文件内容. w : 可写,可以编 ...

  3. Linux用户和权限——管理文件权限的命令

    Linux用户和权限——管理文件权限的命令 摘要:本文主要学习了Linux中修改文件权限的命令. chown命令 chown命令,主要用于修改文件(或目录)的所有者,除此之外,这个命令也可以修改文件( ...

  4. Linux用户和权限——权限管理

    Linux用户和权限——权限管理 摘要:本文主要介绍了Linux系统中权限的分类,以及对权限的管理. 用户的三种身份 所有者 由于Linux是个多人多工的系统,因此可能常常会有多人同时使用这部主机来进 ...

  5. Linux用户和权限——管理用户和用户组的命令

    Linux用户和权限——管理用户和用户组的命令 摘要:本文主要学习了在Linux系统中管理用户和用户组的命令. useradd命令 useradd命令可以用来创建新用户. 基本语法 useradd [ ...

  6. Linux用户和权限——用户和用户组管理

    Linux用户和权限——用户和用户组管理 摘要:本文主要介绍了Linux系统中的用户和用户组管理. 用户和用户组 含义 在使用Linux系统时,虽然输入的是自己的用户名和密码,但其实Linux并不认识 ...

  7. linux用户及权限管理

    [文件管理.管道.用户及组管理.用户及权限管理]\用户及组管理 用户与组管理 Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这 ...

  8. Linux用户和权限管理看了你就会用啦

    前言 只有光头才能变强 回顾前面: 看完这篇Linux基本的操作就会了 没想到上一篇能在知乎获得千赞呀,Linux也快期末考试了,也有半个月没有写文章了.这篇主要将Linux下的用户和权限知识点再整理 ...

  9. linux用户和权限详解

    1.用户组说明 在使用useradd命令创建用户的时侯可以用-g 和-G 指定用户所属组和附属组.基本组:如果没有指定用户组,创建用户的时候系统会默认同时创建一个和这个用户名同名的组,这个组就是基本组 ...

随机推荐

  1. 一文解读Spring全家桶 (转)

    Spring框架自2002年诞生以来一直备受开发者青睐,它包括SpringMVC.SpringBoot.Spring Cloud.Spring Cloud Dataflow等解决方案.有人亲切的称之为 ...

  2. spark streaming整合kafka

    版本说明:spark:2.2.0: kafka:0.10.0.0 object StreamingDemo { def main(args: Array[String]): Unit = { Logg ...

  3. Could not resolve resource location pattern [classpath:com/****/mappers/*.xml]: class path resource [com/****/mappers/] cannot be resolved to URL because it does not exist的问题

    这里建议先去看看路径的问题,看看application.xml的里面的导入的相应的配置文件的路径有没有问题,如下: 再者看看相应的注解有没有加上,service和controller等的注解 如果再不 ...

  4. CUDA -- 规约求矩阵的行和

    求矩阵每行的和? 可以把每行放入一个不同线程块,这样行与行之间进行粗粒度的并行.而对于每行,其对应的线程块中分配n个线程(对应行宽),使用共享存储器,让每个线程从显存中读取一个数至shared mem ...

  5. Ambari 大数据集群管理

    最近做了一个大数据项目,研究了下集群的搭建,现在将集群搭建整理的资料与大家分享一下!如有疑问可在评论区回复. 1前置配置 Centos7系统,每台系统都有java运行环境 全程使用root用户,避免安 ...

  6. 第50 课C++对象模型分析——成员变量(上)

    C++对象模型,其实就是C++中的对象在内存中是如何排布的.C++中的对象包含了成员变量和成员函数,其实就是研究C++中的类对象它的成员变量和成员函数在内存中是如何排布的. 回归本质class 是一种 ...

  7. logistic 回归(线性和非线性)

    一:线性logistic 回归 代码如下: import numpy as np import pandas as pd import matplotlib.pyplot as plt import ...

  8. web之ics-06

    打开网址,四处点击,点到报表中心,跳转新页面 查看源码也没有什么特别的,发现URL栏有?id=1 以为是sql注入,但是并不是,查看大佬的wp 发现这题采用brupsuite爆破 先将抓到的包放到In ...

  9. Badboy安装和简单介绍

    参考链接:https://www.cnblogs.com/baoziluo/p/7907964.html

  10. Mybatis的XML映射文件(四)

    MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会立即发现省掉了将近 95% ...