iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux中进程权限的示例分析
  • 122
分享到

Linux中进程权限的示例分析

2023-06-09 17:06:16 122人浏览 安东尼
摘要

这篇文章主要介绍linux中进程权限的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux 进程权限分析在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知之甚少。本文总

这篇文章主要介绍linux中进程权限的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Linux 进程权限分析

在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知之甚少。本文总结一下linux系统下进程权限问题和现象。

需要强调的是,本文是linux系统下讨论,因为linux和unix有很多不同的地方,并且各个不同的unix系统也有很多不同。

先开门见山的列出本文讨论对象:ruid(实际用户id: real userid)、euid(有效用户用户:effective userid), suid(保存用户id:saved userid)、fuid(文件系统用户id)。

除了上面4个,还涉及到一个位 设置用户id位(set user id bit),,即我们通常所说的处rwx之外那个s标志位。

另外,本文主要讨论userid,groupid规则基本一样,例如rgid, egid, sgid, fgid等,本文就不做组id方面的重复讨论了。

首先,查看这几个uid的方法有两种方式:一是ps 命令 (ps -ax -o ruid -o euid -o suid -o fuid -o pid -o fname)列出这几个uid;二是查看status文件,(cat /proc/2495/status | grep Uid)。

本文创建5个test用户 test1~test5用来做本文中sample讨论使用,代表常见普通权限用户。

一:文件所有者用户和程序执行者用户是同一用户的情况

int main(int arGC, char *argv[]){  while(1)sleep(1);}  $>g++ main.cpp -o a.out    $>ll  -rwxr-xr-x. 1 test1 test 6780 Sep 16 15:32 a.out  文件所有者是test1,我们用test1用户执行a.out程序  $>su test1  $>./a.out &  $>ps -ax -o ruid -o euid -o suid -o fuid -o pid -o fname | grep a.out  502  502  502  502 3192 a.out   (看到结果是4个uid全是test1;)  现在我们用test2用户执行test1的程序看看结果  $su test2  503  503  503  503 3234 a.out  再用root用户执行  0   0   0   0 3257 a.out

看到这个结果,我们基本可以总结:
在常见情况下。这四个id只受执行用户影响,不受文件owner用户影响。并且四个uid全部等于执行用户的id;

二、出让权限给其它用户。非root用户是无法出让权限给其它用户,只有root用户才能出让。

int main(int argc, char *argv[]){  if( setuid(503) < 0) perror ("setuid error");  while(1)sleep(1);}  $>ll  -rwxr-xr-x. 1 test1 test 6780 Sep 16 15:32 a.out   使用root用户执行  $>./a.out  查看状态,所有uid都变成test2用户。  503  503  503  503 3592 a.out  把代码中setuid改成seteuid函数,会把euid和fuid改成test2用户  0  503   0  503 3614 a.out    把代码中setuid改成setfsuid函数,会把fuid改成test2用户  0   0   0  503 3636 a.out  当把代码改成下面样子if( seteuid(503) < 0) perror ("seteuid error");if( setfsuid(504) < 0) perror ("setfsuid error");while(1)sleep(1);  或者if( setfsuid(504) < 0) perror ("setfsuid error");if( setfeuid(503) < 0) perror ("seteuid error");while(1)sleep(1);  用root用户执行,得到都是一样的结果  0  503   0  503 3614 a.out   到了这里我来总结一下:1、setuid和seteuid是有区别的,setuid是永久的放弃root用户权限,转让给非root用户后,无法再restore到root用户,seteuid是临时放弃root用户权限,可以通过seteuid(0),restore到root权限。这点应该是总所周知的特点,本文就不举例子演示。2、seteuid 会同时改变euid和fuid都为设置的euid值。3、root用户可以通过调用setxxuid 来改变权限用户。非root用户是无法改变和转让权限用户。

继续看一下s权限位对进程权限的影响

三、s 标志位影响的是 euid,suid,和 fuid

int main(int argc, char *argv[]){  while(1)sleep(1);}  $>g++ main.cpp  $>ll   -rwxr-xr-x. 1 test1 test 6780 Sep 16 18:18 a.out  $>chmod u+s a.out  $>ll   -rwsr-xr-x. 1 test1 test 6780 Sep 16 18:18 a.out  使用root用户执行,查看用户ID为  0  502  502  502 4133 a.out

s权限位使用最经典的案例是passwd命令

下面我们看看他们对文件权限的影响,构建一个ruid,euid,和fuid都不同,看看创建出来的文件所有者是哪个uid

四、影响用户文件权限的是 fuid,不是 euid,该 uid 是 linux 特有的属性,unix 系统是靠 euid 来判定用户权限。

int main(int argc, char *argv[]){  if( setfsuid(503) < 0) perror ("setfsuid error");  FILE * fp = fopen("test.log", "a+");  if(fp == NULL)  {    perror ("fopen error");  }  else  {    fclose(fp);  }  while(1)sleep(1);}  使用s权限位,文件所有者为root,执行者为test1,改变fuid为test2,这样就构造出3个uid各部相同,方便观察效果 $>ll  -rws---r-x. 1 root root 7397 Sep 16 18:53 a.out 运行查看状态,ruid为test1,euid为root,fuid为test2  502   0   0  503 4240 a.out $>ll  -rws---r-x. 1 root root 7397 Sep 16 18:53 a.out  -rw-rw-r--. 1 test2 test  0 Sep 16 18:54 test.log

