我知道有些定义文件系统的权限(例如 www-data)。但是我不明白为什么通过将用户添加到“视频”组来成功回答了这个问题。
所以问题主要是所有预建组在 Ubuntu 中的作用是什么?更合理的是,既然有这么多,那么存在哪些“特殊”组以及应该如何或何时使用它们?
我知道有些定义文件系统的权限(例如 www-data)。但是我不明白为什么通过将用户添加到“视频”组来成功回答了这个问题。
所以问题主要是所有预建组在 Ubuntu 中的作用是什么?更合理的是,既然有这么多,那么存在哪些“特殊”组以及应该如何或何时使用它们?
某些组允许访问文件或目录,例如:
www-data
允许访问 Web 文件或adm
组读取/var/log
. 这是微不足道的用途。但是有些组允许访问某些设备。例如,该
dialout
组允许通过以下文件访问串行端口/dev
:因此,如果您是该
dialout
组的成员,您可以通过读取和写入设备文件来使用串行端口:echo "Hello world" > /dev/ttyS0
. 该video
组允许访问视频硬件。有关每个组的描述,请阅读文件:
/usr/share/doc/base-passwd/users-and-groups.html
编辑关于第一条评论:
事实上,从用户的角度来看,通常您不必在这些组中“访问”硬件资源。通常的做法是让守护程序/服务器管理它,成为最严格组的成员,然后允许您访问守护程序/服务器。
对于您的情况,成为该
video
组的成员允许直接访问图形硬件,而不是通过 X 服务器。通常在台式机/笔记本电脑上,可以直接访问图形硬件 (glxinfo | grep "direct rendering"
)。旁注,如果您有直接渲染但您不是该
video
组的成员 ( ),则文件 ( )id | grep --color video
的 acl 允许您进行硬件访问。/dev
find /dev/ -group video -exec getfacl {} \; | grep $USERNAME
一般来说,组分离的概念与此有关:
http://en.wikipedia.org/wiki/Principle_of_least_privilege
拥有所有这些组似乎很愚蠢,直到您意识到替代方案将是一个通用的高权限级别(例如 sudo/root),这将是一场安全噩梦。
您的帖子中显示的大多数组都存在,因此操作系统的各个部分可以以最少的权限访问常用功能。用户不必为此担心太多。在某些管理任务期间,您可能需要提升您的权限才能访问某些功能,这通常使用 sudo 来完成短期任务,并将您自己添加到特定组以执行重复性任务。