“用户和群组”中的群组起什么作用?

“用户和群组”中的群组起什么作用?

我知道有些文件系统定义了权限(例如 www-data)。但我不明白为什么该问题已成功回答通过将用户添加到“视频”组。

因此,问题主要是 Ubuntu 中所有预建的组有什么用?更合理的是,既然有这么多,那么存在哪些“特殊”组以及如何或何时使用它们?

在此处输入图片描述

答案1

有些组允许访问文件或目录,例如:允许www-data访问网页文件的组或adm读取文件的组/var/log。这是微不足道的用途。

但有些组允许访问某些设备。例如,该dialout组允许通过以下文件访问串行端口/dev

$ find /dev -group dialout -exec ls -ld {} \;
crw-rw---- 1 root dialout 4, 64 Jan 19 12:51 /dev/ttyS0
crw-rw---- 1 root dialout 4, 67 Jan 19 12:51 /dev/ttyS3
crw-rw---- 1 root dialout 4, 66 Jan 19 12:51 /dev/ttyS2
crw-rw---- 1 root dialout 4, 65 Jan 19 12:51 /dev/ttyS1

因此,如果您是该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),则您可以通过/dev文件的 acl 访问硬件(find /dev/ -group video -exec getfacl {} \; | grep $USERNAME)。

答案2

一般来说,群体分离的概念与此相关:

http://en.wikipedia.org/wiki/Principle_of_least_privilege

拥有所有这些组似乎很愚蠢,直到你意识到替代方案将是一个单一的通用高权限级别(例如 sudo/root),这将是一个安全噩梦。

您帖子中显示的大多数组都存在,因此操作系统的各个部分都可以以最少的权限访问常用功能。用户不必太担心这一点。在执行某些管理任务期间,您可能需要提升您的权限才能访问某些功能,这通常是使用 sudo 来完成的,用于执行一次性的短任务,并将自己添加到特定组来完成重复性任务。

相关内容