五、权限的继承,当使用 fork 子进程的时候,子进程全部继承父进程四个 uid,和父进程 uid 相同

当使用exec系列函数时候,会把suid置为euid。

以上是“Linux中进程权限的示例分析”这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注编程网操作系统频道!

--结束END--

本文标题: Linux中进程权限的示例分析

本文链接: https://www.lsjlt.com/news/256898.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux中进程权限的示例分析
    这篇文章主要介绍Linux中进程权限的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Linux 进程权限分析在linux下,关于文件权限,大部分人接触比较多,也比较熟悉了解.但是对进程权限一般知之甚少。本文总...
    99+
    2023-06-09
  • Linux中文件权限目录权限的示例分析
    这篇文章主要介绍Linux中文件权限目录权限的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!linux中目录与文件权限的意义一、文件权限的意义r:可以读这个文件的具体内容;w:可以编辑这个文件的内容,包括增加...
    99+
    2023-06-09
  • Linux文件权限的示例分析
    这篇文章主要介绍了Linux文件权限的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在linux中的每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何...
    99+
    2023-06-27
  • MySQL中权限的示例分析
    小编给大家分享一下MySQL中权限的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言很多文章中会说,数据库的权限按...
    99+
    2024-04-02
  • laravel5权限的示例分析
    这篇文章主要介绍laravel5权限的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!角色权限管理是我们在laravel开发过程中必然会遇到的,问题是laravel自带的权限逻...
    99+
    2024-04-02
  • Linux 下sudo网络权限的示例分析
    这篇文章主要介绍了Linux 下sudo网络权限的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux 下sudo网络权限详解对于设置了网络代理的服务器,在当前用...
    99+
    2023-06-09
  • Linux文件系统权限的示例分析
    小编给大家分享一下Linux文件系统权限的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!理解 ls 命令的输出在讨论如何修改权限之前,我们需要知道如何查看权限。通过 ls 命令的长列表参数(-l)为我们提供了有关文...
    99+
    2023-06-16
  • Linux权限列中加号及点的示例分析
    这篇文章主要介绍了Linux权限列中加号及点的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、综述Linux中,ls -l命令可谓是最常用不过了。命令显示结果中的第...
    99+
    2023-06-27
  • Linux中进程fork()的示例分析
    这篇文章给大家分享的是有关Linux中进程fork()的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Linux fork()详解:在开始之前,我们先来了解一些基本的概念: 程序, 没有在运行的可执行文件...
    99+
    2023-06-09
  • MySQL中权限系统的示例分析
    小编给大家分享一下MySQL中权限系统的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! create user...
    99+
    2024-04-02
  • C++中访问权限的示例分析
    这篇文章主要为大家展示了“C++中访问权限的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++中访问权限的示例分析”这篇文章吧。众所周知,C++面向对象的三大特性为:封装,继承和多态。...
    99+
    2023-06-20
  • Linux中特殊权限SUID SGID和SBIT的示例分析
    这篇文章主要介绍Linux中特殊权限SUID SGID和SBIT的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1、SUID,就重要的作用就是让其它用户在执行这个授有SUID的程序时拥有该程序拥有者的权限。就...
    99+
    2023-06-12
  • Linux文件属性与权限的示例分析
    这篇文章将为大家详细讲解有关Linux文件属性与权限的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Linux文件系统中的文件是数据的集合,文件系统不仅包含着文件中的数据而且还有文件系统的结构,所...
    99+
    2023-06-27
  • Linux中进程通信的示例分析
    这篇文章将为大家详细讲解有关Linux中进程通信的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。每个进程各自有不同的用户地址空间,任何一个进程的全局变量在另一个进程中都看不到,所以进程之间要交换数...
    99+
    2023-06-27
  • Linux中进程和线程的示例分析
    这篇文章主要为大家展示了“Linux中进程和线程的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中进程和线程的示例分析”这篇文章吧。计算机实际上可以做的事情实质上非常简单,比如...
    99+
    2023-06-13
  • linux中文件权限与目录配置的示例分析
    这篇文章给大家分享的是有关linux中文件权限与目录配置的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。===一个简单的ls -al的例子:===-rw-r&ndash;r&ndash;....
    99+
    2023-06-13
  • ​MySQL中用户与权限的示例分析
    小编给大家分享一下MySQL中用户与权限的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!MySQL用户与权限 ...
    99+
    2024-04-02
  • mysql中账户和权限的示例分析
    小编给大家分享一下mysql中账户和权限的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!当客户端连接 MySQL 服务器时,必须提供有效的身份认证,例如用户名和密码。当用户执行任何...
    99+
    2024-04-02
  • RBAC权限模型的示例分析
    小编给大家分享一下RBAC权限模型的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!权限系统与RBAC模型概述RBAC(R...
    99+
    2024-04-02
  • APP获取权限的示例分析
    这期内容当中小编将会给大家带来有关APP获取权限的示例分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。现在21世纪是大数据的时代,也是科技高速发展的时代。人们只要使用自己的个人信息,即可以登录手机APP...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作