如果我们从根用户123设置euid(123),它将失败。无论如何要跑操作系统openpty()直接作为用户123,它将成功。有什么提示吗?在
在python2.7或3.6中都是相同的。在Redhat 7上:
>>> os.openpty()
(3, 4)
>>> os.seteuid(12345)
>>> os.openpty()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
PermissionError: [Errno 1] Operation not permitted
从
strace
输出(最好是使用C版本):由于
geteuid()
不再是根,所以不可能将TTY更改为getuid()
所有。在您的选择是:
openpty
调用之前立即重置EUID,chown
自己设置,然后在之后再次更改EUIDopenpty
。。。在Linux上,它非常简单(您不需要可怕的BSD回退)。。。你需要多便携?在相关问题 更多 >
编程相关推荐