这些小组在“用户和群组”中做了什么?
我知道有些人定义了文件系统的权限(例如www-data)。 但我不明白为什么通过将用户添加到“video”组来成功回答此问题 。
那么问题主要是所有预建组在Ubuntu中做了什么? 更合理的是,由于存在这么多,存在哪些“特殊”群体以及应该如何或何时使用它们?
某些组允许访问文件或目录,例如: www-data
允许访问Web文件或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
组允许访问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
)。
一般来说,群体分离的概念与此有关:
http://en.wikipedia.org/wiki/Principle_of_least_privilege
在您意识到替代方案将是单一的高级特权级别(例如sudo / root)之前,拥有所有这些组似乎很愚蠢,这将是一场安全噩梦。
您post中显示的大多数组都存在,以便操作系统的各个部分可以使用最少的权限访问常用function。 用户不必太担心这个问题。 在某些管理任务中,您可能需要提升您的权限以访问某些function,这通常使用sudo进行短时间一次性任务,并将自己添加到特定组以执行重复性任务。