LinuxLinux学习之路

APUE读书笔记-19伪终端(12)

2020-10-09  本文已影响0人  QuietHeart

6、使用pty程序

我们现在,通过命令行选项,来看看使用pty程序的各种不同的例子。

如果我们的shell是Korn shell,我们可以执行:

pty ksh

启动一个新的shell,这个shell运行在伪终端之下。

如果文件ttyname就是我们在18章的那个程序,我们可以如下运行pty程序:

$who
sar  :0      Oct  5 18:07
sar  pts/0   Oct  5 18:07
sar  pts/1   Oct  5 18:07
sar  pts/2   Oct  5 18:07
sar  pts/3   Oct  5 18:07
sar  pts/4   Oct  5 18:07        pts/4 is the highest PTY currently in use
$ pty ttyname                    run program in Figure 18.16 from PTY
fd 0: /dev/pts/5                 pts/5 is the next available PTY
fd 1: /dev/pts/5
fd 2: /dev/pts/5

(1)utmp文件

在第6章,我们叙述了utmp文件,这个文件记录了所有当前登陆到一个UNIX系统上面的用户。

问题是,一个在伪终端上面运行程序的用户,是否被当做登陆的用户?

在远程登陆中,telnetd和rlogind,显然会为在伪终端上面登陆的用户创建一个utmp文件中的条目。然而,如果用户从窗口系统或者某个程序(例如script)中运行shell于伪终端上,是否应当在utmp文件中有对应的条目,却有许多争议。有些系统会记录这些,有些却不会。如果一个系统没有在utmp文件中记录这些,那么who程序就通常不会显示相应的、被使用的伪终端。

如果utmp文件没有将other用户的写权限打开(这通常被认为是一种安全漏洞),那么任意使用伪终端的应用程序并不能写这个文件。

上一篇下一篇

猜你喜欢

热点阅读