相关疑难解决方法(0)

解决这个 glibc 问题的最佳方法是什么?

我管理一个 Gentoo Hardened box,它使用文件功能来消除对 setuid-root 二进制文件的大部分需求(例如,/bin/ping有 CAP_NET_RAW 等)。

事实上,我剩下的唯一二进制文件就是这个:

abraxas ~ # find / -xdev -type f -perm -u=s
/usr/lib64/misc/glibc/pt_chown
abraxas ~ # 
Run Code Online (Sandbox Code Playgroud)

如果我删除了 setuid 位,或者重新挂载我的根文件系统nosuid,sshd 和 GNU Screen 将停止工作,因为它们调用grantpt(3)了它们的主伪终端,而 glibc 显然会执行这个程序来 chown 和 chmod 下的从伪终端/dev/pts/,而 GNU Screen 关心这个函数的时间失败。

问题是,手册页grantpt(3)明确指出,在 Linux 下,devpts挂载文件系统后,不需要此类帮助程序二进制文件;内核会自动将slave的UID & GID设置为打开的进程的真实UID & GID /dev/ptmx(通过调用getpt(3))。

我编写了一个小示例程序来演示这一点:

#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
int main(void)
{
    int master; …
Run Code Online (Sandbox Code Playgroud)

security setuid glibc linux-kernel

26
推荐指数
1
解决办法
1151
查看次数

安装后如何修复/dev/pts?

我犯了与这个问题相同的错误:Debian chrootblocking PTTYs on host

我在 chroot 中安装了“devpts”文件系统,现在 urxvt 无法创建 ptys。奇怪的是 xterm 仍然可以。重新挂载 /dev/pts 并不能解决问题。

我该怎么做才能让我的系统再次正常工作而无需重新启动?

linux mount pty

7
推荐指数
1
解决办法
6220
查看次数

ptmx 和 pts 文档

我想将 linux 终端流式传输到我自己的程序,据我所知,这是通过打开 /dev/ptmx 来启动一个新的 pts 来完成的,我已经测试过了,这确实有效(它在/dev/pts)。但我不确定我应该如何实际读写这个终端。直接写入 /dev/pts/(pts number) 我只是得到一个输入/输出错误。另外,我是否应该使用相同的程序同时打开 /dev/ptmx 和 /dev/pts/(pts number) 。我应该先以某种方式打开一个外壳吗?

我发现这些东西有点令人困惑,除了这个手册页http://man7.org/linux/man-pages/man4/pts.4.html之外,我找不到太多信息

linux pts pseudoterminal

1
推荐指数
1
解决办法
1201
查看次数

标签 统计

linux ×2

glibc ×1

linux-kernel ×1

mount ×1

pseudoterminal ×1

pts ×1

pty ×1

security ×1

setuid ×1