小编fol*_*bis的帖子

一致的 Linux 设备枚举

在我们的 Linux 机器中,我们有 USB -> 串行设备,它始终标识为 /dev/ttyACM0. 所以我写了一个应用程序,直到昨天,一切正常。但是突然(是的,在远程演示期间......)设备停止工作。经过快速研究,我发现连接更改为/dev/ttyACM1. 这有点不合时宜,但现在我遇到了一个问题 - 如何明确识别我的设备?例如,尽管 UUID/dev/sd**已更改,但可以使用 UUID 初始化存储驱动器。有没有办法为串行设备做到这一点?

现在我使用了一个愚蠢的解决方法:

for(int i = 0; i < 10; i ++)
{
    m_port = std::string("/dev/ttyACM") + (char)('0' + i);
    m_fd = open(m_port.c_str(), O_RDWR | O_NOCTTY | O_NDELAY);
}
Run Code Online (Sandbox Code Playgroud)

我们使用的设备的链接。

linux usb-device

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

非 root 用户的 Unix 域套接字

我正在开发使用 Unix 域套接字进行 IPC 的应用程序。据我所知,常见的方法是将套接字文件放入其中/var/run。我使用 Ubuntu 18.04,我看到这var/run是一个/run. 不幸的是,该文件夹只能访问root:

  ls -Al /
  drwxr-xr-x  27 root root        800 Apr 12 17:39 run
Run Code Online (Sandbox Code Playgroud)

因此,只有 root 拥有该文件夹的写入权限,这使得普通用户无法使用 Unix 域套接字。

首先我不明白为什么?以及如何为非 root 用户使用 Unix 域套接字?我当然可以使用主文件夹,但我更喜欢使用一些正确且常用的方法。

ubuntu permissions unix-sockets

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

禁止在主目录中执行

有没有办法在 Linux 中禁止从主目录执行文件?我的目标是保护我的系统免受恶意脚本等的侵害。当然,我可以使用 chmod for/home/user及其所有子目录删除执行位,但由于user是/home/user. 因此,我认为有关从启用执行bin,/usr/bin,usr/sbin只是并禁止从其他目录执行。我的系统是 Debian 8。

bash shell-script

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