/tmp 中 udev 脚本的文件权限

/tmp 中 udev 脚本的文件权限

我一直在测试插入USB时的udev规则。

我想我的问题可能与这篇文章有关:无法使用 udev 规则运行脚本

我有以下 udev 规则,它成功触发并运行脚本:

ACTION=="add", SUBSYSTEM=="block", DRIVERS=="usb", ATTRS{idProduct}=="3244", ATTRS{idVendor}=="hghh", ATTR{size}=="7685844", RUN="/home/user/trigger"

脚本本身:

#!/bin/bash
date >> /home/user/udev_test.log
date >> /tmp/udev_test.log

手动触发时,脚本会写入这两个文件(具有用户权限)。当 触发时udev,只有用户目录中的文件获取日期。

/tmp/udev_test.log我也可以通过类似的方式直接写信echo "blah" >> /tmp/udev_test.log

我尝试使用存档的 644、664 和 777 /tmp/udev_test.log,但没有任何效果。

为什么我可以用用户权限手动写入,但是udev即使权限设置为777也不起作用?

答案1

/tmp目录有一种特殊模式,称为粘滞位模式。只有文件所有者的用户才能写入该文件。根据我的教程:

3.4.2.5。特殊模式

为了使系统管理员不必一直烦恼解决权限问题,可以为整个目录或单独的程序授予特殊访问权限。共有三种特殊模式:

粘滞位模式:作业执行后,命令保存在系统内存中。最初,这是一个经常用于节省内存的功能:大型作业仅加载到内存中一次。但如今内存很便宜,并且有更好的技术来管理它,因此它不再因其对单个文件的优化功能而被使用。然而,当应用于整个目录时,粘滞位具有不同的含义。在这种情况下,只有当用户是文件的用户所有者或文件具有适当的权限时,才能更改此目录中的文件。此功能用于诸如 之类的目录/var/tmp,这些目录必须可供所有人访问,但不适合用户更改或删除彼此的数据。粘滞位由t文件权限字段末尾的 表示:

mark:~> ls -ld /var/tmp 
drwxrwxrwt 19 root root 8192 Jan 16 10:37 /var/tmp/

        ︙

这有帮助吗?

相关内容