c - 共享对象上的 setuid 位
问题描述
我知道要加载 .so,必须设置 e'x'ecute 位。但是,我想知道 +s (setuid) 位对 .so 有什么影响?如果主程序没有设置“setuid”,但它加载的.so是setuid,它会改变uid吗?我发现没有,但很乐意得到一些解释。
$ cat a.c
# include <stdio.h>
extern void func();
void main()
{
func();
}
$ cat b.c
# include <stdio.h>
# include <unistd.h>
void func()
{
printf("UID %d",geteuid());
}
gcc --shared -o libb.so ./b.c
sudo chown root: libb.so ; sudo chmod +s ./libb.so
gcc a.c -L. -Wl,-R. -lb
这并没有什么不同(好像 .so 中的 setuid 被忽略了)。
解决方案
推荐阅读
- apache-kafka - LogCompaction and consumer in Kafka
- r - Create sequence of values based on multiple column values in R
- node.js - How do I get my async function to return values not a promise?
- makefile - ocamlbuild: Nothing to be done for `all'
- botframework - 是否可以在自适应卡上实现简单的计数器?就像每次单击提交按钮时,文本块中的值都会增加
- solr - SOLR 索引任意数据
- google-cloud-platform - 如何从命令行设置/获取 json 格式的气流变量
- java - resource android:attr/fontVariationSettings not found. and android:attr/ttcIndex not found. error out of no where
- c++ - 如何连接字符?
- http - 将参数绑定到时间维度参数 InfluxDB