开云怎么用 - 开云(中国)

3年前 (2023-03-26)

有两种情况

  1. 您想在执行setuid程序时暂时放弃root特权
  2. 您想在执行setuid程序时永久放弃root特权…
  • 您可以通过将euid设置为实际用户ID然后将uid更改为所需的任何内容来临时执行此操作。稍后,当您需要root特权时,可以将setuid设置为root,有效的userid将更改回root。这是因为保存的用户标识未更改。
  • 您可以通过立即将uid更改为较少特权的用户ID来永久放弃特权。此后,无论如何您都无法获取root特权。

1.seteuid(600);
2.setuid(1000);
3.setuid(0);

在这种情况下,可以再次获得root特权。

 +----+------+------------+
 | uid|euid |saved-uid |
 |----|------|------------|
 1.|1000| 0 | 0 |
 2.|1000| 600 | 0 |
 3.|1000| 1000 | 0 |
 4.|1000| 0 | 0 |
 | | | |
 +------------------------+

1.setuid(1000);
2.setuid(0);



 +----+------+------------+
 | uid|euid |saved-uid |
 |----|------|------------|
 1.|1000|0 | 0 |
 2.|1000|1000 | 1000 |
 | | | |
 +------------------------+

在这种情况下,您无法取回root特权。 同题参见可以通过以下命令进行验证,

cat / proc / PROCID / task / PROCID /状态| 减 对照阅读

Uid: 1000 0 0 0
Gid: 1000 0 0 0

此命令将显示一个Uid和Gid,它将具有4个字段(前三个字段是我们关注的字段)。 延伸阅读像上面的东西

这三个字段代表uid,euid和saveed-user-id。您可以在setuid程序中引入一个暂停(来自用户的输入),并检查cat /proc/PROCID/task/PROCID/status | less命令的每个步骤。在每个步骤中。您都可以检查保存的uid是否如前所述进行更改。

解决方法

这是一个set-root-uid程序

$ls -l
-rwsr-sr-x 1 root root 7406 2011-12-13 22:37 ./x*
源代码:
int main(void) {
 printf(
 " UID GID \n"
 "Real %d Real %d \n"
 "Effective %d Effective %d \n",getuid (),getgid (),geteuid(),getegid()
 );

seteuid(600);
 printf(
 " UID GID \n"
 "Real %d Real %d \n"
 "Effective %d Effective %d \n",getegid()
 );

setuid(1000);

 printf(
 " UID GID \n"
 "Real %d Real %d \n"
 "Effective %d Effective %d \n",getegid()
 );

setuid(0); // HOW DOES THIS SUCCEED IN SETTING THE EUID BACK TO 0
 printf(
 " UID GID \n"
 "Real %d Real %d \n"
 "Effective %d Effective %d \n",getegid()
 );

 return 0 ; 
}
输出值
 UID GID 
Real 1000 Real 1000 
Effective 0 Effective 0 
 UID GID 
Real 1000 Real 1000 
Effective 600 Effective 0 
 UID GID 
Real 1000 Real 1000 
Effective 1000 Effective 1000 
 UID GID 
Real 1000 Real 1000 
Effective 0 Effective 1000
我的问题

手册页指出setuid将更改实际,保存和有效的uid。因此,在通话后setuid(1000),所有三个都更改为1000。那setuid(0)让我如何更改euid0

你可能想看:

标签:root

继续阅读

若需了解「开云怎么用」的上下文,可结合站内栏目与相关篇目交叉阅读。

栏目用于追新,文内链接用于对照细节。两者配合可减少漏读与重复检索。

继续浏览时优先选择同栏目或相近主题,避免被站外镜像带偏。

频道列表

wiki · 科技 · 文化 · 主页

页面按栏目组织。可先看导读,再进入相关篇目或返回列表。