mesg 的 chmod 等价物是什么

mesg 的 chmod 等价物是什么

andchmod的等价词是什么?mesg ymesg n

答案1

注:作为JdeBP在评论中指出mesg,重现with的行为并非易事chmod

POSIX 规范中的基本原理部分mesg

更改的终端mesg是与标准输入、输出或错误关联的终端,而不是会话的控制终端。这是因为多次登录的用户应该能够更改其任何登录终端,而不必停止在这些会话中运行的作业。这不是涉及其他用户终端的安全问题,因为需要适当的权限才能影响其他用户的终端。

依次检查前三个文件描述符直到找到终端的方法是从 System V 开始采用的。

天真的方法mesg是在使用时查看 shell 的控制终端(当前交互式 shell 的标准输入所附加的设备)上的权限变化。

shell 的控制终端由命令返回tty。要弄清楚设备上的权限正在做什么,我们可以使用mesg n它并查看发生了什么变化:mesg yls -l

$ ls -l "$(tty)"
crw--w----  1 myself  tty    5,   1 May  6 00:21 /dev/ttyp1

$ mesg n
$ ls -l "$(tty)"
crw-------  1 myself  tty    5,   1 May  6 00:21 /dev/ttyp1

$ mesg y
$ ls -l "$(tty)"
crw--w----  1 myself  tty    5,   1 May  6 00:21 /dev/ttyp1

因此,看起来像是mesg n删除了设备的组写入权限(rw--w----更改为rw-------)并mesg y再次添加组写入权限。

chmod就我而言,相当于

$ chmod g-w "$(tty)"     # for "mesg n"
$ chmod g+w "$(tty)"     # for "mesg y"

根据您的 Unix 风味适当添加盐和胡椒。

但请注意,如果 shell 的标准输入不是终端,tty则会返回字符串not a tty并且chmod会失败。在这种情况下,mesg将继续尝试使用终端设备获取 shell 的标准输出,然后使用标准错误(按该顺序)。这就是为什么上面是一个幼稚的方法。

相关内容