我正在设置一个 Linux 应用程序,该应用程序与旨在与串行端口通信的程序交互。奇怪的是,如果我是所有者用户 ( klipper
),我可以通过符号链接访问 pty,但如果我不是所有者用户,我就不能访问 pty,即使其他用户 ( octoprint
) 属于 pty 的所有者组。
对于上下文,符号链接是 at /tmp/printer
,pty 是 at /dev/pts/1
。 SELinux 未安装,安装选项为tmpfs on /tmp type tmpfs (rw,nosuid,nodev)
$ ls -l /tmp/printer
lrwxrwxrwx 1 klipper klipper 10 Oct 19 21:30 /tmp/printer -> /dev/pts/1
$ ls -l /dev/pts/1
crw-rw---- 1 klipper tty 136, 1 Oct 19 22:41 /dev/pts/1
$ groups klipper
network tty uucp klipper
$ sudo -u octoprint picocom /tmp/printer
<...>
FATAL: cannot open /tmp/printer: Permission denied
$ sudo -u octoprint picocom /dev/pts/1
<...>
Terminal ready
答案1
我相信这是由于通常设置在 上的粘性位造成的/tmp
。如果您查看 的权限/tmp
,您会发现最后一位是t
这意味着访问 内部的符号链接/tmp
仅限于它的所有者。您的解决方案可能是在另一个位置创建符号链接。