当前位置: 技术问答>linux和unix
请问如何提升apache用户到root里执行程序
来源: 互联网 发布时间:2016-01-09
本文导语: 因为不太懂javascript,用网页点击执行程序时,用shell做了一个CGI程序,但apache用户似乎用普通方法加不进root组里,请问该怎么操作啊? | 可以给CGI增加的UID权限 转: UNIX文件的SUID/SGID ...
因为不太懂javascript,用网页点击执行程序时,用shell做了一个CGI程序,但apache用户似乎用普通方法加不进root组里,请问该怎么操作啊?
|
可以给CGI增加的UID权限
转:
UNIX文件的SUID/SGID
一、 SUID/SGID概述
有时,没有被授权的用户需要完成某项任务。一个例子是passwd程序,它允许用户改变口令,这就要求改变/etc/passwd文件的口令域。然而系统管理员决不允许普通用户拥有直接改变这个文件的权利,因为这绝对不是一个好主意。
为了解决这个问题,SUID/SGID便应运而生。UNIX允许程序被授权,当程序被执行的时候,拥有超级用户的权限,完成时又回到普通用户的权限。这个主意很好,所以AT&T对它申请了专利。
二、 UNIX下的一些名词简介
1.文件权限。确定用户读取、修改或执行文件的权力。
r -- 读访问
w -- 写访问
x -- 执行许可
s -- SUID/SGID
t -- sticky位
2.进程。进程是程序运行一次的过程,以完成预定的任务,它不同于程序。每个进程都有一个唯一的进程ID。此外,每个进程还有一些其他标识符:实际用户ID、实际组ID、有效用户ID、有效组ID。超级用户进程的实际用户ID和有效用户ID为0。
3.超级用户root。超级用户拥有系统的完全控制权。
三、 SUID/SGID的思路
SUID的程序在运行时,将有效用户ID改变为该程序的所有者ID,使得进程在很大程度上拥有了该程序的所有者的特权。如果被设置为SUID root,那么这个进程将拥有超级用户的特权(当然,一些较新版本的UNIX系统加强了这一方面的安全检测,一定程度上降低了安全隐患)。当进程结束时,又恢复为原来的状态。
执行时的Real Uid可以通过函数setuid()改变
转:
UNIX文件的SUID/SGID
一、 SUID/SGID概述
有时,没有被授权的用户需要完成某项任务。一个例子是passwd程序,它允许用户改变口令,这就要求改变/etc/passwd文件的口令域。然而系统管理员决不允许普通用户拥有直接改变这个文件的权利,因为这绝对不是一个好主意。
为了解决这个问题,SUID/SGID便应运而生。UNIX允许程序被授权,当程序被执行的时候,拥有超级用户的权限,完成时又回到普通用户的权限。这个主意很好,所以AT&T对它申请了专利。
二、 UNIX下的一些名词简介
1.文件权限。确定用户读取、修改或执行文件的权力。
r -- 读访问
w -- 写访问
x -- 执行许可
s -- SUID/SGID
t -- sticky位
2.进程。进程是程序运行一次的过程,以完成预定的任务,它不同于程序。每个进程都有一个唯一的进程ID。此外,每个进程还有一些其他标识符:实际用户ID、实际组ID、有效用户ID、有效组ID。超级用户进程的实际用户ID和有效用户ID为0。
3.超级用户root。超级用户拥有系统的完全控制权。
三、 SUID/SGID的思路
SUID的程序在运行时,将有效用户ID改变为该程序的所有者ID,使得进程在很大程度上拥有了该程序的所有者的特权。如果被设置为SUID root,那么这个进程将拥有超级用户的特权(当然,一些较新版本的UNIX系统加强了这一方面的安全检测,一定程度上降低了安全隐患)。当进程结束时,又恢复为原来的状态。
执行时的Real Uid可以通过函数setuid()改变