exec函数的执行对用户ID的影响】的更多相关文章

exec不会创建新进程,只是分析加载程序文件或者shell执行文件,替换父进程的代码段.数据段.栈段,一个进程可以执行多个exec来执行多个程序,但进程只有一个 父进程经常是waitpid,获取子进程状态,清理子进程 在执行前后,进程的实际用户ID和实际组ID保持不变,有效ID是否改变取决于执行程序的setid位. 进程的用户ID有三个 实际用户ID 有效用户ID 保存的设置用户ID 修改进程UID的规则 1.超级管理管理用户有权调用setuid,修改三个用户ID为指定uid 2.普通用户有权设…
create or replace function FN_GET_ROLES(v_user_id varchar2) return varchar2 istype zy_emp_cursor is ref cursor;v_emp_cursor zy_emp_cursor;v_role_dscr varchar2(2000);v_emp_dscr varchar2(64);v_index number;beginopen v_emp_cursor for SELECT A_ROLES.ROLE…
本文来探讨一下通过更改用户ID来获取合适的文件访问权限.由于更改组ID的规则与用户ID相同,我们在这里只探讨用户ID. 纸上得来终觉浅 先了解以下几个基本知识: 用户ID包括:实际用户ID.有效用户ID.保存的设置用户ID.其中保存的设置用户ID由exec函数保存. 实际用户ID标识我们究竟是谁,该字段在登录时取自口令文件中的登录项.通常,在一个登录会话期间该值不会改变,但root用户进程有方法改变它. 有效用户ID决定了我们的文件访问权限. 保存的设置用户ID在执行一个程序时包含了有效用户ID…
linux 设置用户id 设置组id   转自 linux 设置用户id 设置组id   最近看apue,简单记录对设置用户id理解(设置组id同理). 1. 相关的id好像很多,共有哪些? 文件2个id 2个位: 拥有者id             拥有者组id 设置用户id位         设置组id位 进程6个或更多的id(如果有附加组id): 实际用户id             实际组id       (仅仅标志我们是谁,不参与文件访问权限检测) 有效用户id            …
用fork函数创建子进程后,子进程往往要调用一种exec函数以执行另一个程序.当进程调用一种exec函数时,该进程执行的程序完全替换为新程序,而新程序则从其main函数开始执行.因为调用exec并不创建新进程,所以前后的进程ID并未改变.exec只是用一个全新的程序替换了当前进程的正文.数据.堆和栈段. 有6种不同的exec函数可供使用,它们常常被统称为exec函数.这些exec函数使得UNIX进程控制原语更加完善.用fork可以创建新进程,用exec可以执行新程序.exit函数和两个wait函…
一.基本概念 实际用户ID(RUID):用于标识一个系统中用户是谁,一般是在登录之后,就被唯一的确定,就是登录的用户的uid. 有效用户ID(EUID):用于系统决定用户对系统资源的权限,也就是说当用户做任何一个操作时,最终看它有没有权限,都是在判断有效用户ID是否有权限.如果有,则ok,否则报错不能执行.在正常的情况下,一个用户登录之后(假设是A用户),A用户的有效用户ID和实际用户ID是相同的,但是如果A用户在某些场景中想要执行一些特权操作,能顺利的执行吗?上面说到了用户的任务操作,linu…
25.1 介绍 在用 fork 函数创建子进程后,子进程往往要调用一种 exec 函数以执行另一个程序 当进程调用一种 exec 函数时,该进程完全由新程序代换,替换原有进程的正文,而新程序则从其 main 函数开始执行.因为调用 exec 并不创建新进程,所以前后的进程 ID 并未改变.exec 只是用另一个新程序替换了当前进程的正文.数据.堆和栈段. exec 函数族也称为代码替换函数族 25.1.1 函数说明 #include <unistd.h> int execl(const cha…
先来看看exec函数: exec函数族     fork创建子进程后执行的是和父进程相同的程序(但有可能执行不同的代码分支),子进程往往要调用一种exec函数以执行另一个程序.当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行.调用exec并不创建新进程,所以调用exec前后该进程的id并未改变. 将当前进程的.text..data替换为所要加载的程序的.text..data,然后让进程从新的.text第一条指令开始执行,但进程ID不变,换核不换…
在UNIX系统中,特权(例如能改变当前日期的表示法以及访问控制(例如,能否读.写一特定文件))是基于用户ID和组ID的.当程序需要增加特权,或需要访问当前并不允许访问的资源时,我们需要更换自己的用户ID或组ID,使得新ID具有合适的特权或访问权限.与此类似,当程序需要降低其特权或阻止对某些资源的访问时,也需要更换用户ID或组ID,从而使新ID不具有相应特权或访问这些资源的能力. 一般而言,在设计应用程序时,我们总是试图使用最小特权(least privilege)模型.依照此模型,我们的程序应当…
linux c语言 fork() 和 exec 函数的简介和用法   假如我们在编写1个c程序时想调用1个shell脚本或者执行1段 bash shell命令, 应该如何实现呢? 其实在<stdlib.h> 这个头文件中包含了1个调用shell命令或者脚本的函数 system();直接把 shell命令作为参数传入 system函数就可以了, 的确很方便. 关于system 有一段这样的介绍:   system 执行时内部会自动启用fork() 新建1个进程,  效率没有直接使用fork()…
exec()函数 exec函数用于执行存储在字符串中的python语句 >>> exec("x=1") >>> x 但有时候,直接这样执行可能会污染我们的命名空间,比如下面的例子,我们使用python内置的abs函数求绝对值. >>> abs(-) >>> exec("abs='xyz'") >>> abs(-) File , in <module> TypeErr…
清屏:clear 退出当前命令:ctrl+c 彻底退出 执行睡眠 :ctrl+z 挂起当前进程 fg 恢复后台 查看当前用户 id:"id":查看显示目前登陆账户的 uid 和 gid 及所属分组及用户名 查看指定帮助:如 man adduser 这个很全 而且有例子:adduser --help 这个告诉你一些常用参数:info adduesr:…
使用QT也有一段时间了,有的时候需要跟踪代码到QT的源码中去查找问题.在这里我将记录一下我跟踪QT源码学习到的一些知识. 我的开发环境是VC6.0+QT4.3.3.QT已经不为VC6.0提供addin了,所以有的时候我也会使用EclipseCDT来编写代码,因为有了QT for Eclipse的plugin写代码会方便一些. 我们在学习QT的时候,接触的第一个程序就是下面的helloworld程序: [cpp] view plaincopyprint? #include #include int…
在unix系统中,特权是基于用户和组ID的,当程序需要增加特权,或需要访问当前并不允许访问的资源时,我们需要更换自己 用户ID或组ID,使的新ID具有合适的特权或访问权限.与此类似,当程序需要降低其特权或阻止对某些资源的访问时,也需要 更换用户ID或组ID,从而使新ID不具有相应特权或访问这些资源的能力. 可以用setuid函数设置实际用户ID和有效ID,与此类似,可以使用setgid函数设置实际组ID和有效组ID. #include <unistd.h> int setuid(uid_t u…
与一个进程关联的ID有6个或更多,如下图所示: 与每个进程相关联的用户ID和组ID 实际用户ID 实际组ID 我们实际是谁 有效用户ID 有效组ID 附加组ID 用于文件访问权限检索 保存的设置用户ID 保存的设置组ID 由exec函数保存 实际用户ID和实际组ID标识我们究竟是谁,这两个字段在登录时取自口令文件中的登录项.通常,在一个登录会话间这些值并不改变,但是超级用户进程有方法改变它们. 有效用户ID,有效组ID以及附加组ID决定了我们的文件访问权限. 保存的设置的用户ID和保存的设置组I…
与一个进程相关联的ID有6个或更多,它们如表4-4所示: 表4-4 与每个进程相关联的用户ID和组ID 实际用户ID                            我们实际上是谁 实际组ID 有效用户ID                            用于文件访问权限检查 有效组ID 附加组ID 保存的设置用户ID                   由exec函数保存 保存的设置组ID 实际用户ID和实际组ID标识我们究竟是谁(执行这个程序的用户和组).这两个字段在登录时取自口…
#include<unistd.h> pid_t fork(void); 返回:在子进程中为0,在父进程中为子进程IO,若出错则为- fork最困难之处在于调用它一次,它却返回两次.它在调用进程(称为父进程)中返回一次,返回值是新派生进程(称为子进程)的进程ID号:在子进程中又返回一次,返回值为0.因此,返回值本身告知当前进程是子进程还是父进程. fork在子进程返回0而不是父进程的进程ID的原因在于:任何子进程只有一个父进程,而子进程总是可以通过getppid取得父进程的进程ID.相反,父进…
实际用户ID,有效用户ID和设置用户ID 看UNIX相关的书时经常能遇到这几个概念,但一直没有好好去理清这几个概念,以致对这几个概念一直一知半解.今天好好区分了一下这几个概念并总结如下.说白了这几个UID引出都是为了系统的权限管理. 下面分别用RUID, EUID,SUID来表示实际用户ID,有效用户ID,设置用户ID.另外用户ID是个整型数,为了说明方便真接使用了用户名来代表不同的UID.先解释一下这几个ID的作用: RUID, 用于在系统中标识一个用户是谁,当用户使用用户名和密码成功登录后一…
实际用户ID和实际组ID:标示了我们究竟是谁,这两个字段在登录时取自口令文件中的登录项 有效用户ID和有效组ID以及附属组ID:决定了我们的文件的访问权限(通常有效用户ID等于实际用户ID,有效组ID等于实际组ID) 保存的设置用户ID和保存的设置组ID:在一个程序执行时包含了有效用户ID和有效组ID的副本 针对可执行程序文件,进程通常有效用户ID等于实际用户ID,有效组ID等于实际组ID,但可以在文件模式字st_mode中设置一个特殊标志(当执行次文件时,将其进程的有效用户ID设置为文件所有者…
本篇主要介绍一下几个内容: 竞态条件(race condition) exec系函数 解释器文件    1 竞态条件(Race Condition) 竞态条件:当多个进程共同操作一个数据,并且结果依赖于各个进程的操作顺序时,就会发生竞态条件. 例如fork函数执行后,如果结果依赖于父子进程的执行顺序,则会发生竞态条件. 说到fork之后的父子进程的执行顺序,我们可以通过下面的方式指定执行顺序: 如果父进程等待子进程结束,则需要调用wait函数. 如果子进程等待父进程结束,则需要像下面这样轮询:…
  实际用户ID(real user id):用于在系统中标识一个用户是谁,当用户使用用户名和密码成功登录后一个UNIX系统后就唯一确定了他的uid:(实际用户组ID类似) 有效用户ID(effective user id):用于系统决定用户对系统资源的权限,一般情况下,进程的有效用户ID就被设成执行该进程的实际用户ID,有效用户组ID=实际用户组ID:还有一种说法是有效用户ID指的是进程执行时对文件的访问权限,应该意思都是一样的,因为进程和用户都有实际用户ID.有效用户ID.实际用户组ID.有…
用户ID的基本概念 在Unix系统中,很多操作涉及到权限问题,这些权限涉及到用户ID和组ID的概念.     组ID和用户ID的原理和相关内容是类似的.下面介绍用户ID.     我们常见见到三种关于用户ID的概念.     实际用户ID:real user ID      (RUID)     有效用户ID:effective user ID    (EUID)     设置用户ID:saved set-user ID    (SUID)     这三个ID实际上都是针对进程而言的. 实际用户…
转自 http://blog.csdn.net/todd911/article/details/16370577 在unix系统中,特权是基于用户和组ID的,当程序需要增加特权,或需要访问当前并不允许访问的资源时,我们需要更换自己用户ID或组ID,使得新ID具有合适的特权或访问权限.与此类似,当程序需要降低其特权或阻止对某些资源的访问时,也需要更换用户ID或组ID,从而使新ID不具有相应特权或访问这些资源的能力.可以用setuid函数设置实际用户ID和有效ID,与此类似,可以使用setgid函数…
目录 用户ID与权限 文件系统查看 权限ID概览 设置位 黏着位 UMASK chmod与chown 代码附录 chmod title: 用户ID与权限 date: 2019/11/25 21:20:02 toc: true --- 用户ID与权限 文件系统查看 cat /etc/group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog,reallin tty:x:5: disk:x:6: lp:x:7: mail:x:8: new…
源代码: 在网上也搜索了答案 比较详细的答案是: <?php exec("lsof -i:80",$out,$status); 结果: var_dump($out); array(0) { } echo $status;值为127 2.通过:shell_exec("id -a");查看一下用户以及用户组 <?php echo shell_exec("id -a"); 结果:uid=1002(www) gid=1002(www) gro…
用stat函数可以获取一个文件的状态信息,原型是这样的: int stat(const char *path, struct stat *buf); 其中结构体stat的结构: struct stat { dev_t st_dev; /* ID of device containing file */ ino_t st_ino; /* inode number */ mode_t st_mode; /* protection */ nlink_t st_nlink; /* number of h…
今天在看APUE,这两个问题很难理解,GOOGLE一下,有篇文章总结的不错,看了一下才明白透彻了. 由于用户在UNIX下经常会遇到 SUID.SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较关心这个问题.关于SUID. SGID的问题也经常有人提问,但回答的人一般答得不够详细,加上曾经回答过两个网友的问题,还查了一些资料,决定整理成本文,以供大家参考.限于本人的 水平问题,文章中如果有不当之处,请广大网友指正. 一.UNIX下关于文件权限的表示方法和解析 SUID 是 Set…
exec函数族 1)exec函数族说明 fork()函数用于创建一个子进程,该子进程几乎复制了父进程的全部内容,但是,这个新创建的进程如何执行呢?exec函数族就提供了一个在进程中启动另一个程序执行的方法.它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段.代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了.另外,这里的可执行文件既可以是二进制文件,也可以是Linux下任何可执行的脚本文件. 在Linux中使用exec函数族主要有两种情…
1.exec家族一共有六个函数,分别是: (1)int execl(const char *path, const char *arg, ......); (2)int execle(const char *path, const char *arg, ...... , char * const envp[]); (3)int execv(const char *path, char *const argv[]); (4)int execve(const char *filename, char…
摘自http://blog.csdn.net/guosha/article/details/2679334 实际用户ID,有效用户ID和设置用户ID 看UNIX相关的书时经常能遇到这几个概念,但一直没有好好去理清这几个概念,以致对这几个概念一直一知半解.今天好好区分了一下这几个概念并总结如下.说白了这几个UID引出都是为了系统的权限管理. 下面分别用RUID, EUID,SUID来表示实际用户ID,有效用户ID,设置用户ID.另外用户ID是个整型数,为了说明方便真接使用了用户名来代表不同的UID…