python - 如何在 python 中运行 chmod?

标签 python chmod

我当时正在使用一种名为 Rplidar 的传感器。要将 Rplidar 与我的操作系统 (Ubuntu) 连接,有时我必须在终端中使用此命令:

sudo chmod 666 /dev/ttyUSB0  

运行该指令后,ubuntu 可以检测到Rplidar。稍后,我将运行一个 python 脚本来使用 Rplidar。现在我想将这个命令包含在我的 python 脚本中,这样我就不需要在使用 Rplidar 之前在终端中运行它。有什么方法可以在 python 脚本中完成吗?

最佳答案

简单的回答就是chmod是在Python的os模块中提供的:

所以你需要做的就是运行:

import os
filename = 'example.dat'
os.chmod(filename,
    stat.S_IRUSR |
    stat.S_IWUSR |
    stat.S_IRGRP |
    stat.S_IWGRP |
    stat.S_IROTH)

因此无需掏钱即可正常执行此操作。另请查看 os.pathshutil 模块以获得该领域的更多支持。

如果您需要以提升的权限执行此操作,事情会变得有点复杂,但这实际上不是这里的解决方案。

此外,将666权限授予系统设备也不是一个好主意。当系统上的任何用户对系统设备具有读/写访问权限时,这可能会引发安全问题。原则上,使用正确操作所需的最少权限。

作为@KlausD。评论,无论如何你都不应该在这些设备节点上强制更改权限。正确的方法是执行一次性操作,将相关用户添加到系统上的 dialout 组。然后,通过在正确的组中,运行您的应用程序的用户将有权访问该设备。这已经在这里回答了:

只需运行一次:

sudo adduser kazi dialout

然后注销并重新登录使它生效。您的 Rplidar 应用程序将正常运行。

关于python - 如何在 python 中运行 chmod?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57367119/

相关文章:

python - 迭代和索引

python - 如何使用conda安装python3.9?

python - 应该使用 TestCase 还是 FunctionTestCase 在 python 中进行测试?

linux - ls 和 chmod 不适用于 nfs 挂载的文件

linux - 为 Web 文件夹分配权限的最佳做法

python - python代码的复杂性

python - 具有不同 x 数据的堆栈图

ruby - mac OS X 上 ruby​​ 中的递归 chmod?

postgresql - postgres 中的权限被拒绝

c - 如何在C中检查文件是否处于只读模式